C# 更新不想在我的windows窗体上工作

C# 更新不想在我的windows窗体上工作,c#,sql,winforms,stored-procedures,C#,Sql,Winforms,Stored Procedures,我有一个更新存储过程,它在我的sql上运行得非常好,但是当我尝试在我的c#form上更新时,它没有更新,但是我的代码似乎是正确的,我不确定为什么我不能执行更新 这是我的更新存储过程 sql脚本 使用[MediaPlayer] 去 /*对象:StoredProcess[dbo].[updateBooks]脚本日期:11/25/2013 07:51:33*/ 将ANSI_空值设置为ON 去 在上设置带引号的\u标识符 去 C#代码 private void DoUpdate() {

我有一个更新存储过程,它在我的sql上运行得非常好,但是当我尝试在我的c#form上更新时,它没有更新,但是我的代码似乎是正确的,我不确定为什么我不能执行更新 这是我的更新存储过程 sql脚本 使用[MediaPlayer] 去 /*对象:StoredProcess[dbo].[updateBooks]脚本日期:11/25/2013 07:51:33*/ 将ANSI_空值设置为ON 去 在上设置带引号的\u标识符 去

C#代码

private void DoUpdate()
        {
            try
            {
                string picLoc = "C:\\Users\\Dee\\Pictures\\PIC\\download.jpg";
                try
                {
                    byte[] img = null;
                    FileStream fs = new FileStream(picLoc, FileMode.Open, FileAccess.Read);
                    BinaryReader br = new BinaryReader(fs);
                    img = br.ReadBytes((int)fs.Length);

                    string connectionString = "Data Source=(local);Initial Catalog=MediaPlayer;Integrated Security=True";
                    using (SqlConnection conn = new SqlConnection(connectionString))
                    {
                        conn.Open();

                        SqlCommand cmd = new SqlCommand("dbo.updateBooks", conn);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@Name", SqlDbType.NVarChar).Value = NametextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@FileName", SqlDbType.NVarChar).Value = FileNametextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@FileSize", SqlDbType.Float).Value = Convert.ToDouble(fileSizetextBox.Text);
                        cmd.Parameters.AddWithValue("@FilePath", SqlDbType.NVarChar).Value = FilePathtextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@DateAdded", SqlDbType.Date).Value = DateAddeddateTimePicker.Text.ToString();
                        cmd.Parameters.AddWithValue("@MediaLength", SqlDbType.NVarChar).Value = MediaLengthtetextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@MediaSubType", SqlDbType.NVarChar).Value = MediaSubtypetextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@MediaType", SqlDbType.NVarChar).Value = MediaTypetextBox.Text.ToString();
                        cmd.Parameters.Add(new SqlParameter("@Thumbnail", img));
                        cmd.Parameters.AddWithValue("@DateAquired", SqlDbType.DateTime).Value = DateAquiredDatetimepicker.Text.ToString();
                        cmd.Parameters.AddWithValue("@Author", SqlDbType.NVarChar).Value = AuthortextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@Publisher", SqlDbType.NVarChar).Value = PublishertextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@BooksName", SqlDbType.NVarChar).Value = BooksNametextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@SeriesTitle", SqlDbType.Date).Value = SeriesTitletextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@SeriesNumber", SqlDbType.NVarChar).Value = SeriesNumberTextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@Genre", SqlDbType.NVarChar).Value = genretextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@Synoposis", SqlDbType.NVarChar).Value = SynoposistextBox.Text.ToString();
                        cmd.Parameters.AddWithValue("@YearOfPublication", SqlDbType.NVarChar).Value = YearOfPublicationdatetimepicker.Text.ToString();
                        cmd.Parameters.AddWithValue("@ISBN ", SqlDbType.NVarChar).Value = ISBNtextBox.Text.ToString();
                        cmd.Parameters.Add(new SqlParameter("@BookCover", img));
                        SqlParameter parm1 = new SqlParameter("@GeneralID", SqlDbType.Int);
                        parm1.Direction = ParameterDirection.Output;
                        cmd.Parameters.Add(parm1);
                        SqlParameter parm = new SqlParameter("@BookID", SqlDbType.Int);
                        parm.Direction = ParameterDirection.Output;
                        cmd.Parameters.Add(parm);
                        //cmd.ExecuteNonQuery();

                        MessageBox.Show(cmd.ExecuteNonQuery().ToString() + " record(s) Updated.");
                       // MessageBox.Show("record successfully updated!");
                        //clrtxtb();
                        conn.Close();

                    }
                }



                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                catch (ArgumentException ex)
                {
                    MessageBox.Show("error is " + ex.Message);
                }
            }
            finally
            { }

        }
enter code here

首先取消注释行
cmd.ExecuteNonQuery()怎么样

嗨,你试过这样的东西吗

   SqlConnection sqlConnection = new SqlConnection();
   SqlCommand sqlCommand = new SqlCommand();
   sqlConnection.ConnectionString = "Data Source=SERVERNAME;Initial    Catalog=DATABASENAME;Integrated Security=True";

   sqlConnection.Open();
   sqlCommand.Connection = sqlConnection;
   sqlCommand.CommandType = CommandType.StoredProcedure;
   sqlCommand.CommandText = "SPName";

   sqlCommand.Parameters.Add("@param1", SqlDbType.VarChar).Value = value1;
   sqlCommand.Parameters.Add("@param2", SqlDbType.VarChar).Value = value2;
   sqlCommand.Parameters.Add("@Param3", SqlDbType.VarChar).Value = value3;
   sqlCommand.ExecuteNonQuery();

存储过程中的两个WHERE子句使用参数
@BookID
@GeneralID

因此,在调用存储过程时,两者都应该包含一个值

相反,不会向这些参数传递任何值。此外,两者都声明为输出


这就是为什么没有更新的原因。

你应该解释它是如何不工作的,没有发生任何事情,你是否收到错误消息,等等这里没有错误消息要捕获
catch(Exception ex){}
,你一定收到了一些评论我试过了,仍然不工作,我试过了所有可能的角度,我不确定我的问题是我的c#代码还是sql连接即使没有注释,它仍然不起作用。好吧,下一个问题:在更改表单中的某些内容后,数据库中的数据是否会更新?然后,假设在更改表单中的某些内容后调用更新函数,您的数据库连接可能存在问题-是否尝试调试整个函数,尤其是
conn.Open()
   SqlConnection sqlConnection = new SqlConnection();
   SqlCommand sqlCommand = new SqlCommand();
   sqlConnection.ConnectionString = "Data Source=SERVERNAME;Initial    Catalog=DATABASENAME;Integrated Security=True";

   sqlConnection.Open();
   sqlCommand.Connection = sqlConnection;
   sqlCommand.CommandType = CommandType.StoredProcedure;
   sqlCommand.CommandText = "SPName";

   sqlCommand.Parameters.Add("@param1", SqlDbType.VarChar).Value = value1;
   sqlCommand.Parameters.Add("@param2", SqlDbType.VarChar).Value = value2;
   sqlCommand.Parameters.Add("@Param3", SqlDbType.VarChar).Value = value3;
   sqlCommand.ExecuteNonQuery();