我在将新元组插入表格时遇到了麻烦。它没有给出任何错误,我不知道为什么它不能正常工作。顺便说一句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 part
Book Name:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
Author Name:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
Image Name:
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Submit" />
<br />
我的数据库是这样的:
答案 0 :(得分:2)
由于Image
列的类型为Image
,因此正确的参数值将是字节数组,而不是字符串。这可能会导致错误。如果您现在不添加图片,请忽略此参数或明确将其设置为DBNull.Value
。
我认为你来自Visual Basic背景(否则对于奇怪的"" + TextBox1.Text
构造没有解释),所以作为旁注:传递给AddWithValue
的调用的值应该匹配数据库中的列类型。我的意思是:将字符串传递给int
类型的参数可能有效,除非您通过Hello
。像这样的错误有时很难找到,所以请:确保从头开始匹配参数类型。
答案 1 :(得分:1)
您正在将TextBox3.Text
中指定的文件读入data
,而不是在任何地方使用它。此外,您将文本传递到Image
字段,您可能想要
cmd.Parameters.AddWithValue("@DATA", data);
而不是
cmd.Parameters.AddWithValue("@DATA", val3);
答案 2 :(得分:0)
我认为以下内容应该有效
尝试:
cmd.Parameters.Add("parameter_name", System.Data.SqlDbType.BigInt).Value = 1233;
答案 3 :(得分:0)
您的问题出现在图片中。在数据库中,您有数据类型Image
的数据库字段Image,并且您正在尝试存储字符串数据。
string val3 = "" + TextBox3.Text;
cmd.Parameters.AddWithValue("@DATA", val3);
使用SqlDbType.Image
存储商店。