2012-05-09 56 views
0

我在插入一個新的元組到我的表中有麻煩。它不會給出任何錯誤,我不知道爲什麼它不能正常工作。順便說一句TextBox3有這樣的東西:C:\ Temp \ Pic5.jpg。這裏是我的代碼:在c中插入新元組到sql#

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 /> 

我的數據庫是這樣的:

  • BOOK_NAME VARCHAR(50)
  • AUTHOR_NAME VARCHAR(50)
  • 圖片圖片
  • In_Lib varch AR(50)
+0

控制檯是否可見? –

+1

你能告訴你數據庫表嗎? – Murtaza

+1

該參數的數據類型是什麼? – levi

回答

1

您正在將TextBox3.Text中指定的文件讀取到data中,而不是在任何地方使用它。此外,你傳遞文本到Image領域,你可能想要做的

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

代替

cmd.Parameters.AddWithValue("@DATA", val3); 
+0

哦,謝謝你的隊友。它正在工作。 –

0

我認爲以下應工作

嘗試:

cmd.Parameters.Add("parameter_name", System.Data.SqlDbType.BigInt).Value = 1233; 
+0

對不起,它沒有工作。 –

+1

這與「AddWithValue」相同,只是您傳入的是類型,而不是自動延期。 –

2

正如你ImageImage型的,正確的參數值是一個字節數組,而不是一個串。這可能會導致錯誤。如果您現在不添加圖像,請忽略此參數或將其明確設置爲DBNull.Value

我假設你來自Visual Basic後臺(否則沒有解釋奇怪的"" + TextBox1.Text構造),所以附註:傳遞給調用AddWithValue的值應該與數據庫中的列類型匹配。我的意思是:將字符串傳遞給類型爲int的參數可能會起作用,除非您通過Hello。像這樣的錯誤有時很難找到,所以請:確保從一開始就匹配參數類型。

+0

好的,謝謝Thorsten。我終於找到了我的錯誤。正如pjotr所說,我必須寫出cmd.Parameters.AddWithValue(「@ DATA」,data);而不是cmd.Parameters.AddWithValue(「@ DATA」,val3); –

0

你的問題是圖像。在數據庫中,您的數據庫字段Image的數據類型爲Image,並且您試圖存儲字符串數據。

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

SqlDbType.Image進行存儲。