2014-11-24 43 views
-1
SqlConnection conn = new SqlConnection(); 
conn.ConnectionString = "Server=; Database=; User id=; password="; 
conn.Open(); 

string Query = "Insert into [Capstone0480].[dbo].[NAME] (NameID, FirstName, MI, LastName, UserID) Values('" + this.txtNameID.Text + "','" + txtFirst.Text + "','" + txtMI.Text + "','" + txtLast.Text + "', '" + txtUserID.Text + "')"; 

SqlCommand createCommand = new SqlCommand(Query, conn); 
createCommand.ExecuteNonQuery(); 


MessageBox.Show("Updated"); 
conn.Close(); 

我在ExecuteNonQuery()聲明中收到此錯誤。我不確定這裏有什麼問題。我覺得我的sql語句是正確的。我只是試圖將輸入到文本框中的內容添加到我的數據庫中。字符串或二進制數據將被截斷。 C語言中的SQL語句#

如果有更好的方法來做到這一點,或者如果有什麼問題,請讓我知道!

+2

你的一個文本框的

良好包含的字符串太長了其在數據庫列。 – Blorgbeard 2014-11-24 04:16:24

+0

「NameID」,「FirstName」,「MI」,「LastName」和「UserID」列的類型是什麼? 「txtNameID.Text」,「txtFirst.Text」,「txtMI.Text」,「txtLast.Text」和「txtUserID.Text」的價值是什麼? – ekad 2014-11-24 04:17:27

+1

與您的問題沒有關係,但您添加參數的方式不適合。 [看到這個](http://stackoverflow.com/questions/4624811/different-ways-of-passing-sqlcommand-parameters)。如果你需要幫助,我可以解釋更多。 – techvice 2014-11-24 04:32:34

回答

0

NAME表中的其中一列比您嘗試插入的值短。 嘗試在將名稱文本框插入數據庫之前修剪名稱文本框的長度,或者增加數據庫列的長度。

例如:

如果你的名字列是VARCHAR(20) 則:

var firstName = txtFirst.Text.Length > 20 ? txtFirst.Text.Substring(0,20) : txtFirst.Text; 

然後插入的firstName的價值到您的SQL語句。

此外,您應該將文本框的最大長度設置爲不超過列的大小。

0

錯誤提示您的輸入數據長度超過了您在數據庫表中定義的列長度。

假設柱就像

TableName1 
ColumnName1 varchar(50) 

,現在當你要插入51個或更多字符長度輸入字符串,當時SQLServer的提示錯誤。檢查這個示例。

declare @t table (name varchar(5)) 

insert into @t values('abc') 

select * from @t 

insert into @t values('abcdefg') --this gives error as you insert more than define length. 

請檢查運行時什麼是輸入字符串。如果你限制你的文本框僅插入數據庫列的長度一樣

<input type="textbox" maxlength="50" /> 
相關問題