2014-04-30 59 views
0

我正在創建一個WinForm註冊表單,並最近切換了我的整個代碼以刪除我正在獲取的SQL注入。我現在可以註冊用戶以存儲在我的數據庫中,但我無法使用該信息登錄。由於致命錯誤,WinForm不接受來自MySql的用戶輸入

string constring = "datasource=127.0.0.1;port=3306;username=root;password=welcome"; 
string Query = "insert into userdatabase.users (userid, email, passone, passtwo, lastname, firstname) values(@userid,@email,@passone,@passtwo,@lastname,@firstname)"; 
MySqlConnection conDatabase = new MySqlConnection(constring); 
MySqlCommand cmd = new MySqlCommand(Query, conDatabase); 
cmd.Parameters.AddWithValue("userid", this.userid_txt.Text); 
cmd.Parameters.AddWithValue("passone", this.passone_txt.Text); 

try 
{ 
    conDatabase.Open(); 
    cmd.ExecuteNonQuery(); 
    MessageBox.Show("Welcome to iDSTEM!"); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

這是對我的登錄按鈕的代碼,我知道AddWithValue是不是需要存在,但是這就是我現在有存儲的值,想知道我應該將其更改爲。

這是我的代碼,它將我的數據存儲到MySql中。

string constring = "datasource=127.0.0.1;port=3306;username=root;password=welcome"; 
string Query = "insert into userdatabase.users (userid, email, passone, passtwo, lastname, firstname) values(@userid,@email,@passone,@passtwo,@lastname,@firstname)"; 

MySqlConnection conDataBase = new MySqlConnection(constring); 
MySqlCommand cmd = new MySqlCommand(Query, conDataBase); 
cmd.Parameters.AddWithValue("userid", this.userid_txt.Text); 
cmd.Parameters.AddWithValue("email", this.email_txt.Text); 
cmd.Parameters.AddWithValue("passone", this.passone_txt.Text); 
cmd.Parameters.AddWithValue("passtwo", this.passtwo_txt.Text); 
cmd.Parameters.AddWithValue("lastname", this.lastname_txt.Text); 
cmd.Parameters.AddWithValue("firstname", this.firstname_txt.Text); 

try { 
    conDataBase.Open(); 
    cmd.ExecuteNonQuery(); 
    MessageBox.Show("Welcome to iDSTEM!"); 
} 
    catch (Exception ex) 
{ 
     MessageBox.Show(ex.Message); 
    } 

當我運行在日誌中我得到命令執行過程中遇到

致命錯誤

預先感謝任何幫助,或者你能夠給我提示。

回答

1

要登錄,您將不得不使用SELECT * FROM tbl where username = @userid and password = @password而不是您使用的插入語句。 (我假設你提供的第一個代碼是用於登錄的)。然後,代替ExecuteNonQuery,您可以使用ExecuteReaderDataAdapter填充DataSet

您正在收到致命錯誤,因爲您爲登錄(6 - >@userid,@email,@passone,@passtwo,@lastname,@firstname)和提供的(2 - >@userid,@passone)寫入的插入查詢中預期的參數數目不同。

+0

我基於註冊表的登錄關閉,所以感謝指出俯視,我仍然認爲我在哪裏'cmd.Paramters.AddWithValue(「@ userid」,this.userid_txt.Text);'是不是應該給我AddWithValue任何想法? @Manish Dalal – Bendlino

+0

@Bendlino:我認爲AddWithValue可以[http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue%28v=vs.110%29.aspx]另外,似乎使用帶參數名稱的@對於mySQL是可選的(但在參數名稱之前有一個更好的做法@) –