JDBC的链接与操作数据库--电话号码查询系统
1如何链接数据库
首先要有驱动文件如果是sqlserver就下sql的驱动,mysql就下mysql的驱动,在eclipse中build path>>add external archives>>你下的文件
以MySQL为例代码测试如下
package com.cn.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBC_Connection { static String drivername ="com.mysql.jdbc.Driver"; static String url="jdbc:mysql://localhost:3306/bank"; static String username="root"; static String password="root"; static{ try { Class.forName(drivername);//创建驱动 System.out.println("创建驱动成功!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection(){ Connection conn = null; try { //连接数据库 conn = (Connection) DriverManager.getConnection(url, username, password); System.out.println("连接数据库成功!"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } /** * 该方法用于关闭结果集、连接和Statement对象。 * @param rs * @param conn * @param stmt */ public static void free(ResultSet rs,Connection conn ,Statement stmt){ try { if(rs !=null) rs.close();//关闭结果集 } catch (SQLException e) { System.out.println("关闭ResultSet失败!"); e.printStackTrace(); }finally { try { if(conn != null) conn.close();//关闭连接 } catch (SQLException e) { System.out.println("关闭Connection失败!"); e.printStackTrace(); }finally{ try { if(stmt != null) stmt.close();//关闭Statement对象 } catch (SQLException e) { System.out.println("关闭Statement失败!"); e.printStackTrace(); } } } } public static void main(String[] args) { // 调用该类的getConnection方法,测试连接是否成功 JDBC_Connection.getConnection(); } }
这里只是测试可不可以连接数据库//我用的是mysql+navicat
2.链接后如何操作数据库
增加,更新,插入,删除,
一开始看的是<<java数据库详解>>这本书,书的源码待会给出,初步看到了如何操作数据库.
大体思路如下:构建所需的界面,设置监听器,讲输入的内容传入sql语句,将返回结果集以自定义表格的形式输出.
例如在这个学期的课程设计:
电话号码查询系统
界面稍微简陋,主要以学习为目的
1.首先主界面如下 tel_ms.java
查询的表格如下
录入信息
主要的功能大致这么多,等会给出源码;
首先主要的查询类 QueryJFrame.java,因为其他的功能都可以通过本类的知识点基本做的出来(学会sql在java中的执行)
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class QueryJFrame extends JFrame implements ActionListener { JMenuBar jm =new JMenuBar(); //创建一个工具条对象 JMenu jmexit =new JMenu("退出"); //创建文件菜单对象,显示“信息” JMenuItem jmiexit=new JMenuItem("退出"); Connection conn; public QueryJFrame(String driver,String url,String table) throws ClassNotFoundException, SQLException { super(table); setBounds(300,240,700,320); setDefaultCloseOperation(EXIT_ON_CLOSE); Class.forName(driver);//指定jdbc驱动程序,本人用的是mysql conn=DriverManager.getConnection(url);//返回数据库连接对象 //请无视这个菜单栏..偷懒写的 JTable jtable =query(table);//执行数据查询,创建表格 this.setJMenuBar(jm); jm.add(jmexit); jmexit.add(jmiexit); jmiexit.addActionListener(this); getContentPane().add(new JScrollPane(jtable)); setVisible(true); } public JTable query(String table) throws SQLException { String sql="select * from people"; DefaultTableModel tablemodel =new DefaultTableModel();//表格模型 Statement stmt=conn.createStatement();//创建语句对象 ResultSet reSet=stmt.executeQuery(sql);//执行查询语句 ResultSetMetaData rsmd=reSet.getMetaData();//返回表属性对象 int count =rsmd.getColumnCount();//获得列数 for (int j = 1; j <=count; j++) //将各列名添加到表格模型作为标题,列序号>=1; { tablemodel.addColumn(rsmd.getColumnLabel(j)); } Object[] columns =new Object[count];//创建列对象数组.数组长度为列数 while(reSet.next())//迭代遍历结果集,从前向后访问每行 { for (int j = 1; j <=columns.length; j++) columns[j-1]=reSet.getString(j); tablemodel.addRow(columns);//表哥模型添加一行.参数指明各列值; } reSet.close(); stmt.close(); return new JTable(tablemodel);//创建表格指定表格模型 } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==jmiexit) { setVisible(false); } } }
电话号码查询系统源码:http://pan.baidu.com/s/1nuSrKoh
系统目前完善中,后续会更新
java数据库详解代码:http://pan.baidu.com/s/1pLEWqTX