テーブルを表示する DataGrigView を持つ winform アプリケーションを作成しています。DB の操作を担当する DAL クラスがあります。
テーブルのデータをロードするメソッドが 1 つあります。
public static void GetItemsByOrder(int orderId, ref DataSet dataSet)
{
string queryString = @"Select Id,OrderId as [מס' הזמנה],ItemCode as[מק""ט], ItemName as [שם פריט], ReceiptDate as [ת. הספקה],
WarrantyExpDate as [באחריות עד],SuppliersItemCode as [מק""ט ספק], Supplier as [ספק], Count as[כמות], Active
FROM OrdersManager_Items where OrderId = @param";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@param", orderId);
SqlDataAdapter adapter = new SqlDataAdapter(command);
try
{
lock (myLock)
{
adapter.Fill(dataSet,"Items");
}
}
catch (Exception ex)
{
LogWriter.WriteLogEntry(LogWriter.LogType.ERROR, string.Format("Failed to get Items by OrderId code from DB."+
"This is due to exception: {0},\n StackTrace: {1}. ", ex.Message, ex.StackTrace));
dataSet = null;
}
}
そして、テーブルに加えられた変更で DB を更新する責任がある 2 番目の方法:
public static bool UpdateItemsByOrder(int orderId, DataSet data)
{
string queryString = @"Select Id,OrderId as [מס' הזמנה],ItemCode as[מק""ט], ItemName as [שם פריט], ReceiptDate as [ת. הספקה],
WarrantyExpDate as [באחריות עד],SuppliersItemCode as [מק""ט ספק], Supplier as [ספק], Count as[כמות], Active
FROM OrdersManager_Items where OrderId = @param";
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.AddWithValue("@param", orderId);
SqlDataAdapter adapter = new SqlDataAdapter(command);
try
{
lock (myLock)
{
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
int rowsUpdated = adapter.Update(data,"Items");
return true;
}
}
catch (Exception ex)
{
LogWriter.WriteLogEntry(LogWriter.LogType.ERROR, string.Format("Failed to update Items table in DB. This is due to exception: {0},\n StackTrace: {1}. ", ex.Message, ex.StackTrace));
return false;
}
}
問題: Items テーブルで新しい行が追加または削除された場合、UpdateItemsByOrder は期待どおりに DB の行を追加/削除します。ただし、Items テーブルの既存の行を更新しても、DB では更新されません。
エラーや例外はありません。builder.GetUpdateCommand() コマンドを追加しようとしました = 結果がありません。
ヘルプやアドバイスをいただければ幸いです。ありがとう
P>S> この MSDN LINKを使用して、SQLAdapter の操作方法を学習しています