jdbc+mysql实例,JDBC介绍+MySQL连接实例

JDBC介绍—MySQL连接实例

1.JDBC是Java语言访问数据库的一种规范,是一套API,即Java数据库编程接口。

2.JDBC采用接口和实现分离的设计思想,它的接口包含在java.sql和javax.sql包中,其中java.sql属于JavaSE,javax.sql属于JavaEE。这些接口的实现类叫做数据库驱动程序,由数据库的厂商或其它的厂商或者个人提供。

3.为了使客户端独立于特定的数据库驱动程序(独立于厂商),JDBC规范建议开发者使用基于接口的编程方式,即尽量使用仅依赖java.sql和javax.sql的接口和类(java的多态使得客户端不用依赖具体厂商开发的驱动程序,实现客户端的通用性)。

4.JDBC工作示意图:

0818b9ca8b590ca3270a3433284dd417.png

5.JDBC类结构:DriverManager、Driver、Connection、Statement、ResultSet、

l DriverManager:是一个实现类,属于工厂类,用来产生Driver对象。

l Driver:是驱动程序对象的接口,指向一个实实在在的数据库驱动程序对象,通过DriverManager的getDriver(String URL)方法获得。

l Connection:这个接口指向一个数据库连接对象,通过DriverManager的getConnection(String URL)方法获得。

l Statement:是用于执行静态的SQL语句的接口,通过Connection的createStatement()方法获得。

l ResultSet:用于指向结果集对象的接口,通过Statement的execute等方法获得。

6.Java通过JDBC访问数据库的步骤:

l 得到数据库的驱动程序

l 创建数据库连接

l 执行SQL语句

l 得到结果集

l 对结果集做相应的处理(增删改查)

l 关闭资源

时序图如下所示:

0818b9ca8b590ca3270a3433284dd417.png

7.运行要求:使用JDBC访问MySQL数据库的时候需要加入jar包,即驱动程序包。

a) 驱动程序包名:mysql-connector-java-5.0.4-bin.jar

b) 驱动类名称:com.mysql.jdbc.Driver

c) URL:jdbc:mysql://10.1.40.61:3306/dbname?user=root&password=root

8.实际例子:

public class DB1 {

/**

*@paramargs

*/

public static void main(String[] args) {

//TODOAuto-generated method stub

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

String sql;

// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值

// 为了避免中文乱码要指定Unicode和characterEncoding

// 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定

String url = "jdbc:mysql://10.1.40.61:3306/test_bid_system?"

+"user=root&password=root&Unicode=true&characterEncoding=UTF8";

try{

// 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,

Class.forName("com.mysql.jdbc.Driver");//动态加载mysql驱动

//一个Connection代表一个数据库连接

conn = DriverManager.getConnection(url);

//Statement带有很多方法,比如executeUpdate方法可以实现插入,更新和删除等操作

stmt = conn.createStatement();

sql = "insert into bms_weekreport(userId,submitTime,lastWeek,thisWeek) values(10041,'2014-12-30','123','321')";

// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功

int result = stmt.executeUpdate(sql);

System.out.println("result is:"+result);

sql = "select * from bms_weekreport";

// executeQuery会返回结果的集合,否则返回空

rs = stmt.executeQuery(sql);

//对结果集进行操作

while(rs.next()){

System.out.println(rs.getInt(1)+","+rs.getString(2));

}

}catch(Exception e){

e.printStackTrace();

}finally{

//关闭ResultSet资源

try{

rs.close();

}catch(SQLException e){

e.printStackTrace();

}

//关闭Statement资源

try{

stmt.close();

}catch(SQLException e){

e.printStackTrace();

}

//关闭Connection资源

try{

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

}

}

}

值得一提的是,在最后关闭资源的时候是不能这么写的:

finally{

try{

//关闭ResultSet资源

rs.close();

//关闭Statement资源

stmt.close();

//关闭Connection资源

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

}

原因是,如果在conn.close()执行之前,rs.close()或者stmt.close()出现SQLException异常,那么它就得不到执行,因此资源不会被关闭,造成连接泄露。

9.运行结果

0818b9ca8b590ca3270a3433284dd417.png

10.包结构

0818b9ca8b590ca3270a3433284dd417.png

参考:http://www.360doc.com/content/14/0820/11/18643155_403281435.shtml

参考:http://www.cnblogs.com/lee/archive/2007/08/25/869656.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值