2014-05-13 36 views
-3

謝謝大家! 我試圖通過創建這個方法來做到這一點,但它不工作 私人無效button2_Click(對象發件人,EventArgs的){ 檢查用戶是否存在於oracle數據庫窗體(C#)中?

 string oradb = "Data Source=ORCL;User Id=ADMIN;Password=123;"; 

     OracleConnection conn = new OracleConnection(oradb); 

     conn.Open(); 
     OracleCommand cmd = new OracleCommand(); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT * FROM TABLE_USER WHERE USER_ID=" + textBox1.Text + " AND PASS=" + textBox2.Text + ";"; 
     OracleDataReader reader = cmd.ExecuteReader(); 
     try 
     { 

      if (!reader.Read()) 
      { MessageBox.Show("User Name Not Found"); } 

      else 
      { 
       MessageBox.Show("Login Success"); 
      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
} 

埃羅:ORA-00911:無效字符?

誰能幫我解決我的問題?非常感謝你!

+0

您需要解釋「不工作」的含義。 –

+0

錯誤:ORA-00911:無效字符? – user3632292

+0

你也不應該粘貼在一起的字符串;改用SQL準備語句。文本框中的值是多少?錯誤消息似乎很清楚。 – chrylis

回答

0

你需要像

cmd.ExecuteReader() 

cmd.ExecuteScalar() 

執行命令在你的代碼中,我看不到的地方和你是如何執行查詢。

1

試試這個:

cmd.CommandText = "SELECT 1 FROM TABLE_USER WHERE USER_ID="+textBox1.Text+" AND PASS="+textBox2.Text"; 
bool exists = Convert.ToBoolean(cmd.ExecuteScalar()); 

if(exists) 
{ 
    MessageBox.Show("LOGIN SUCCESS"); 
} 
else 
{ 
    MessageBox.Show("LOGIN NOT SUCCESS"); 
} 

請注意,您必須使用參數而不是串聯,以避免SQL注入。

0
 try 
    { 
     conn.Open(); 
     OracleDataReader reader = cmd.ExecuteReader(); 


     if (!reader.Read()) 
     { MessageBox.Show("User Name Not Found"); } 

     if (!password.Equals(reader["password"].ToString())) 
     { 
      status=true; 
      MessageBox.Show("Incorrect Password"); 

     } 
     else { 
       MessageBox.Show("Login Success"); 
      } 

    }catch(Exception ex) 
     { 
     MessageBox.Show(ex.ToString()); 
     status=false; 
     } 
+0

非常感謝,但我的問題沒有解決 – user3632292

相關問題