当前位置: 首页 > 知识库问答 >
问题:

更新不想在我的窗口表单上工作

漆雕令秋
2023-03-14

我有一个更新存储过程,它可以完美地在我的sql上工作,但当我尝试在我的c#表单上更新时,它不会更新,但我的代码似乎是正确的,我不确定为什么我不能执行更新这是我的更新存储过程sql脚本使用[MediaPlayer]GO/*对象:StoredProcedure[dbo]。[updateBooks]脚本日期:2013年11月25日07:51:33*/SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO

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#代码

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个答案

林正平
2023-03-14

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

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

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

这就是没有任何更新的原因。

司空均
2023-03-14

嗨,你试过这样的东西吗

   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();
吴刚毅
2023-03-14

首先取消对<code>cmd行的注释。ExecuteNonQuery()

 类似资料:
  • 问题内容: 我是Swing的新手。 我要在单击按钮(完成按钮)后更新表格。我认为数据正确,但屏幕无法正常工作。 以下是我程序的说明 选中复选框,然后单击完成按钮 最底层应更改。 没有主 这是我的代码: 问题答案: 而不是这样做… 只需更新现有模型 或简单地 假设您要继续向表中添加新行。如果您要这样做,还可以先清除表,然后再向其中添加新行。 Swing的工作原理是MVC(模型-视图- 控制器 ),该

  • 我正在使用Adobe Acrobat DC Pro,我正在使用javascript控制台对多个字段的“默认值”进行更新。在控制台中运行时,下面一行会更新字段“FirstName”。如果我查看字段的属性,默认值已更新,但预览表单时不会显示。 这是为什么?

  • 问题内容: 我想向 外部网址 提交结帐 表单,该表单应打开带有结果的新窗口 ,但是我无法使我的应用程序打开它,也无法在单独的窗口中打开它,也无法使用应用程序内浏览器。 到目前为止,我要做的是创建一个内部形式的指令,并通过链接器函数在某个时候调用Submit元素。 当我在浏览器中运行时,这会打开一个新窗口(就像我想要的一样)。 这个问题 时,会出现 在设备上运行 ,因为它只是 REPLACES 的

  • 所以我运行一个脚本,调用: 它在ubuntu上运行时似乎运行良好,但当我使用Git Bash在Windows上运行时,我得到了这个错误: 它似乎试图在我的机器上运行脚本,而不是我试图调用它的实际容器。 你知道为什么会这样吗?

  • 在这种情况下,我希望检索数据,但在返回数据之前,我希望在不保存/持久化的情况下对其进行更改。 这是我的Rest控制器: 以下是服务实现: 最初我在服务上有注释。通过删除它而不在方法中使用它,我首先想到的是会话将使用存储库打开和关闭,如这里的答案所示。 这不起作用,我在评论中看到“会话将持续整个HTTP请求处理过程。”所以,在我添加的服务中 然后在我添加的方法中 在我做任何改变之前。然而,我所做的任

  • 我正在制作一个电子表格来追踪我的大量营养素和卡路里。我制作了一个用于输入信息的谷歌表单,它在谷歌表单上填充了一个“回复”表单。我在同一个电子表格中制作了一张不同的表格来执行所有的计算并生成图表。 但每次我在表单中输入一个新的响应时,它都会创建一个新行并更改计算表中的所有单元格引用。例如,我从响应中引用单元格A2 当我实际填写表格并填充时,回答表中的A2已被填写,但我计算表中的参考已更改为A3。 我