📄 setsql.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.redingsoft.sql;import java.sql.*;import javax.swing.JComboBox;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.table.DefaultTableModel;/** * * @author Administrator */public class SetSQL { //声明理解数据库的对象 static Connection conn=null; static Statement ste=null; static{ try{ //注册驱动 //JDBCODBC连接方式 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ce){ JOptionPane.showMessageDialog(null, "没有找到数据库驱动"); System.exit(0); } //注册驱动 try{ //获得一个连 conn = DriverManager.getConnection ("jdbc:odbc:source" ); //设置自动提交为false conn.setAutoCommit (false); //建立高级载体 ste = conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); }catch(SQLException e){ JOptionPane.showMessageDialog(null, "数据源设置错误或者服务器没有启动!"); System.exit(0); } } //构造函数 /**=======================================================================** * [## private sunsql() {} ]: 构造函数 * 参数 :无 * 返回值 :无 * 修饰符 :private * 功能 :防止实例化sunsql对象 **=======================================================================** */ public SetSQL(){} /**=======================================================================** * [## public static int executeUpdate(String sql) {} ] : * 参数 :String 对象, 表示需要执行的sql语句 * 返回值 :int, 表示此sql语句对数据库影响了几行 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :执行对数据库更改的sql命令,并返回更改所影响的行数 **=======================================================================** */ public static int executeUpdate(String sql) { // System.out.println ("Update SQL : " + sql); int i = 0 ; try { i = ste.executeUpdate(sql) ; conn.commit(); }catch(Exception e) { e.printStackTrace() ; }//End try return i ; } /**=======================================================================** * [## public static int runTransaction (String updateCode[],int count) {} ] : * 参数 :String[]是字符串数组, 表示需要执行的所有sql语句 count 是执行语句的数量 * 返回值 :int, 表示sql语句执行的情况, (i==数组长度)为更新成功 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :利用事务的模式以updateCode中的sql语句对数据库进行更新 **=======================================================================** */ public static int runTransaction (String updateCode[],int count) { int ok = 0, i = 0; int row = count; //更新语句的数量 System.out.println(""+ updateCode[0]); try { for (i = 0; i < row; i++) { ok=executeUpdate(updateCode[i]); //执行SQL语句 if(ok == 0) { //如果不成功,则跳出循环 // System.out.println ("sunsql.runTransaction(): updateCode[" + i + "] 失败" + ok); break; } System.out.println ("sunsql.runTransaction(): updateCode[" + i + "] 成功 " + ok); } //根据变量 ok 判断上面循环是否正常运行完毕 if(ok == 0) { conn.rollback (); //(ok == 0)表示更新过程中出错,回滚数据 // System.out.println ("sunsql.runTransaction(): Update data false, rollback"); } else { conn.commit (); //(ok != 0)基本上是所有SQL语句运行成功, 则提交给数据库 // System.out.println ("sunsql.runTransaction(): Update finish"); } } catch (Exception ex) { // System.out.println ("sunsql.runTransaction(): Update false ..."); // System.out.println(row +""); } return i; } /**=======================================================================** * [## public static ResultSet executeQuery(String sql) {} ] : * 参数 :String 对象, 表示需要执行的sql语句 * 返回值 :ResultSet对象, 表示此查询语句返回的结果集 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :执行对数据库的select查询功能,并返回查询所得到的结果 **=======================================================================** */ public static ResultSet executeQuery(String sql) { // System.out.println ("Query SQL : " + sql); ResultSet rs = null ; try { rs = ste.executeQuery(sql) ; }catch(Exception e) { e.printStackTrace() ; // JOptionPane.showMessageDialog(null, "数据源设置错误或者服务器没有启动!"); }//End try return rs ; } /**=====================hj==================================================** * [## public static int recCount(ResultSet rs)) {} ] : * 参数 :ResultSet 对象, 表示目标结果集 * 返回值 :int, 表示结果集中的记录个数 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :获得指定结果集的记录数量 **=======================================================================** */ public static int recCount(ResultSet rrs) { int i = 0; try { if(rrs.getRow() != 0) rrs.beforeFirst(); //while用于计算rs的记录条数 while(rrs.next()) i++; rrs.beforeFirst(); }catch(Exception ex) { ex.printStackTrace(); }//End try return i; } /**=======================================================================** * [## public static long getPrimaryKey() {} ] : * 参数 :无 * 返回值 :long, 表示从服务器获得的主键 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :通过服务器当前的时间获得一个主键 **=======================================================================** */ public static long getPrimaryKey() { long pk = 0; try { //获得服务器时间 ResultSet rs = executeQuery("select getdate()"); rs.next(); pk = rs.getTimestamp(1).getTime(); } catch (Exception ex) { System.out.println ("sunsql.getPrimaryKey (): false"); } return pk; } /**=======================================================================** * [## public static void initJComboBox (JComboBox cb, String sqlCode) {} ] : * 参数 :JComboBox表示要加数据的下拉框, String对象表示一条SQL语句 * 返回值 :JComboBox, 表示返回一个加好Item的JComboBox对象 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :按SQL语句从数据库选出Items加入JComboBox **=======================================================================** */ public static void initJComboBox (JComboBox cb, String sqlCode) { cb.removeAllItems(); try { ResultSet rs = executeQuery (sqlCode); int row = recCount (rs); rs.beforeFirst (); //从结果集中取出Item加入JComboBox中 for (int i = 0; i < row; i++) { rs.next(); cb.addItem (rs.getString (1)); } } catch (Exception ex) { System.out.println ("sunsql.initJComboBox (): false"); } } /**=======================================================================** * [## public static void initJList (JList jt, String sqlCode) {} ] : * 参数 :JList表示要加数据的列表框, String对象表示一条SQL语句 * 返回值 :无 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :按SQL语句从数据库选出数据加入JList **=======================================================================** */ public static void initJList (JList jt, String sqlCode) { try { ResultSet rs = executeQuery (sqlCode); int row = recCount (rs); String list[] = new String[row]; //从结果集中取出数据存入数组中 for (int i = 0; i < row; i++) { rs.next(); list[i] = rs.getString(1); }//Endfor jt.setListData(list); //初始化List } catch (Exception ex) { System.out.println ("sunsql.initJList(): false"); }//Endtry } /**=======================================================================** * [## public static void initDTM (DefaultTableModel fdtm, String sqlCode) {} ] : * 参数 :DefaultTableModel对象表示要添充数据的表模式 * String对象表示一条SQL语句 * 返回值 :无 * 修饰符 :public static 可以不实例化对象而直接调用方法 * 功能 :按SQL语句从数据库中获得数据,添加到fdtm中(也可以说JTable中) **=======================================================================** */ public static void initDTM (DefaultTableModel fdtm, String sqlCode) { try { ResultSet rs = executeQuery( sqlCode ); //获得结果集 int row = recCount( rs ); //获得结果集中有几行数据 ResultSetMetaData rsm =rs.getMetaData(); //获得列集 int col = rsm.getColumnCount(); //获得列的个数 String colName[] = new String[col]; //取结果集中的表头名称, 放在colName数组中 for (int i = 0; i < col; i++) { colName[i] = rsm.getColumnName( i + 1 ); }//End for rs.beforeFirst(); String data[][] = new String[row][col]; //取结果集中的数据, 放在data数组中 for (int i = 0; i < row; i++) { rs.next(); for (int j = 0; j < col; j++) { data[i][j] = rs.getString (j + 1); //System.out.println (data[i][j]); } }//End for fdtm.setDataVector (data, colName); } catch (SQLException ex) { System.out.println ("sunsql.initDTM (): false"); JOptionPane.showMessageDialog(null, "数据源设置错误或者服务器没有启动!"); }//End try }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -