SQL INSERT语句不工作

问题描述:

我已经写了一个样本插入txt文件到MySQL数据库,但我得到一个错误的未知列_FnameSQL INSERT语句不工作

我的代码:

string strQuery = "insert into tblFiles(FName,FData) values (_FName, _FData)"; 
MySqlCommand cmd = new MySqlCommand(strQuery); 
cmd.Parameters.AddWithValue("_FName", filename); 
cmd.Parameters.AddWithValue("_FData", bytes); 

即使这同样的错误:

cmd.Parameters.Add("_FName", MySqlDbType.VarChar).Value = filename; 
cmd.Parameters.Add("_FData", MySqlDbType.LongText).Value = bytes; 
+1

我想你需要在你想用作参数名的每个字符串前加@。 – 2011-04-05 09:21:37

+1

不是MySql的人,但不应该在值内的参数有@前缀?所以它看起来像@_FName,@ _FData? – 2011-04-05 09:21:43

+0

请输入确切的错误。 – Ovi 2011-04-05 09:22:05

像_FName这样的声音不被命令解释为令牌/参数。

尝试使用@_FName,而不是...

试试这个

string strQuery = "insert into tblFiles(FName,FData) values (?, ?)"; 

请注意,如果您正在使用MySQL的.NET本地提供程序,那么您可能(可能) 能够脱离命名参数。但是,如果您使用的是OleDB接口,参数是位置的(未命名),并且必须用“?”标记 字符。

而不是“_FName”使用“@_FName”或只是“?”。这样,参数得到适当的替换。

您是否需要在参数名称之前添加@,以便mysql可以理解值,列名和文字之间的差异。

+0

对不起,“价值”我的意思是参数。 – 2011-04-05 09:27:29

那么,你的新MySqlCommand()是否缺少连接?另外,您应该将参数写为@Name而不是_Name。

尝试:

string strQuery = "insert into tblFiles(FName,FData) values (@FName, @FData)"; 
MySqlCommand cmd = new MySqlCommand(strQuery); 
cmd.Parameters.AddWithValue("@FName", filename); 
cmd.Parameters.AddWithValue("@FData", bytes); 
+0

这也会引发错误 – Dotnet 2011-04-05 09:25:21

这应该做的伎俩:

cmd.Parameters.AddWithValue("@_FName", filename); 
cmd.Parameters.AddWithValue("@_FData", bytes); 

更多的信息,甚至实例见this MSDN link