今天用JDBC链接mysql数据库,看着教程折腾了半个多小时(看来看着明白,丢下书自己操作就难了啊~!!!),出了各种bug最后终于链接成功了,现在将今天所写的链接代码与方法分享。
一、JDBC基础知识(来自百科)
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
1、跨平台运行:这是继承了Java语言的“一次编译,到处运行”的特点;
2、不受数据库供应商的限制:巧妙在于JDBC设有两种接口,一个是面向应用程序层,其作用是使得开发人员通过SQL调用数据库和处理结果,而不需要考虑数据库的提供商;另一个是驱动程序层,处理与具体驱动程序的交互,JDBC驱动程序可以利用JDBC API创建Java程序和数据源之间的桥梁。应用程序只需要编写一次,便可以移到各种驱动程序上运行。Sun提供了一个驱动管理器,数据库供应商——如MySQL、Oracle,提供的驱动程序满足驱动管理器的要求就可以被识别,就可以正常工作。所以JDBC不受数据库供应商的限制。
JDBC API可以作为连接Java应用程序与各种关系数据库的纽带,在带来方便的同时也有负面影响,以下是JDBC的优、缺点。优点如下:
- 操作便捷:JDBC使得开发人员不需要再使用复杂的驱动器调用命令和函数;
- 可移植性强:JDBC支持不同的关系数据库,所以可以使同一个应用程序支持多个数据库的访问,只要加载相应的驱动程序即可;
- 通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
- 面向对象:可以将常用的JDBC数据库连接封装成一个类,在使用的时候直接调用即可。
缺点如下:
- 访问数据记录的速度受到一定程度的影响;
- 更改数据源困难:JDBC可支持多种数据库,各种数据库之间的操作必有不同,这就给更改数据源带来了很大的麻烦
二、JDBC连接mysql流程
1、在开发环境中加载mysql驱动,这里需要数据库mysql和mysql连接器(也就是jar文件,如mysql-connector-java-5.1.18-bin.jar),所用开发环境为myeclipse,之后还要把jar导入项目中
2、在java程序中加载驱动,有两种方法
1)Class.forName("com.mysql.jdbc.Driver");
2) Class.forName("com.mysql.jdbc.Driver").newInstance();
3、创建链接对象:通过DriverManager类创建数据库连接对象Connection。
Connection ce = DriverManager.getConnection(“连接数据库的URL",
"用户名", "密码”)
"用户名", "密码”)
具体mysql例子,
Connection ce = DriverManager.getConnection(“jdbc:mysql://localhost:3306/test","root"
,"root" );
,"root" );
或者
Connection ce= DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=root");
4、创建Statement对象:Statement 类的主要是用于执行静态 SQL 语句并返回它所
生成结果的对象。
生成结果的对象。
Statement sm = ce.createStatement();
5、调用Statement对象的相关方法来执行sql语句。executeQuery(String)方法可执行SELECT查询。要想更新数据库中的数据,可使用executeUpdate(String SQL)方法。该方法将返回受更新语句影响的行数。
使用示例代码如下:
ResultSet rs = statement.executeQuery( "select * from mytable" );
ResultSet rs = statement.executeQuery( "select * from mytable" );
之后用next()方法将指针指向下一行,然后将数据一一取出。
6、关闭数据库各个链接close(),顺序后打开的先关闭。
三、一个简单的实例
在此之前,说一下将mysql连接器的jar文件添加至myeclipse中:在MyEclips中创建项目并在项目中添加MySQL驱动程序,可以使java项目也可以是javaweb项目。创建成功后将mysql驱动程序包添加到工程中bulid path中, 具体步骤如下
已经添加,在工程文件中则用这样的文件
package com.wxk.test; import java.sql.*; public class JDBC_Test { /*各个链接的声明*/ Connection ce = null; Statement st = null; ResultSet rs = null; public static void main(String[] args) { new JDBC_Test().query(); } /* 查询数据库,输出符合要求的记录的情况*/ public void query() { try { ce= DriverManager.getConnection("jdbc:mysql://localhost/mydata?user=root&password=xiaokang123"); //先要获取连接,即连接到数据库 String sql = "select * from users"; // 查询数据的sql语句 st = (Statement) ce.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量 rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集 System.out.println("最后的查询结果为:"); while(rs.next()) { int userId = rs.getInt(1); String userName = rs.getString(2); String passwd = rs.getString(3); String mail = rs.getString(4); int grade = rs.getInt(5); System.out.println("userId:"+userId+" userName:"+userName+" passwd:"+passwd+" mail:"+mail+" grade:"+grade); } } catch(Exception e) { e.printStackTrace(); }finally { close(); } } /*关闭各个链接,注意后打开的先关*/ public void close() { try { if(rs != null) { rs.close(); rs = null; } if(st != null) { st.close(); st = null; } if(ce != null) { ce.close(); ce = null; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
这里就写了select用executeQuery()方法执行sql语句。其他的语句也类似。