DB2 亲身实例(GUI界面) 加 笔记和注意事项
来源:互联网 发布:python web编程 编辑:程序博客网 时间:2024/06/08 10:08
import java.lang.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import java.sql.*;import java.util.*;import javax.swing.table.DefaultTableModel;//一开始总是点击按钮不动,后来发现是忘记给控件添加监听器了public class tbGui extends JFrame implements ActionListener {/** * */private static final long serialVersionUID = 1L;JTable a;//先定义一个JTable类型JPanel b=new JPanel();//JPanelJButton putinS=new JButton("单行插入");JButton putinDuo=new JButton("多行插入");JButton putinDan=new JButton("子查询插入");JTextField sole=new JTextField();//单行插入JTextArea duo=new JTextArea();//多行插入JTextField dan=new JTextField();//子查询插入public DefaultTableModel tableModel;//建立表格模型对象JScrollPane duoInsert;//用于多行插入的上下滑动JScrollPane scrollPane;Connection sample;//用于连接数据库//SQL语句//Statement对象是用于SQL语句操作的,一般一次性存储操作用Statement。批量的情况下用PreparedStatementContainer nn;public tbGui(){super("JTempl数据表\n");Object[][] playerInfo={//创建表格中的数据,Templ中是num和name{new Integer(1000),"王鹏"},{new Integer(1001),"朱雀"},{new Integer(1002),"大鲨鱼"}};String[] Names = { "学号" , "姓名" };tableModel=new DefaultTableModel(playerInfo,Names);//建立JTableModel模板a=new JTable(tableModel);//构建JTable控件,利用DefaultTableModel模板,方便以后增加删除行//a.setPreferredScrollableViewportSize(new Dimension(550,100));scrollPane = new JScrollPane(a);//为JTable a建立一个区域 scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//显示水平滑动栏 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//显示竖直滑动栏 nn=getContentPane();nn.setLayout(null);//自由布局duoInsert=new JScrollPane(duo);duoInsert.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//显示水平滑动栏duoInsert.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//显示竖直滑动栏nn.add(scrollPane);nn.add(putinS);nn.add(putinDuo);nn.add(sole);nn.add(duoInsert);nn.add(putinDan);//nn.add(dan);putinS.addActionListener(this);//在类内定义监听器时候用thisputinDuo.addActionListener(this);putinDan.addActionListener(this);sole.setBounds(10, 350, 400, 50);duoInsert.setBounds(10, 500, 400, 100);putinDuo.setBounds(430,500,100,100);putinS.setBounds(430, 350, 100, 50);scrollPane.setBounds(10,30,500,300);dan.setBounds(10, 650, 400, 50);putinDan.setBounds(430,650,100,50);nn.add(b);setSize(900,900);setVisible(true);try {//错误根源sample = DriverManager.getConnection("jdbc:db2:sample","db2admin","db2admin");//连接数据库sample.setAutoCommit(false);} catch (SQLException e) {// TODO 自动生成的 catch 块JOptionPane.showMessageDialog(null, "数据库错误", "找不到该数据库",JOptionPane.ERROR_MESSAGE);e.printStackTrace();} nn.add(b);Show();setSize(900,900);setVisible(true);} static { try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");//Class.forName用来加载字符串所对应的类, //这样子DriverManager就可以使用了 } catch (Exception e) { System.out.println ("\n Error loading DB2 Driver...\n"); System.out.println (e); System.exit(1); } }public void Show()//显示数据库中的数据到JTable上{try{String sql="select * from admin.TEMPL";//创建Sql语句,表前面要根据用户的不同添加不同的用户,比如admin用户,建立了templ表System.out.println("");PreparedStatement stmt=sample.prepareStatement(sql);//创建Sql语句陈述,用来excuteResultSet rs=stmt.executeQuery();if(rs==null){System.out.println("结果集无数据");return;}//如果表没有数据应该返回ResultSetMetaData rest=rs.getMetaData();//得到列数,变量类型等需要这个列int row=rs.getRow();int colum=rest.getColumnCount();//得到列数for(int i=0;i<=row-1;i++){String[] ggget=new String[colum];for(int j=0;j<=colum-1;j++){ggget[j]=rs.getString(j);}tableModel.addRow(ggget);if(!rs.next()){break;}}//得到了TEMPL表中的所有数据并且进行显示}catch(Exception e){System.out.println(e.getMessage());}}public static void main(String[] args){tbGui nn=new tbGui();nn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {// TODO 自动生成的方法存根if(e.getSource()==putinS){try{String sql="insert into admin.TEMPL (NUM,NAME) values(?,?)";PreparedStatement sss=sample.prepareStatement(sql);//String ppp=sole.getText();//获取输入的数据int blank=0;String num="";String name="";//String[] sub=ppp.split(" ");//这种正则表达式拆分空格的方法是错误的String[] sub=ppp.split("\\s+");//正确方法,\s表示任何空白字符,由于有\所以是 "\\s"if(sub.length>2) {System.out.println("输入不符合格式 重新输入");return;}name=name+sub[1];num=num+sub[0];int inNum=Integer.parseInt(num);//将数字字符串转化为整型sss.setInt(1, inNum);sss.setString(2, name);sss.executeUpdate();//更新操作在设置完变量的值之后,它是相当于//preparedstatement对象sss已经编译好了,并且设置好了变量的值,然后这个时候才能用它去执行,否则会报sqlcode:07001错误String[] valu= {num,name};tableModel.addRow(valu);sample.commit();//必须要有提交操作!!!!!否则就算executeUpdate()了也没有用}catch(Exception x){ System.out.println(x.getMessage());}}//单行插入if(e.getSource()==putinDuo){}//多行插入if(e.getSource()==putinDan){}//子查询插入}}
阅读全文
0 0
- DB2 亲身实例(GUI界面) 加 笔记和注意事项
- 除去 DB2 实例(Linux 和 UNIX)
- 浅述GUI和AWT(实例详解)
- AutoHotkey GUI (界面)
- JAVA-GUI练习实例,QQ登录界面
- db2注意事项
- DB2安装步骤和一些注意事项
- 【Java学习笔记】GUI界面之小游戏
- Matlab GUI界面 (转)
- Matlab GUI界面(转)
- DB2数据库代码页和实例代码页的区别(解决DB2乱码问题)
- python GUI 和命令行界面的区别
- GUI界面
- 安装DB2(ver10.1)注意事项
- matlab GUIDE 和GUI笔记
- DB2 启动和关闭、操作实例
- 亲身实践win7和ubuntu14.10双系统的安装以及win7系统重装后系统引导界面的修复
- db2实例
- 关于卡方检验计算的方法(1)
- 一步两步,学习大数据(四)——IDEA 搭建hadoop mapreduce程序
- 程旭媛产后复出的第一道坎
- FPGA基础知识之3——DCM时钟管理单元
- web.xml中的那些标签和意义
- DB2 亲身实例(GUI界面) 加 笔记和注意事项
- bzoj 1201 Intervals (考试原题 · 差分约束)
- Linux字符串截取命令
- python日常知识点相关补充
- faster RCNN的c++接口 通过用c++重写RPN层实现
- SAD和SATD的区别与几个名词解释
- [JSOI2008]星球大战starwar
- Dynamic CRM 2016使用WEB API FetchXml查询特定记录(js)
- 使用jQuery.print.js打印