2016-08-23 73 views
1

我正在使用SQL Server 2008和C#。 我宣佈了一個double類型的變量,我想將其插入到我的數據庫中。我有這個錯誤:插入雙Sql服務器

data type conversion error varchar to numeric.

我怎樣才能插入在使用C#的SQL Server類型的雙值的值?

這是代碼:

double variable = 13.2; 

con.Open(); 
cmd=con.CreateCommand(); 
cmd.CommandText = "insert into etudient (IDetudient, [nom etudient], value) values('" + Convert.ToInt16(text_id.Text) + "' , '" + text_name.Text + "','" + variable + "')"; 
cmd.ExecuteNonQuery(); 
con.Close(); 
MessageBox.Show("success"); 
+0

請在您的號碼數據前加引號。他們不是一個字符串。 –

+4

您需要閱讀,瞭解並開始使用參數化查詢。這段代碼對於sql注入是開放的。 –

回答

0

因爲,變量double類型,是不是字符串的,所以你應該在這個格式插入變量

" + variable + ",而不是'" + variable + "'

此外,您Insert查詢會像這樣:

cmd.CommandText = "insert into etudient (IDetudient, [nom etudient], value) 
    values('" + Convert.ToInt16(text_id.Text) + "' , '" + text_name.Text + "'," + variable + ")"; 

事實上,推薦使用Parameterized Queries,因爲它可以防止SQL注入攻擊

using (var con = new SqlConnection(connectionString)) 
{ 
    con.Open(); 

    using (var cmd = new SqlCommand(
     @"INSERT INTO etudient (IDetudient, [nom etudient], value) 
      VALUES (@ID, @Name, @Variable)", con)) 
    { 
     cmd.Parameters.AddWithValue("@ID", text_id.Text); 
     cmd.Parameters.AddWithValue("@Name", text_name.Text); 
     cmd.Parameters.AddWithValue("@Variable", variable); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+1

非常感謝你兄弟 我試過了,它的工作 非常感謝。可能阿拉祝福你的知識:-) –

0

擦除「

如果你把變量之間的前後變化之後......」,你說的是文字,這就是爲什麼錯誤說它不能將varchar轉換爲數字。