我正在尝试如下所示在运行程序时向SQL Server数据库中插入一个整数值,没有任何错误,但是该表未使用值进行更新。我已经在互联网上进行搜索,并且我正在做同样的事情,任何人都可以帮助找到我做错了什么。
注意:我已经在表单类上将“ connectionString”定义为字符串
private void btnUpdate_Click(object sender, EventArgs e)
{
int totalincome=600;
int totaldeductions = 10;
connectionString = ConfigurationManager.ConnectionStrings["BudgetApp.Properties.Settings.MainDataBaseConnectionString"].ConnectionString;
con = new SqlConnection(connectionString);
con.Open();
cmd = new SqlCommand("INSERT INTO Totals(TotalIncome, TotalDeductions) VALUES (@TotalIncome, @TotalDeductions)", con);
cmd.Parameters.AddWithValue("@TotalIncome", totalincome);
cmd.Parameters.AddWithValue("@TotalDeductions", totaldeductions);
cmd.ExecuteNonQuery();
MessageBox.Show("Done !!");
}
答案 0 :(得分:1)
整个 AttachDbFileName = 方法有缺陷-充其量!在Visual Studio中运行应用程序时,它将围绕.mdf
文件(从App_Data
目录复制到输出目录-通常为.\bin\debug
-应用运行所在的目录)和很有可能,您的INSERT
可以正常工作-但您最终只能看到错误的.mdf文件!
如果您要坚持这种方法,请尝试在myConnection.Close()
调用上放置一个断点-然后使用SQL Server Mgmt Studio Express检查.mdf
文件-我几乎可以肯定您的数据在那儿。
我认为真正的解决方案是
安装SQL Server Express(并且您已经完成了此操作)
安装SQL Server Management Studio Express
在 SSMS Express 中创建数据库,并为其指定逻辑名称(例如MainDataBase
)
使用其逻辑数据库名称(在服务器上创建时提供)连接至它-请勿随意使用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=MainDataBase;Integrated Security=True
,其他所有内容与以前完全一样 ...
有关更多背景信息,另请参见亚伦·伯特兰(Aaron Bertrand)的精彩博客文章Bad habits to kick: using AttachDbFileName。
答案 1 :(得分:0)
代码似乎正确,也许您正在检查错误的数据库?我会为异常添加一个try / catch。并记住在执行查询后关闭连接。问候
答案 2 :(得分:0)
检查数据库列数据类型,使用try catch。
并尝试将cmd.Parameters.AddWithValue("@TotalIncome", totalincome);
替换为cmd.Parameters.Add("@Number", SqlDbType.Int).Value = totalincome;
try
{
int totalincome=600;
int totaldeductions = 10;
connectionString = ConfigurationManager.ConnectionStrings["BudgetApp.Properties.Settings.MainDataBaseConnectionString"].ConnectionString;
con = new SqlConnection(connectionString);
con.Open();
cmd = new SqlCommand(@"INSERT INTO Totals(TotalIncome, TotalDeductions) VALUES (@TotalIncome, @TotalDeductions)", con);
cmd.Parameters.Add("@Number", SqlDbType.Int).Value = totalincome;
cmd.Parameters.Add("@Number", SqlDbType.Int).Value = totaldeductions;
//cmd.Parameters.AddWithValue("@TotalIncome", totalincome);
//cmd.Parameters.AddWithValue("@TotalDeductions", totaldeductions);
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}