2011年8月13日土曜日

[WCF]で簡単なService呼出方法

//これで呼び出せる!!


ServiceReference1.Service1Client px = new ServiceReference1.Service1Client();

this.Text = px.GetData(987);

DataSet ds = px.GetDataB(new ServiceReference1.OdbcParameter());
 
 
[サービス内にGetData関数とGetDataB関数を作成]
[OperationContract]

string GetData(int value);
[OperationContract]
DataSet.SpringJoeDataSet GetDataB(System.Data.Odbc.OdbcParameter prm);

public DataSet.SpringJoeDataSet GetDataB(System.Data.Odbc.OdbcParameter prm)

{
//アダプタは拡張しておきます(partial)
WcfService.DataSet.SpringJoeDataSetTableAdapters.SCV_HACCHU_KTableAdapter adpt = new WcfService.DataSet.SpringJoeDataSetTableAdapters.SCV_HACCHU_KTableAdapter();
WcfService.DataSet.SpringJoeDataSet dtset = new WcfService.DataSet.SpringJoeDataSet();
adpt.GetMyData(dtset, prm);
return dtset;
}
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}


DataAdapterを拡張したい

DataAdapterを拡張する場合は、
DataSet内に自動生成されるAdapterをpartialで拡張します。

オリジナルのnamespaceにして、
クラス名も必ず同じにします。

namespace WcfService.DataSet.SpringJoeDataSetTableAdapters


{

public partial class SCV_HACCHU_KTableAdapter

{

public SpringJoeDataSet GetMyData(SpringJoeDataSet dtset, System.Data.Odbc.OdbcParameter prm)

{

dtset.Clear();

this.Connection.Open();

this.Adapter.SelectCommand = new System.Data.Odbc.OdbcCommand();

this.Adapter.SelectCommand.Connection = this.Connection;

this.Adapter.SelectCommand.CommandText = strSQL;

prm = new System.Data.Odbc.OdbcParameter(":A_ID", "9");

this.Adapter.SelectCommand.Parameters.Add(prm);

this.Adapter.Fill(dtset);

return dtset;

}



public string strSQL =

"SELECT \"A_ID\", \"A_NAME\", \"A_TEL\", \"A_FAX\", \"A_MEMO\", \"A_UPTIME\", \"A_RGTIME\", \"A_F" +

"LAG\" FROM \"SPRINGJOE2\".\"SCV_HACCHU_K\" WHERE A_ID <> :A_ID";

}

}

列 'A_ID' は一意であるように制約されています。値 '1' は既に存在します。

では、テーブルに主キーを追加してみます。
ALTER TABLE "SPRINGJOE2"."SCV_HACCHU_K" ADD


PRIMARY KEY (A_ID);
 
ついでに
DataSet側も主キーに変更します。。
UniqueプロパティをTrueに変更すると
上記のようなエラーを発生させられます。

文字列は有効な DateTime ではありませんでした。列 A_UPTIME にを格納できませんでした。 必要な型は DateTime です。

A_UPTIME列が日付の場合のエラー
dRow["A_UPTIME"] = "1";
日付に1を入れようとしているので発生

dRow["A_UPTIME"] = DateTime.Now;

2011年8月5日金曜日

[Visual Studio]からlocal(ローカル)IISにClickOnce

[Visual Studio]からlocal(ローカル)IISにClickOnce





コンポーネント

┗アプリケーションの追加削除

┗Windowsの機能の有効化または無効化

┗Windowsの機能画面



に移動します。

次に

InternertInformationService(IIS)をクリック

┗IISメタベース及びIIS構成 互換 ※

┗World Wide Webサービス

┗アプリケーションの追加 ※

┗セキュリティ

┗Windows 認証 ※





上記の3つのコンポーネントを有効にします。



「しばらくお待ちください。機能を構成しています。この処理には数分かかることがあります。」

というメッセージボックスの画面が表示されて、処理が終了するまでしばし待ちます。

(かなり時間がかかります)









[IISからWEB画面を確認]

コントロール パネル

┗管理ツール

  ┗インターネット インフォメーション サービス (IIS) マネージャ



WEBサイトの追加

機能ビューでディレクトリの参照で有効化