从C#将整数值插入SQL Server数据库

时间:2018-10-08 19:57:24

标签: c# sql-server

我正在尝试如下所示在运行程序时向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 !!");
}

3 个答案:

答案 0 :(得分:1)

整个 AttachDbFileName = 方法有缺陷-充其量!在Visual Studio中运行应用程序时,它将围绕.mdf文件(从App_Data目录复制到输出目录-通常为.\bin\debug-应用运行所在的目录)和很有可能,您的INSERT可以正常工作-但您最终只能看到错误的.mdf文件

如果您要坚持这种方法,请尝试在myConnection.Close()调用上放置一个断点-然后使用SQL Server Mgmt Studio Express检查.mdf文件-我几乎可以肯定您的数据在那儿。

我认为真正的解决方案

  1. 安装SQL Server Express(并且您已经完成了此操作)

  2. 安装SQL Server Management Studio Express

  3. SSMS Express 中创建数据库,并为其指定逻辑名称(例如MainDataBase

  4. 使用其逻辑数据库名称(在服务器上创建时提供)连接至它-请勿随意使用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    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());
}