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

C# 将整数值从C插入SQL Server数据库#,c#,sql-server,C#,Sql Server,我试图在SQL Server数据库中插入一个整数值,如下所示,当我运行该程序时,没有任何错误,但该表不会使用值进行更新。我在互联网上搜索过,我也在做同样的事情。有人能帮我找到我做错的地方吗 注意:我已经将“connectionString”定义为表单类上的字符串 private void btnUpdate_Click(object sender, EventArgs e) { int totalincome=600; int totaldeductions =

我试图在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 !!");
}

代码似乎是正确的,也许您检查了错误的DB?。我会为异常添加一个Try/catch。并记住在执行查询后关闭连接。关于

整个AttachDbFileName=方法是有缺陷的-最多!在Visual Studio中运行应用程序时,它将围绕
.mdf
文件进行复制(从
app\u Data
目录复制到输出目录-通常是
\bin\debug
-应用程序运行的地方)和最有可能是,您的
INSERT
工作正常-但您最后看到的是错误的.mdf文件

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

我认为真正的解决办法是

  • 安装SQL Server Express(您已经完成了安装)

  • 安装SQL Server Management Studio Express

  • 在SSMS Express中创建数据库,并为其指定一个逻辑名称(例如,
    maindabase

  • 使用其逻辑数据库名称连接到它(在服务器上创建时提供),不要乱动物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.\\SQLEXPRESS;Database=MainDataBase;Integrated Security=True
    
    其他一切都和以前一样


  • 有关更多背景信息,请参阅Aaron Bertrand的优秀博客文章。

    检查数据库列数据类型,使用try-catch

    并尝试替换
    cmd.Parameters.AddWithValue(“@TotalIncome”,TotalIncome)
    to
    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());
    }
    

    您是否能够看到消息
    Done在执行结束时?是,完成!!消息出现几乎不可能有
    TransactionScope
    在起作用?
    cmd.ExecuteNonQuery()返回受影响的行数。如果它大于零,它就起作用了。如果数据库没有显示,则表明您在错误的数据库中查找。您的连接字符串是什么样子的?不过,如果Sql Server Express只想为传统桌面应用程序提供本地数据存储,则这有点过分了。