小试牛刀-教务信息管理系统(SQL)

本文介绍了一个使用 Java 进行 MySQL 数据库操作的例子,包括连接数据库、执行查询、插入、更新和删除等基本操作,并展示了如何将查询结果填充到表格模型中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package StuAdmin;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;


import javax.swing.JFrame;
import javax.swing.table.DefaultTableModel;


public class SQL extends JFrame {


	private static final long serialVersionUID = 1L;
	public String cases;
	private Connection conn;
	private Statement statement;
	public ResultSet resultSet;


	public SQL() {


		String url = "jdbc:mysql://localhost:3306/stuadmin";
		String username = "root";
		String password = "123456";


		// 加载驱动程序以连接数据库
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException cnfex) { // 捕获加载驱动程序异常
			System.err.println("装载 JDBC/ODBC 驱动程序失败。");
			cnfex.printStackTrace();
			System.exit(1);
		} catch (SQLException sqlex) { // 捕获连接数据库异常
			System.err.println("无法连接数据库");
			sqlex.printStackTrace();
			System.exit(1);
		}
	}


	public Boolean select(String sqltext) { // 查找函数,找到返回true,没找到返回false
		try {
			statement = conn.createStatement();
			resultSet = statement.executeQuery(sqltext);
			if (resultSet.first()) {
				return true;
			}
		} catch (SQLException sqlex) {
			sqlex.printStackTrace();
		}
		return false;
	}


	public int othersql(String sqltext) { // 插入、删除、修改函数,成功返回变化的行数,失败返回0
		int queryaffected = 0;
		try {
			statement = conn.createStatement();
			queryaffected = statement.executeUpdate(sqltext);
		} catch (SQLException sqlex) {
			sqlex.printStackTrace();
		}
		return queryaffected;
	}


	public String getcell(String sqltext) throws SQLException { // 查找指定数据字符串并返回
		String strgetted = null;
		statement = conn.createStatement();
		resultSet = statement.executeQuery(sqltext);
		while (resultSet.next())
			strgetted = resultSet.getString(1);
		return strgetted;
	}


	public int getintcell(String sqltext) throws SQLException { // 查找指定数据字符串并返回
		int strgetted = 0;
		statement = conn.createStatement();
		resultSet = statement.executeQuery(sqltext);
		while (resultSet.next())
			strgetted = resultSet.getInt(1);
		return strgetted;
	}


	@SuppressWarnings({ "rawtypes", "unchecked" })
	public DefaultTableModel getTable(String sqltext) { // 查找数据库内容并将内容赋值到表格模型里并返回
		Object[][] p = {};
		String[] n = { "无相关数据" };
		DefaultTableModel model = new DefaultTableModel(p, n);
		try {
			// 执行SQL语句
			statement = conn.createStatement();
			resultSet = statement.executeQuery(sqltext);


			boolean moreRecords = resultSet.next(); // 定位到达第一条记录


			if (!moreRecords) { // 如果没有记录,则返回空的表格模型
				return model;
			} else { // 记录集不空时
				Vector columnHeads = new Vector(); // 字段
				Vector rows = new Vector(); // 记录
				try {


					ResultSetMetaData rsmd = resultSet.getMetaData();
					for (int i = 1; i <= rsmd.getColumnCount(); ++i)
						columnHeads.addElement(rsmd.getColumnName(i)); // 获取字段的名称


					do {
						rows.addElement(getNextRow(resultSet, rsmd)); // 获取记录集
					} while (resultSet.next());


					model = new DefaultTableModel(rows, // 生成表格模型
							columnHeads) {
						private static final long serialVersionUID = 1L;


						public boolean isCellEditable(int row, int column) {
							return false; // 表格内容不可编辑
						}
					};
				} catch (SQLException sqlex) {
					sqlex.printStackTrace();
				}
			}
		} catch (SQLException sqlex) {
			sqlex.printStackTrace();
		}
		return model; // 返回表格模型
	}


	@SuppressWarnings({ "rawtypes", "unchecked" })
	private Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd) // 获取下一条记录,被getTable调用
			throws SQLException {
		Vector currentRow = new Vector();


		for (int i = 1; i <= rsmd.getColumnCount(); ++i)
			currentRow.addElement(rs.getString(i));


		return currentRow; // 返回一条记录
	}


	public void shutDown() { // 断开数据库连接


		try {
			conn.close();
		} catch (SQLException sqlex) {
			System.err.println("Unable to disconnect");
			sqlex.printStackTrace();
		}
	}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值