MDFファイルベースのデータベースがアタッチされたWinFormsベースのC#ツールを使用しています。この方法を使用して、この接続されたMDFデータベースにレコードを保存しようとしていSqlCommand.ExecuteNonQuery()
ますが、レコードが保存されません。エラーや例外は発生しません。唯一の問題は、レコードが実際に保存されないことです。
Console.WriteLine
実行しようとしているクエリを示すが上部にあります。構文的には正しいので、出力ウィンドウからコピーして貼り付けて個別に実行すると、機能します。
接続文字列を次のように正しく定義しました。レコードのフェッチには正常に機能します。
public static String connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestBuildDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
レコードを保存するために使用している関数は次のとおりです。
public static void PerformDBWriteTransaction(string inputSQLStatement)
{
Console.WriteLine(inputSQLStatement);
DataTable returnDataTable = new DataTable();
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = connectionString;
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConnection;
cmd.CommandType = CommandType.Text;
cmd.CommandText = inputSQLStatement;
cmd.Connection.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
errorMessages.Clear();
errorMessages.Append("The following errors were found in the SQL statement:\n\n");
for (int i = 0; i < ex.Errors.Count; i++)
{
errorMessages.Append("Index #" + i + "\n" +
"Message: " + ex.Errors[i].Message + "\n" +
"LineNumber: " + ex.Errors[i].LineNumber + "\n" +
"Source: " + ex.Errors[i].Source + "\n" +
"Procedure: " + ex.Errors[i].Procedure + "\n");
}
MessageBox.Show(errorMessages.ToString());
}
finally
{
cmd.Connection.Close();
}
}
誰かが何が問題なのか教えてもらえますか?どういうわけか「コミット」を実行する必要がありますか?
編集:
私は問題を見つけ、以下に解決策を書きました..しかし私を助けてくれたすべての人に感謝します:)