0

我无法在我的表中插入一个新元组。它没有给出任何错误,我不知道为什么它不能正常工作。顺便说一句,TextBox3 有类似的东西:C:\Temp\Pic5.jpg。这是我的代码:

  protected void Button3_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\MYDB.mdf;Integrated Security=True;User Instance=True");
    byte[] data;

    try
    {
        data = System.IO.File.ReadAllBytes(@"" + TextBox3.Text);
        string val1 = "" + TextBox1.Text;
        string val2 = "" + TextBox2.Text;
        string val3 = "" + TextBox3.Text;
        SqlCommand cmd = new SqlCommand("Insert INTO Books (Book_Name,Author_Name,Image,In_Lib) VALUES (@BN,@AN,@DATA,@LIB)", con);
        cmd.Parameters.AddWithValue("@BN", val1);
        cmd.Parameters.AddWithValue("@AN", val2);
        cmd.Parameters.AddWithValue("@DATA", val3);
        cmd.Parameters.AddWithValue("@LIB", "YES");
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

    catch (Exception err)
    {
        Console.WriteLine(err.Message);
    }
}

asp部分

Book Name:   
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
Author Name:&nbsp;
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
Image Name:&nbsp;&nbsp;
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Submit" />
<br />

我的数据库是这样的:

  • 书名 varchar(50)
  • Author_Name varchar(50)
  • 图像图像
  • In_Lib varchar(50)
4

4 回答 4

2

由于您的Image列是 type Image,正确的参数值将是一个字节数组,而不是一个字符串。这可能会导致错误。如果您现在不添加图像,请忽略此参数或将其设置为DBNull.Value显式。

我假设您来自 Visual Basic 背景(否则没有对奇怪"" + TextBox1.Text结构的解释),所以作为旁注:传递给调用的值AddWithValue应该与数据库中的列类型匹配。我的意思是:将字符串传递给类型为参数的参数int可能会起作用,除非您通过Hello. 这样的错误有时很难找到,所以请:确保从一开始就匹配参数类型。

于 2012-05-09T13:08:54.383 回答
1

您正在读取指定的文件,TextBox3.Textdata不是在任何地方使用它。此外,您正在将文本传递到Image字段中,您可能想要这样做

cmd.Parameters.AddWithValue("@DATA", data);

代替

cmd.Parameters.AddWithValue("@DATA", val3);
于 2012-05-09T13:11:27.757 回答
0

我认为以下应该有效

尝试:

cmd.Parameters.Add("parameter_name", System.Data.SqlDbType.BigInt).Value = 1233;
于 2012-05-09T13:04:42.450 回答
0

您的问题在图像中。在数据库中,您有数据类型为 Image 的数据库字段Image,并且您正在尝试存储字符串数据。

string val3 = "" + TextBox3.Text;
cmd.Parameters.AddWithValue("@DATA", val3);

SqlDbType.Image.

于 2012-05-09T13:20:29.247 回答