2013-11-23 178 views
-2

我試圖做一個INSERT語句到SQL,但得到以下錯誤:數據類型不匹配

there's an error data type mismatch in criteria expression

這是我的查詢:

string Query = "INSERT INTO [laptop table] 
(Name,Serial,Charger,Colour,Notes,Exist) 
VALUES 
('" + this.nametxt.Text + "','" + 
    this.serialtxt.Text + "','" + 
    this.chargertxt.Text + "','" + 
    this.colourtxt.Text + "','" + 
    this.notestxt.Text + "','" + 
    this.Exist.Checked.ToString() + "');"; 

有誰知道是什麼導致這個?

+0

歡迎來到StackOverflow。請閱讀[問]和[常見問題]。如果你沒有詳細說明你的問題是什麼,我們將無法幫助你。 – Marco

+2

噢,我的眼睛 - Yu!如果只有代碼使用[*佔位符*](http://bobby-tables.com/csharp.html),這個問題*甚至不存在*!因此我的建議是使用佔位符。檢查* actual *字符串值將會顯示SQL語法/輸入問題,並且可以在SSMS或其他任何地方使用。 – user2864740

+0

'laptop table'的一個屬性可能有非文本數據類型。看看'Serial'。 – collapsar

回答

3

假設:存在列是一個布爾值,您要存儲。

問題是最後一列是bit而不是string

這有幾個問題,但這是它不工作的主要原因。

另一個主要問題是,你打開自己的SQL注入攻擊。看看參數化輸入以保護自己。

你可以看看這裏

parameterized sql query - asp.net/c#

+0

@ user2864740也許你是正確的 –

+1

我是downvoter,但我看到你已經刪除了字符串連接的代碼。現在,如果您添加了一個完美的參數化查詢示例 – Steve

1

parametising查詢,請檢查您的表的數據類型。

如果存在列則位輸入查詢應該像

串查詢= 「INSERT INTO [膝上型表](名稱,序列,充電器,顏色,備註,存在)VALUES('」 +此。 nametxt.Text +「','」+ this.serialtxt.Text +「','」+ this.chargertxt.Text +「','」+ this.colourtxt.Text +「','」+ this.notestxt。 Text +「','」+ Convert.ToBoolean(this.Exist.Checked)+「');」;