JDBConnection 类

package com.wy.tools;
import java.sql.*;
public class JDBConnection {
private final String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; // 设置SQLServer2000数据库驱动名称
private final String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_templet"; // 设置连接SQLServlet2000的utl地址
private final String userName = "sa"; // 设置登录数据库的用户
private final String password = ""; // 设置登录用户的密码
private Connection con = null; // 设置连接对象,并赋值为null
private Statement stmt = null;
private ResultSet rs = null;

// 创建数据库连接
private boolean creatConnection() {
try {
Class.forName(dbDriver).newInstance(); // 通过Java反射机制进行加载数据库驱动操作
con = DriverManager.getConnection(url, userName, password); // 根据用户名,url地址以及密码进行数据连接操作
con.setAutoCommit(true); // 设置系统的自动连接操作
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
}
// 对数据库的增加、修改和删除的操作
public boolean executeUpdate(String sql) {
boolean flag = false;
if (con == null) { // 当con对象为空,进行creatConnection()方法,实现数据库连接操作
creatConnection();
}
try {
stmt = con.createStatement();
int iCount = stmt.executeUpdate(sql); // 执行参数SQL语句
System.out.println("操作成功,所影响的记录数为" + String.valueOf(iCount)); // 在控制台中显示执行的结果
flag = true; // 如果SQL语句执行成功,返回true
} catch (SQLException e) {
// 如果SQL语句执行失败,返回false
System.out.println(e);
return flag;
}
return flag;
}
// 对数据库的查询操作
public ResultSet executeQuery(String sql) {
// 设置ResultSet结果集对象rs
try {
if (con == null) { // 当con对象为null,取得数据库连接操作
creatConnection();
}
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql); // 执行参数中的SQL语句
} catch (SQLException e) {
return null;
}
return rs; // 将查询的结果通过return关键字进行返回
}

// 关闭数据库的操作
public void closeConnection() {
if (rs != null) { // 关闭ResultSet对象
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
rs = null;
}
}
if (stmt != null) { // 关闭Statement对象
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
stmt = null;
}
}
if (con != null) { // 关闭Connection对象
try {
con.close();
} catch (SQLException e) {
} finally {
con = null;
}
}
}

}
以下是对代码的优化: 1. 将 JTable、JButton 声明为成员变量,方便后面的方法访问。 2. 将 JTable 中的数据从构造函数中移除,改为从数据库中读取,使用 JDBConnection 进行数据库连接和查询。 3. 将按钮的 ActionListener 单独提取出来,作为内部的一个私有方法。 4. 将 JFrame 窗口的设置移到单独的方法中,方便对窗口属性的修改和扩展。 优化后的代码如下: ```java package com.daiinfo.catering.pane; import com.daiinfo.catering.util.JDBConnection; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; public class DishManagePane2 extends JFrame { private JTable table; private JButton addButton, updateButton, deleteButton; public DishManagePane2() { setTitle("菜品管理"); setSize(800, 600); setWindow(); JPanel panel = new JPanel(new BorderLayout()); panel.add(new JScrollPane(table), BorderLayout.CENTER); JPanel buttonPanel = new JPanel(new FlowLayout()); buttonPanel.add(addButton); buttonPanel.add(updateButton); buttonPanel.add(deleteButton); panel.add(buttonPanel, BorderLayout.SOUTH); add(panel); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void setWindow() { addButton = new JButton("增加"); updateButton = new JButton("修改"); deleteButton = new JButton("删除"); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 添加菜品的逻辑 } }); // 从数据库中读取数据并绑定到 JTable 上 try { Connection conn = JDBConnection.getConnection(); Statement stmt = conn.createStatement(); String sql = "select * from dishes"; ResultSet rs = stmt.executeQuery(sql); Vector<Vector<Object>> data = new Vector<>(); while (rs.next()) { Vector<Object> row = new Vector<>(); row.add(rs.getString("name")); row.add(rs.getDouble("price")); row.add(rs.getString("category")); data.add(row); } Vector<String> columnNames = new Vector<>(); columnNames.add("菜品名"); columnNames.add("价格"); columnNames.add("菜品别"); table = new JTable(data, columnNames); } catch (SQLException ex) { ex.printStackTrace(); } } public static void main(String[] args) { new JDBConnection(); new DishManagePane2(); } } ``` 这样,代码就更加清晰、易于维护和扩展了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值