我正在使用基于 WinForms 的 C# 工具,该工具具有附加的基于 MDF 文件的数据库。我正在尝试使用该SqlCommand.ExecuteNonQuery()
方法将记录保存到此附加的 MDF 数据库中,但未保存该记录。没有错误或异常发生;唯一的问题是该记录并未实际保存。
我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();
}
}
有人可以告诉我可能是什么问题吗?我是否需要以某种方式执行“提交”?
编辑:
我找到了问题,并在下面写了一个解决方案.. 感谢所有帮助我的人:)