私は、MS SQL Server データベース用の単純なユーザークライアント (フロントエンド) に取り組んでいます。
データベース自体は非常に単純で、外部キーのない 8 つのテーブルがあります。
これまでのところ、データベースに接続し、すべてのテーブルとデータをデータセットにロードすることができました。複数の SQL ステートメント (テーブルごとに 1 つ) を持つ単一の文字列を使用してこれを行っています。
_dbconstrb = new SqlConnectionStringBuilder();
_dbconstrb.DataSource = ".\local";
_dbconstrb.InitialCatalog = "mydatabase";
string sql_str = "SELECT * FROM tbl1; SELECT * FROM tbl2; ..."
_dbda = new SqlDataAdapter(sql_str, _sqlcon);
_dbds = new DataSet();
_dbda.Fill(_dbds);
データセットは にバインドされ、bindingsource
これは のデータソースとして設定されますDataGridView
。私はComboBox
、ユーザーが 8 つのデータベース テーブルのいずれかを選択できる単純な を使用しています。ユーザーがコンボボックスに変更を加えるたびに、バインディングソースのデータメンバーがコンボボックスから選択されたテーブルに設定されます。これまでのところ、完璧に機能します。ここで、ユーザーは gridview データに変更を加えます (レコードの追加、削除、または変更)。SQLCommandBulider を使用してデータベースを更新したいのですが、これを試しました:
SqlCommandBuilder cmb = new SqlCommandBuilder(_dbda);
int updated = _dbda.Update(_dbds);
ただし、これは最初のテーブル (sql-string で最初に来るテーブル、この場合は tbl1) のデータに対してのみ機能します。フォローされているすべてのテーブルが DataAdapter によって認識されていないようです。これを実現するには、本当に 8 つの DataAdapter (テーブルごとに 1 つ) を使用する必要がありますか?
解決策: 最後に、8 を追加してこれを管理しましたDataApter
。ただし、Entity Framework
この種のデータ処理には非常に有望に見えます。その点に再び感謝します。