【发布时间】:2015-05-04 04:25:34
【问题描述】:
我创建了一个名为DBConnection 的类来连接sql 数据库。我还有一个名为 AdminLogin 的 jFrame。我想知道的是,如何将数据库连接传递给 AdminLogin 类,而无需键入整个数据库连接代码。
这是我的 DBConnection 类
package ltdasystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBConnection {
private Connection conn = null;
private String query = null;
private ResultSet rs;
private final String url=("jdbc:sqlserver://localhost:1433;databaseName=LeisureToursDatabase");
private final String usrName = "sa";
private final String pwd= "p@ssword13";
public DBConnection() {
try{
conn = DriverManager.getConnection(url, usrName, pwd);
query = "SELECT * from UserATable";
PreparedStatement stm = conn.prepareStatement(query);
rs = stm.executeQuery();
while (rs.next()){
String userName = rs.getString("Username");
String password = rs.getString("Password");
System.out.println("Username : " + userName + "\n" + "Password : " + password);
}
conn.close();
}catch (SQLException e){
System.out.println(e.getMessage());
}
}
}
这是我的 AdminLogin。我现在做的方法很好,但我想不用输入所有的数据库连接代码。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
*
* @author Yasitha
*/
public class AdminLogin extends javax.swing.JFrame {
Connection conn = null;
String query = null;
ResultSet rs;
private final String url=("jdbc:sqlserver://localhost:1433;databaseName=LeisureToursDatabase");
private final String usrName = "sa";
private final String pwd= "p@ssword13";
/**
* Creates new form AdminLogin
*/
public AdminLogin() {
initComponents();
}
private void LoginButtonActionPerformed(java.awt.event.ActionEvent evt) {
//DBConnection db = new DBConnection();
try{
conn = DriverManager.getConnection(url, usrName, pwd);
query = "SELECT * FROM UserATable WHERE Username = '" + userName.getText()
+ "' AND Password = " + password.getText();
PreparedStatement stm = conn.prepareStatement(query);
rs = stm.executeQuery();
if(rs.next()){
dispose();
String x = rs.getString("Username");
AdminMenu admenu = new AdminMenu();
admenu.setVisible(true);
admenu.generate(x);
}
}catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
//return null;
} finally {
}
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AdminLogin().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton BackButton;
private javax.swing.JButton LoginButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPasswordField password;
private javax.swing.JTextField userName;
// End of variables declaration
}
【问题讨论】:
-
将
DBConnection更改为更像工厂,它提供了您可以请求它代表您进行查询的方法。也使用构造函数为连接属性播种,然后简单地将DBConnection的实例传递给需要对数据库进行查询的类
标签: java swing jdbc jframe database-connection