Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:更新未更新表c#无错误_C#_Sql Server - Fatal编程技术网

SQL Server:更新未更新表c#无错误

SQL Server:更新未更新表c#无错误,c#,sql-server,C#,Sql Server,我正在尝试更新项目表: public void updateDatabase(Item item) { string sqlString = "UPDATE Items Set Quantity = '" + item.Quantity.ToString().Trim() + "' " + "WHERE ItemID = '" + item.ItemID.Trim() + "'"; //string sqlStringParam = "UPDATE Items Set Quant

我正在尝试更新项目表:

public void updateDatabase(Item item)
{
    string sqlString = "UPDATE Items Set Quantity = '" + item.Quantity.ToString().Trim() + "' " + "WHERE ItemID = '" + item.ItemID.Trim() + "'";
    //string sqlStringParam = "UPDATE Items Set Quantity = @quant WHERE ItemID = @id";

    //Create & execute the update command
    using (SqlCommand sc = new SqlCommand(sqlString, mainConn))
    {
        //sc.Parameters.AddWithValue("@quant", item.Quantity);
        //sc.Parameters.AddWithValue("@id", item.ItemID);
        Console.WriteLine(sc.CommandText.ToString());
        UpdateDataSource(sc, table);
    }
    Console.WriteLine("done");
}
这会将命令发送到数据库类以执行查询:

protected bool UpdateDataSource(SqlCommand command, string table)
{
    bool success;

        try
        {
            if (mainConn.State != ConnectionState.Open)
            {
                mainConn.Open();
            }

            Console.WriteLine(command.CommandText);

            command.CommandType = CommandType.Text;
            Console.WriteLine(command.ExecuteNonQuery());

            mainConn.Close();
            success = true;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message + " " + e.StackTrace, "Error Updating Database");
            mainConn.Close();
            success = false;
        }
        finally
        {
        mainConn.Close();
        }
    return success;
}
正如您所看到的,我尝试了concat方法和paramaterized方法,它们都不会更新表。以下是尝试更新2项时的输出:

UPDATE Items Set Quantity = '4' WHERE ItemID = '1122'
UPDATE Items Set Quantity = '4' WHERE ItemID = '1122'
1
done
UPDATE Items Set Quantity = '9' WHERE ItemID = '1155'
UPDATE Items Set Quantity = '9' WHERE ItemID = '1155'
1
done
在我看来,它似乎应该更新表。我甚至将上面复制的语句作为单个查询运行,它会更新表


ExecuteNonQuery
甚至返回1。

您可以使用跟踪,只要确保系统中已安装SQL Server Profiler即可

SQL跟踪将告诉您哪些命令在SQL server中实时执行

SQL Server探查器

  • 文件-新建跟踪,然后选择服务器,身份验证模式提供用户名和密码,然后单击连接
  • 在跟踪属性中,转到事件选择选项卡
  • 单击显示所有事件和显示所有列
  • 单击“列过滤器”按钮
  • 单击数据库ID
  • 单击Equals,然后在Management Studio中输入之前生成的DB ID
  • 单击确定,然后单击运行按钮
  • 启用跟踪,然后执行应用程序,瞧


    这将有助于您将来使用SQL server;)

    问题似乎与我使用的.mdf数据库文件的属性有关。它被设置为“始终复制”,而不是正确的“新建时复制”设置。有趣的是,有人告诉我,为了完成这项任务,我必须始终使用副本,但这似乎是不正确的


    谢谢大家的帮助

    我很好奇你为什么评论出了编写SQL的正确方法?我可以把它改回去哈哈,总的来说,两者都会导致相同的结果mainconn是否有交易?尝试在更新后立即在代码中运行“select”,查看是否获得更新的值…是否验证代码是否连接到正确的数据库服务器和数据库?如果数量和ID是整数,为什么要在其周围使用“标记”,强制sql使用隐含转换