ああああさkjyせ¥」SQLServerは他のサーバーに構築してある
192.1680.10

接続確認をしておく



VisualStudio C# フォームアプリで作成する


DataViewとコマンドボタンを付ける








なんとなく、体裁を整える

プロジェクトに、データセットを作成する






サーバー名 は、IPアドレス\インスタンス名まで含めて指定

今は動作確認なので、パスワードを設定ファイルでメンテしやすいようにする
ipアドレスから、勝手にHost名に置き換わっているのが気になる。


データセット名の初期値は test_dbDataSet

できているみたいなので、データがのぞけるか?確認してみる


データが参照できれば、OK
接続文字列がどこで連携されているか、確認する。



表示されないときは、一度、ビルドを試すべし

クリックすると、設定フォームに飛ぶ

ソース的には
WindowsFormsApp1\WindowsFormsApp1\App.config
に格納されている
実行モジュール的には
bin\Debug\WindowsFormsApp1.exe.config
に格納されている
コマンドボタンクリックで、データを取得してみる
test_dbDataSetTableAdapters.table1TableAdapter adpter = new test_dbDataSetTableAdapters.table1TableAdapter();
test_dbDataSet.table1DataTable dt = adpter.GetData();
string s1;
string s2;
string s3;
for (int i = 0; i < dt.Count; i++)
{
s1 = dt[i].data1;
s2 = dt[i].data2;
s3 = dt[i].data3;
}
foreach (test_dbDataSet.table1Row dr in dt)
{
s1 = dr.data1;
s2 = dr.data2;
s3 = dr.data3;
}
項目名を、そのまま記載できるので、パンチミスもなくて、良いのだが、
DBNull値の場合は、キャストエラーを起こす。
test_dbDataSet.table1DataTable の中で
項目単位のアクセサが生成されており、文字列型の場合はString型に強制キャストしているからだ
数値もint?型で扱えるように、共通的な変換関数を利用する前提で、以下の方法で考えたが、
DataRow型にした関係で、項目名を文字列変数指定しているのが、苦しい。
foreach (DataRow dr in dt)
{
s1 = conv<string>(dr["data1"]);
s2 = conv<string>(dr["data2"]);
s3 = conv<string>(dr["data3"]);
}
private T conv<T>(object obj)
{
if (obj == DBNull.Value || obj == null)
{
return default;
}
else
{
return (T)obj;
}
}