[英]use stored database info to execute sql queries java
我是Java的新手,我有c#的經驗,我也想嘗試一下java,因為它是我uni中使用的編程語言。
用c#完成一些項目后,我注意到我犯的一個重大錯誤是我沒有將數據庫連接詳細信息存儲在一個地方。 (我每次執行查詢時都會包含連接字符串)
我為初學者創建了一個簡單的登錄表單。
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;
}
}
這是“登錄”按鈕事件
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String username = usernameText.getText(); // username textbox value
String password = passwordText.getText(); // password textbox value
}
我如何在Login.java中使用sqlDB.java中的數據庫連接來執行查詢
"'Select user,pass from login where user='"+username+"' and pass='"+password+"'
然后檢查要登錄的數字或行。
可以使用數據庫檢查憑據,這取決於您使用的數據庫。 例如,您可以執行以下操作: 檢查SQL登錄憑據
因為您沒有提到要使用的數據庫,所以繼續尋找適合您系統的解決方案。
其他選項是將密碼存儲在本地(加密)並離線比較。
或者,您可以簡單地對將始終包含某些內容的表執行SQL查詢(例如Select * From Humans Where HumanID = 1;
),然后檢查是否獲得結果,但這有點草率和不良做法。
這是用於初始化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;
}
}
這是一個簡單的Java表單,它使用SQL連接檢查數據庫中是否存在某些記錄(簡單登錄表單)。
登錄按鈕單擊事件觸發以下代碼
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);
}
該代碼的主要目的是將SQL連接保存在另一個Java文件中,並在整個程序中使用該連接,因此您不必每次升級或更改SQL Server時都更改服務器設置。 只需修改SQL Connection文件即可!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.