2017-09-21 72 views
0

這是一個初學mySQL問題。如何正確登錄到mySQL

我在看一些關於mySQL和C#登錄表單的文章和youtubes。當我注意到每個解決方案和文章都使用以「root」帳戶執行登錄的表單開始,然後在數據庫內的用戶密碼錶中進行檢查時。

例如下面的代碼確實是:

public partial class Login_Form_2 : Form 
{ 
    public Login_Form_2() 
    { 
     InitializeComponent(); 
    } 

    //Root level login ?? 
    MySqlConnection connection = new MySqlConnection(
    "datasource=localhost;port=3310;Initial Catalog='test';username=root;password=" 
    ); 

    MySqlDataAdapter adapter; 
    DataTable table = new DataTable(); 

    private void BTN_Login_Click(object sender, EventArgs e) 
    { 
     adapter = new MySqlDataAdapter("SELECT `username`, `password` FROM `users` WHERE `username` = '" + textBox_username.Text + "' AND `password` = '" + textBox_password.Text + "'", connection); 
     adapter.Fill(table); 

     if(table.Rows.Count <= 0) 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Red; 
      label_Message.Text = "Username Or Password Are Invalid"; 
      timer1.Start(); 
     } 
     else 
     { 
      panel1.Height = 0; 
      label_Message.ForeColor = Color.Green; 
      label_Message.Text = "Login Successfully"; 
      timer1.Start(); 
     } 
     table.Clear(); 
    } 
} 

我覺得root密碼不應該在客戶端代碼。

我還想知道這樣的用戶密碼錶是否可以賦予權限。
因此,用戶用戶X被允許添加表格Z的某個字段,但不允許添加到表格Y.

那麼這是否真的是登錄應該看起來像?

回答

0

如果您正在構建客戶端應用程序,我建議您通過API調用來檢索信息。

如果不查看我以前的回答here瞭解我如何直接連接到數據庫。確保您使用Parameters來防止SQL注入。

+0

我很擔心上面的代碼給出了它的連接字符串。它是一個具有'內部'用戶表的數據庫,但它使用mySQL服務器的root帳戶進行日誌記錄,我發現它出現在很多示例中,但我想不通過root登錄,但只能在特定數據庫表中登錄 – user3800527

+0

您永遠不想構建直接連接到數據庫的客戶端應用程序。如果你想訪問數據庫,你應該總是把客戶端和服務器端分開。您可以在您的服務器上構建一個單獨的應用程序來處理這些調用,或者構建一個網站並通過API運行數據。 –