首页 文章

更新不想在我的Windows窗体上工作

提问于
浏览
1

我有一个更新的存储过程,它完全适用于我的sql,但是当我尝试更新我的c#表单时它没有更新,但我的代码似乎是正确的,我不知道为什么我不能执行更新这是我的更新存储过程 sql script USE [MediaPlayer] GO / ***** 对象:StoredProcedure [dbo] . [updateBooks]脚本日期:11/25/2013 07:51:33 **** ***** / SET ANSI_NULLS开启GO SET QUOTED_IDENTIFIER开始

ALTER PROCEDURE [dbo].[updateBooks]
    -- Add the parameters for the stored procedure here
    @Name nvarchar (50),
    @FileName nvarchar(50),
    @FilePath  nvarchar(50),
    @FileSize float,
    @DateAdded date,
    @MediaLength nvarchar (50),
    @MediaSubType nvarchar (50),
    @MediaType nvarchar (50),
    @Thumbnail image,
    @DateAquired datetime,
    @BooksName nvarchar (50),
    @Publisher nvarchar(50),
    @Author nvarchar(50),
    @YearOfPublication date, 
    @Genre nvarchar (50),
    @ISBN nvarchar (50),
    @Synoposis nvarchar(max),
    @SeriesTitle nvarchar(50),
    @SeriesNumber nvarchar (50),
    @BookCover image,
    @GeneralID int output,
    @BookID int output

AS
BEGIN
 update dbo.Book
 SET 

 BooksName=@BooksName,
 Publisher=@Publisher, 
 Author =@Author,
 [Year of publication] =@YearOfPublication,
 Genre =@Genre,
 ISBN=@ISBN, 
 Synoposis=@Synoposis,
 [Series Title]= @SeriesTitle,
 [Series Number] =@SeriesNumber,
 [Book Cover] =@BookCover

 from Book
 Where  BookID = @BookID 
 select @@ROWCOUNT 
update dbo.General
SET

Name =@Name, 
FileName= @FileName, 
FilePath= @FilePath,
FileSize=@FileSize, 
DateAdded= @DateAdded, 
MediaLength =@MediaLength,
MediaSubType = @MediaSubType, 
MediaType = @MediaType, 
Thumbnail =@Thumbnail, 
DateAquired= @DateAquired

 where GeneralID = @GeneralID 
 END

C# code

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

3 回答

  • 0

    首先 uncommentingcmd.ExecuteNonQuery(); 怎么样?

  • 0

    嗨,你有没有试过这样的事情

    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();
    
  • 0

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

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

    相反,没有值传递给这些参数 . 此外,两者都声明为OUTPUT .

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

相关问题