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

 

posted @ 2016-12-01 11:18  WillingTong  阅读(510)  评论(0编辑  收藏  举报