データベースアプリケーションを設計しており、sqlデータベースのデータを取り込むフォームを持っています。ユーザーがフォーム上のテキストボックスをダブルクリックすると、入力ボックスを使用して値を変更できます。入力ボックスでは、次のコードを実行してデータベースを更新します。SqlCommand.ExecuteNonQuery()はデータベースを更新しません。
private void ProcessChanges(string strField, string strCurrentValue)
{
//...Connect To Database...//
string strCaseNo = txtCaseNo.Text;
string strConnect = BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(strConnect);
linkToDB.Open();
//...Request User Input New Value...//
string strMessage = "Enter ammended details and click OK," + Environment.NewLine +
"or click Cancel to exit.";
string strInput = Interaction.InputBox(strMessage, "Case Details", strCurrentValue);
//...Send User Input to Database...//
string commandText = "UPDATE tblCases SET @FieldVal = @InputVal WHERE CaseNo = @CaseNoVal;";
SqlCommand sqlCom = new SqlCommand(commandText, linkToDB);
sqlCom.Parameters.Add("@FieldVal", SqlDbType.Text);
sqlCom.Parameters.Add("@InputVal", SqlDbType.Text);
sqlCom.Parameters.Add("@CaseNoVal", SqlDbType.VarChar);
sqlCom.Parameters["@FieldVal"].Value = strField;
sqlCom.Parameters["@InputVal"].Value = strInput;
sqlCom.Parameters["@CaseNoVal"].Value = strCaseNo;
int intQuery = sqlCom.ExecuteNonQuery();
MessageBox.Show(intQuery.ToString());
}
問題は、データベースがまったく更新されないことです。私は同じConnectionStringBuilderが私のアプリ全体で使用されているので、接続がOKであることを知っています。私は最後にExecuteNonQuery()の戻り値が '1'であることを伝えるメッセージボックスを追加しました。これは、行が更新されたことを示唆しています。しかし、私のデータベースでは何も変わりません。
これはばかげた質問ですが、データベースが更新されていないことを100%確信していれば、キャッシュされた値を見ているかもしれませんか? – KingCronus