2016-08-23 140 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转换为数字。