2017-10-16 79 views
0

即時通訊新的Java,我在c#中的經驗,我想嘗試java,因爲它是我的uni使用的編程語言。
在用c#完成一些項目後,我發現我犯的一個重大錯誤是我沒有在一個地方存儲數據庫連接細節。 (我曾經包括連接字符串每次我執行一個查詢)
我創建一個簡單的登錄表單爲初學者。使用存儲的數據庫信息來執行sql查詢java

sqlDB.java

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 


public class sqlDB{ 



    public Connection connect() { 
    Connection con = null; 
    String url = "jdbc:sqlserver//SERVER IP"; 
    String db = "DBNAME"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String user = "USERNAME"; 
    String pass = "PASSWORD"; 
    try { 
     Class.forName(driver); 
     con = DriverManager.getConnection(url + db, user, pass); 
     if (con == null) { 
      System.out.println("Connection cannot be established"); 
     } 
     return con; 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return null; 
} 



} 

Login.java

這是登錄按鈕事件

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

     String username = usernameText.getText(); // username textbox value 
     String password = passwordText.getText(); // password textbox value 
    }  

如何使用在sqlDB.java在登錄數據庫連接。 java,執行查詢如

"'Select user,pass from login where user='"+username+"' and pass='"+password+"' 

然後檢查一些或多行登錄..

回答

0

有可能檢查您的憑據與您的數據庫,它取決於您使用的數據庫。例如,你可以做這樣的事情:Check credentials of SQL Login

Scince你沒有提到你使用什麼數據庫,繼續尋找適合你的系統的解決方案。

其他選項是在本地存儲密碼(加密)並離線比較。

或者你可以簡單地對一個總是包含一些東西(如Select * From Humans Where HumanID = 1;)的表執行一個SQL查詢,並檢查你是否得到一個結果,但這是一種草率和不好的做法。

+0

我使用MS SQL,我問如何使用返回的'con'在sqDB.java窗體中login.java來執行SQL查詢 –

+0

因此,您只想知道如何執行SQL querry? –

0

這是初始化MS SQL連接
文件名的Java代碼:DatabaseCon.java

/** 
* 
* @author Charindu Edirisuriya 
*/ 
package dash.control; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 


public class DatabaseCon{ 



    public Connection connect() { 

    Connection con = null; 
     String url = "jdbc:sqlserver://HOST;DatabaseName=DATABASENAME"; 
     String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
     String user = "USERNAME"; 
     String pass = "PASSWORD"; 
    try { 
     Class.forName(driver); 
     con = DriverManager.getConnection(url, user, pass); 
     if (con == null) { 
      System.out.println("Connection cannot be established"); 
     } 
     return con; 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return null; 
} 



} 

這是使用SQL連接,檢查一個簡單的Java窗體如果某些記錄存在於數據庫中(簡單登錄表單)。

登錄按鈕的Click事件觸發以下代碼

Connection connection; 
PreparedStatement ps; 

String username = usernameText.getText(); // Usename Textbox 
String password = String.valueOf(passwordText.getPassword()); //Password Textbox 


try{ 
    DatabaseCon db = new DatabaseCon(); 
    connection = db.connect(); 
    ps = connection.prepareStatement("SELECT Username, Password FROM Login WHERE Username = ? AND Password = ?"); 
    ps.setString(1, username); 
    ps.setString(2, password); 
    ResultSet result = ps.executeQuery(); 
    if(result.next()){ 
     System.out.println("Login Successesfully"); 
     new Main_Form().setVisible(true); //Loads new Form 
     this.setVisible(false); 



     } 
     else{ 
      System.out.println("Invalide Username Or Password"); 

     } 
    } 
    catch(Exception e) { 
    System.out.println(e); 
    JOptionPane.showMessageDialog(null, "Check your Internet Connection!","Iane error",JOptionPane.ERROR_MESSAGE); 
} 

這段代碼的主要目的是保存在不同的Java文件中的SQL連接和使用整個程序的連接,所以你不會有每次更改服務器設置以升級或更改SQL Server。只需修改SQL連接文件即可!