已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package databasevisit;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.sql.Types;import java.util.Vector;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class GeneralTableRecordNavigationFormWithUpdateFunction /* * param args */public static void main(String args) / TODO Auto-generated method stubDemoWindow19 dw = new DemoWindow19(带有更新功能的表记录 导航窗体);dw.pack();dw.setBounds(dw.getToolkit().getScreenSize().width / 2 - dw.getWidth() / 2,dw.getToolkit().getScreenSize().height / 2 - dw.getHeight() / 2,dw.getWidth(), dw.getHeight();dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);dw.setVisible(true);class DemoWindow19 extends JFrame implements ActionListener Transaction19 trans = new Transaction19(test, student1);JPanel jps = null;JPanel controlPanel = new JPanel();JPanel operatePanel = new JPanel();JTextField jtfs = null;JButton jbFirst = new JButton(第一条);JButton jbPrevious = new JButton(上一条);JButton jbNext = new JButton(下一条);JButton jbLast = new JButton(最后一条);JButton jbInsert = new JButton(插入记录);JButton jbUpdate = new JButton(更新记录);JButton jbDelete = new JButton(删除记录);JButton jbCancel = new JButton(取消更新);public DemoWindow19(String title) super(title);setLayout(new GridLayout(trans.getColumnCount() + 3, 1);add(new JLabel(数据库: + trans.getDatabase() + |表: + trans.getTable(),JLabel.CENTER);jps = new JPaneltrans.getColumnCount();jtfs = new JTextFieldtrans.getColumnCount();for (int i = 0; i trans.getColumnCount(); i+) jpsi = new JPanel();jpsi.add(new JLabel(trans.getColumnNames()i);jtfsi = new JTextField(20);jpsi.add(jtfsi);add(jpsi);controlPanel.add(jbFirst);controlPanel.add(jbPrevious);controlPanel.add(jbNext);controlPanel.add(jbLast);add(controlPanel);operatePanel.add(jbInsert);operatePanel.add(jbUpdate);operatePanel.add(jbDelete);operatePanel.add(jbCancel);add(operatePanel);jbFirst.addActionListener(this);jbPrevious.addActionListener(this);jbNext.addActionListener(this);jbLast.addActionListener(this);jbInsert.addActionListener(this);jbUpdate.addActionListener(this);jbDelete.addActionListener(this);jbCancel.addActionListener(this);fill(trans.getFirstRecord();public void fill(String values) for (int i = 0; i trans.getColumnCount(); i+) jtfsi.setText(valuesi);public void actionPerformed(ActionEvent e) if (e.getSource() = jbFirst) fill(trans.getFirstRecord(); else if (e.getSource() = jbPrevious) try fill(trans.getPreviousRecord(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace(); else if (e.getSource() = jbNext) try fill(trans.getNextRecord(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace(); else if (e.getSource() = jbLast) try fill(trans.getLastRecord(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace(); else if (e.getSource() = jbInsert) trans.insertRecord(getAllStrings();trans.load();try fill(trans.getLastRecord(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace(); else if (e.getSource() = jbUpdate) trans.updateRecord(getAllStrings();trans.load();fill(trans.getAbsoluteRecord(trans.getCurrentRow(); else if (e.getSource() = jbDelete) trans.deleteRecord(getAllStrings();trans.load();fill(trans.getAbsoluteRecord(trans.getCurrentRow(); else if (e.getSource() = jbCancel) fill(trans.getAbsoluteRecord(trans.getCurrentRow();public String getAllStrings() String content = new Stringtrans.getColumnCount();for (int i = 0; i trans.getColumnCount(); i+) contenti = jtfsi.getText();return content;class Transaction19 private String database;private String table;private Connection con = null;private Statement stm = null;private ResultSet rs = null;private ResultSetMetaData rsmd = null;private int rowCount = 0;private int columnCount = 0;private String columnNames = null;private String result = null;private int currentRow = 0;public Transaction19(String database, String table) this.database = database;this.table = table;init();load();public void init() try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);con = DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName= + database,sa, jocean);stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public void load() try rs = stm.executeQuery(select count(*) from + table);rs.next();rowCount = rs.getInt(1);rs = stm.executeQuery(select * from + table);rsmd = rs.getMetaData();columnCount = rsmd.getColumnCount();columnNames = new StringcolumnCount;for (int i = 1; i = columnCount; i+) columnNamesi - 1 = rsmd.getColumnName(i);result = new StringcolumnCount; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public int getColumnCount() return columnCount;public String getDatabase() return database;public String getTable() return table;public String getColumnNames() return columnNames;public String getFirstRecord() try rs.first();for (int i = 1; i = columnCount; i+) resulti - 1 = rs.getString(i);currentRow = rs.getRow();System.out.println(rs.getRow(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return result;public String getPreviousRecord() throws SQLException rs.previous();if (rs.isBeforeFirst() rs.first();for (int i = 1; i = columnCount; i+) resulti - 1 = rs.getString(i);currentRow = rs.getRow();System.out.println(rs.getRow();return result;public String getNextRecord() throws SQLException rs.next();if (rs.isAfterLast() rs.last();for (int i = 1; i = columnCount; i+) resulti - 1 = rs.getString(i);currentRow = rs.getRow();System.out.println(rs.getRow();return result;public String getLastRecord() throws SQLException rs.last();for (int i = 1; i = columnCount; i+) resulti - 1 = rs.getString(i);currentRow = rs.getRow();System.out.println(rs.getRow();return result;public void insertRecord(String values) String sql = ;try for (int i = 0; i values.length; i+) if (rsmd.getColumnType(i + 1) = Types.VARCHAR| rsmd.getColumnType(i + 1) = Types.TIMESTAMP) sql += + valuesi + ; else sql += valuesi;if (i values.length - 1)sql += ,; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();try Statement insertStm = con.createStatement();insertStm.execute(insert into + table + values( + sql + ); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public void updateRecord(String values) String sql = ;String whereSQL = ;try for (int i = 0; i values.length; i+) Vector keyFields = getKeyFields();if (rsmd.getColumnType(i + 1) = Types.VARCHAR| rsmd.getColumnType(i + 1) = Types.TIMESTAMP) sql += rsmd.getColumnName(i + 1) + = + valuesi + ;if (keyFields.contains(rsmd.getColumnName(i + 1)whereSQL += rsmd.getColumnName(i + 1) + =+ valuesi + ; else sql += rsmd.getColumnName(i + 1) + = + valuesi + ;if (keyFields.contains(rsmd.getColumnName(i + 1)whereSQL += rsmd.getColumnName(i + 1) + = + valuesi;if (i values.length - 1)sql += ,;Statement updateStm = con.createStatement();updateStm.executeUpdate(update + table + set + sql+ where + whereSQL); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();/ 获取主键字段的函数private Vector getKeyFields() / 主键字段可能包含多个字段,所以使用向量存储Vector key = new Vector();try / 创建数据库元数据类变量DatabaseMetaData dmd = con.getMetaData();/ 得到指定表的主键信息ResultSet keys = dmd.getPrimaryKeys(null, null, table);/ 记录数与主键字段数相等,结果集的第4个字段为字段名称while (keys.next() key.add(keys.getString(4);System.out.println(keys.getString(4)= + keys.getString(4); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return ke
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 常州股权架构协议书
- ipo上市保密协议书
- 挖藕费用协议书
- 萨克斯皮克特协议书
- 2025年传媒行业直播电商合规能力考核试卷-直播产品虚假评论识别与打击专项
- 2025年新能源行业电动汽车充电设施数字孪生仿真技术资格考核试卷
- 2025年农业数字化资格考试·农业遥感·作物种植面积(玉米、大豆)遥感估算考核试卷
- 2025年基层医疗服务能力提升-中医药适宜技术(推拿)治疗儿童常见病考核试卷
- 2025年工业制造行业工业互联网与智能工厂研究报告及未来发展趋势预测
- 2025年疫苗接种规范操作考试:疫苗错误预防机制实施考核试卷
- 贵州省毕节市七星关区第三实验学校2024-2025学年八年级上学期期中检测语文题
- 第7课《短歌行归园田居(其一)》课件部编版高中语文必修上册
- 2023年病历书写基本规范测试题(题库)附答案
- 农村房屋宅基地买卖合同模板
- 全面质量管理考试复习题库(第四版)
- 中心静脉压的测量方法及临床意义
- 七年级体育与健康 身体检查与体质测试教案
- 店铺(初级)营销师认证考试题库附有答案
- 2024智能网联汽车自动驾驶功能仿真试验方法及要求
- 现代通信技术导论智慧树知到期末考试答案章节答案2024年北京科技大学
- 煤矿瓦斯抽放规范(AQ1027-2006)
评论
0/150
提交评论