C#でのSQL接続の記事が古すぎる!
まだひよっこエンジニアの自分はUdemyやら会社の先輩やらで聞いてなんとかなったけど、ネットの記事が古くて参考にならなかったので自分で作成することにしました。
特にやり方3はどこにも載っていなかったので、必見です。
結構テンプレのコードが続くので、このコードを丸ごと覚えるのでなく流れを覚えてください。
VisualStudio2019でやった。
やり方1 (SqlConnectionの使用)
この接続文字列を使うやり方が一番オーソドックスですね
vbaマクロでもsqlサーバーに繋がられるそう
var builder = new SqlConnectionStringBuilder();
builder.DataSource = "サーバー名";
builder.InitialCatalog = "データベース名";
builder.IntegratedSecurity = true;
_connectionString = builder.ToString();
c#側で操作するのはdataGridViewの設定のみです。
下の関数で返り値をdataTableにし、dataGridViewのソースに繋げたらSqlの結果が画面に表示されます。
public static DataTable GetDataTable()
{
var sql = @"select * from テーブル名";
DataTable dt = new DataTable();
using (var connection = new SqlConnection(_connectionString)
using (var adapter = new SqlDataAdapter(sql, connection))
{
connection.Open();
adapter.Fill(dt);
}
return dt;
}
やり方2 (データソースの選択)
DataSetファイルを追加する。TableAdapterの使用
TableAdapter構成ウィザードが表示されるので、クエリビルダーまで進めてください。
ここで表示したいデータテーブルの選択をする。ここでクエリービルダーをするとsql文の結果を返す。
データテーブルがデータセット内に作られたらOK
ここからはDataGridView側の設定にうつる。データソースの選択でさっき入れたデータテーブルを選ぶ。
やり方3 (TableAdapterを使う)
データテーブルを作るまではやり方2の手順の通りで、TableAdapterインスタンスを生成する。ここではdgvMoneyと名付けたdataGridViewにテーブルを渡している。
using mta = プロジェクト名.MoneyDataSetTableAdapters;
public void update_table()
{
mta.moneyDataTableTableAdapter adp = new mta.moneyDataTableTableAdapter();
MoneyDataSet.moneyDataTableDataTable dt = new MoneyDataSet.moneyDataTableDataTable();
adp.Fill(dt);
this.dgvMoney.DataSource = dt;
}
さらにQueriesTableAdapterを使うと表示以外の削除(delete文)・挿入(insert文)・更新(update文)を導入できる。やり方2のTableAdapter,DataTableの並びにクエリがあるのでそれを選ぶ。
クエリ名を指定したら下のようなQueriesTableAdapterが作られる。
ここではたくさんあるけど、DeleteQueryを呼び出したい場合は下のように書く。
private void DeleteData()
{
mta.QueriesTableAdapter qadp = new mta.QueriesTableAdapter();
int nowRow = dgvMoney.CurrentRow.Index;
int ID = int.Parse(dgvMoney.Rows[nowRow].Cells[0].Value.ToString());
qadp.DeleteQuery(ID);
update_table();
}
dataGridViewに表示したい時はDataTableAdapterでいけるが、複雑なsql文を実行したい時はQueriesTableAdapterを使おう