我使用C#visual studio從本地MySQL數據庫創建登錄表單。然而,每次我輸入信息時,都會告訴我用戶名和/或密碼不正確,我知道這是錯誤的。 這裏是代碼:C#MySQL無法識別輸入
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace Dark_Heresy
{
public partial class Form1 : Form
{
private MySqlConnection connection = new MySqlConnection();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_Login_Click(object sender, EventArgs e)
{
try
{
String MyConnection = "datasource = localhost; port = 3306; username = root; password = Mypass;";
MySqlConnection MyConn = new MySqlConnection(MyConnection);
MySqlCommand SelectCommand = new MySqlCommand("SELECT * FROM dark_heresy.users WHERE users_='"+ this.TextUserName.Text + "' and password_='"+ this.TextPassword.Text + "';", MyConn);
MySqlDataReader MyReader;
MyConn.Open();
MyReader = SelectCommand.ExecuteReader();
int count = 0;
while (MyReader.Read())
{
count = count++;
}
if (count == 1)
{
MessageBox.Show("Connection Successful");
}
else if (count > 1)
{
MessageBox.Show("Duplication of Username and Password... Access Denied");
}
else
MessageBox.Show("Incorrect Username and/or Password");
MyConn.Close();
}
catch (Exception exp)
{
MessageBox.Show("Error: \r\n" + exp);
}
}
}
}
在MySQL工作臺它的工作,它讓我看到「用戶」與它的「密碼」時進行此查詢:
SELECT * FROM dark_heresy.users WHERE users_='admin' and password_='adminpass';
的連接工作正常,它有已經過測試,但總是得到結果「不正確的用戶名和/或密碼」。
要解決的第一件事就是停止像這樣創建SQL - 使用參數化SQL。有關原因,請參閱http://www.bobby-tables.com。接下來,停止在數據庫中以明文形式輸入密碼。理想情況下,使用其他人編寫的認證系統......實際上沒有理由把自己放在一起,而且會讓用戶的安全處於危險之中。 – 2014-11-21 17:13:47
噢,對於需要計算記錄數的類似情況,請在查詢中使用COUNT並使用ExecuteScalar來執行它。 – 2014-11-21 17:14:47
並且你不需要計數,只要檢查一行的存在,使用'EXISTS'。 – HABO 2014-11-21 17:19:13