2013-06-06 78 views
0

我創建了一個winform應用程序,並使用ado.net訪問mysql數據庫。但是我遇到了一個奇怪的問題。ADO.NET插入Mysql,所有數據爲空

我的數據表中創建腳本:

create table using_user { 
`id` int(11) NOT NULL auto_increment, 
'dx_ip_addr' default NULL, 
'scard_type' default NULL, 
.... 
} 

我的C#代碼:

MySqlConnection conn = new MySqlConnection(); 
conn.ConnectionString = "Server=localhost; Port=9999; Uid=root; Pwd=ecsc; Database=zhz-netbar-jk;" 

conn.Open(); 

MySqlCommand cmd = conn.CreateCommand(); 
cmd.CommandText = "insert into using_user (dx_ip_addr, scard_type,...)values(@dx_ip_addr, @scard_type,...)"; 

cmd.Parameters.Add(new MySqlParameter("@dx_ip_addr", "5000230001")); 
cmd.Parameters.Add(new MySqlParameter("@scard_type", "1")); 
... 

cmd.ExecuteNonQuery(); 

conn.Close(); 

執行此操作後,主鍵 '身份證' 產生,但其他領域是NULL。我該如何解決這個問題?

+0

請註明數據類型爲剩下的兩列..dx_ip_addr,scard_type –

+0

您的代碼存在各種問題。您在數據庫端缺少數據類型。你也錯過了C#端的數據類型(在cmd.Parameters.Add這一行。另外,我假設這不是生產代碼,但是你應該在你所有的Sql上使用「using」指令對象以確保它們正確關閉 –

回答

0

你有,你沒有明確規定了對你的表結構的問題是什麼數據類型,你會在其他領域

create table using_user { 
`id` int(11) NOT NULL auto_increment, 
'dx_ip_addr' default NULL, <--- no data type specified 
'scard_type' default NULL, <--- no data type specified 
.... 
} 

使用嘗試

create table using_user { 
    `id` int(11) NOT NULL auto_increment, 
    'dx_ip_addr' int, 
    'scard_type' int, 
    .... 
    } 

問候

+0

謝謝!致命錯誤是我的參數「@dx_ip_addr」的前綴,MySql具有指定的前綴「?」。因此,當我將所有字符「@」更改爲「?」時,每一件事情都很好,再次感謝! – xufeng

+0

這很好 – BizApps