2011-04-05 171 views
0

我已經寫了一個樣本插入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

回答

1

像_FName這樣的聲音不被命令解釋爲令牌/參數。

嘗試使用@_FName,而不是...

1

試試這個

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

請注意,如果您正在使用MySQL的.NET本地提供程序,那麼您可能(可能) 能夠脫離命名參數。但是,如果您使用的是OleDB接口,參數是位置的(未命名),並且必須用「?」標記 字符。

1

而不是「_FName」使用「@_FName」或只是「?」。這樣,參數得到適當的替換。

1

您是否需要在參數名稱之前添加@,以便mysql可以理解值,列名和文字之間的差異。

+0

對不起,「價值」我的意思是參數。 – 2011-04-05 09:27:29

0

那麼,你的新MySqlCommand()是否缺少連接?另外,您應該將參數寫爲@Name而不是_Name。

0

嘗試:

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

1

這應該做的伎倆:

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

更多的信息,甚至實例見this MSDN link