一、项目分为四部分
1、总体设计,检查工作
2、数据库设计,框架设计
3、具体编码
4、界面设计,系统调试
二、连接mysql数据库
我用MySQL装载驱动的方式连接数据库,工程中导入mysql-connector-java-5.1.25-bin.jar
(1)装载驱动程序Class.forName("com.mysql.jdbc.Driver");
(2)定义数据库的地址String DBURL="jdbc:mysql://localhost:3300/wy",jdbc:<子协议>:<子名称>
子协议:数据库驱动程序名或数据库联结机制名。子名称:根据子协议而变化,一般由4部分组成:驱动程序类型,数据库 ip,端口号,数据库名字
(3)连接数据库DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
(4)建立statement对象statement=connection.createStatement();
(5)声明并执行sql语句ResultSet rs=statement.executeQuery(sql1);
(6)对结果集进行处理
private static final String DBDRIVER="com.mysql.jdbc.Driver"; //驱动类类名
private static final String DBURL="jdbc:mysql://localhost:3300/wy"; //连接URL
private static final String DBUSER="root"; //数据库用户名
private static final String DBPASSWORD="12345"; //数据库密码
private static Connection connection=null; //声明一个连接对象
public static Connection getConnection() { //连接数据库
try {
Class.forName(DBDRIVER); //注册驱动
connection=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); //获得连接对象
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
三、设计登陆页面,验证
1、Login方法中Container container=getContentPane();获取当前JPanel,在他的上面添加组件
2、注意布局(setLayout方法)
3、为按钮添加事件okButton.addActionListener,做出响应。
4、验证,查询数据库user表单,与当前输入的比对,正确则弹出主界面
四、JTable,JSCrollPanel控件,AbstractTableModel对象
在JTable表格控件中,数据 与 表格 是分开的,这个分开的意思就是:表格内的数据是单独存放的,从数据库表中读取的数据暂存在Vector对象中,在Java中 JTable的数据是以AbstractTableModel表模式的方式存放的,这个AbstractTableModel就是用来存放数据的,当Table初始化的时候通过AbstractTableModel获取表格的 行数、列数、列标题、以及每个单元格存放的数据,于是当表格现实的时候就可以显示出对应的数据了。AbstractTableModel是抽象类,实现如下方法
JTable table;
JScrollPane scroll;
tm=new AbstractTableModel() {
@Override
public Object getValueAt(int row, int column) {
if(!vector.isEmpty()){
return ((Vector)vector.elementAt(row)).elementAt(column);
}else
return null;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return vector.size();
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return title.length;
}
public String getColumnName(int column){
return title[column];
}
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}//取得列所属对象类
};
table=new JTable(tm);
table.setToolTipText("Display Query Result");
table.setAutoResizeMode(table.AUTO_RESIZE_OFF);
table.setCellSelectionEnabled(false);
table.setShowHorizontalLines(true);
table.setShowVerticalLines(true);
scroll=new JScrollPane(table);
scroll.setBounds(6,20,540,250);
tableJPanel.add(scroll);
}
五、对数据库进行增删改查
add:"insert into table_name(district_id,....)values("+Integer.parseInt(field1.getText())+.....
delete:"delete from community_info where district_id="+Integer.parseInt(field1.getText());
change:"update set district_id="+Integer.parseInt(field1.getText())+....+"WHERE district_id="+Integer.parseInt(field1.getText());
search:"select * from building_info where district_id="+Integer.parseInt(f1.getText());
update:"select * from building_info";
六、在JPanel中添加图片
imageIcon = new ImageIcon("B:/p1.jpg"); //写入文件路径
imageLabel = new JLabel(imageIcon); //初始化JLabel
jpanel = new JPanel();
this.add(BorderLayout.CENTER,jpanel);
this.setVisible(true); //设置为显示
<span style="white-space:pre"> </span> this.pack();
<span style="white-space:pre"> </span> //设置jframe的大小
this.setBounds(new Rectangle(100,100,imageIcon.getIconWidth(),imageIcon.getIconHeight()));
jpanel.add(BorderLayout.CENTER,imageLabel);