Java 数据库连接
JDBC-ODBC桥接器 和 加载纯Java数据库驱动
一.JDBC连接数据库的流程及其原理
1、在开发环境中加载指定数据库的驱动程序。例如,接下来的实验中,使用的数据库是MySQL,所以需要去下载MySQL支持JDBC的驱动程序(最新的是:mysql-connector-java-5.1.18-bin.jar);而开发环境是MyEclipse,将下载得到的驱动程序加载进开发环境中(具体示例的时候会讲解如何加载)。
2、在Java程序中加载驱动程序。在Java程序中,可以通过“Class.forName(“指定数据库的驱动程序”)” 方式来加载添加到开发环境中的驱动程序,例如加载MySQL的数据驱动程序的代码为: Class.forName(“com.mysql.jdbc.Driver”)
3、创建数据连接对象:通过DriverManager类创建数据库连接对象Connection。DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法,根据数据库的URL、用户名和密码,创建一个JDBCConnection 对象。如:Connection connection = DriverManager.geiConnection(“连接数据库的URL","用户名", "密码”)。其中,URL=协议名+IP地址(域名)+端口+数据库名称;用户名和密码是指登录数据库时所使用的用户名和密码。具体示例创建MySQL的数据库连接代码如下:
ConnectionconnectMySQL = DriverManager.geiConnection(“jdbc:mysql://localhost:3306/myuser","root","root" );
4、创建Statement对象:Statement类的主要是用于执行静态SQL 语句并返回它所生成结果的对象。通过Connection 对象的 createStatement()方法可以创建一个Statement对象。例如:Statementstatament = connection.createStatement(); 具体示例创建Statement对象代码如下:
StatementstatamentMySQL =connectMySQL.createStatement();
5、调用Statement对象的相关方法执行相对应的 SQL语句:通过execuUpdate()方法用来数据的更新,包括插入和删除等操作,例如向staff表中插入一条数据的代码:
statement.excuteUpdate("INSERT INTO staff(name, age, sex,address, depart, worklen,wage)" +" VALUES ('Tom1', 321, 'M', 'china','Personnel','3','3000' ) ") ;
通过调用Statement对象的executeQuery()方法进行数据的查询,而查询结果会得到ResulSet对象,ResulSet表示执行查询数据库后返回的数据的集合,ResulSet对象具有可以指向当前数据行的指针。通过该对象的next()方法,使得指针指向下一行,然后将数据以列号或者字段名取出。如果当next()方法返回null,则表示下一行中没有数据存在。使用示例代码如下:
ResultSetresultSel = statement.executeQuery( "select * from staff" );
6、关闭数据库连接:使用完数据库或者不需要访问数据库时,通过Connection的close()方法及时关闭数据连接。
二.具体实现
1.由于使用两种连接方法连接数据库都不会影响操作数据库的逻辑代码,而对于常用的数据库,如Access ,SQL Server,MySQL 等原理和操作几乎一样,所以,下面使用分别用
JDBC-ODBC 桥接器连接 SQL Server 2005 和用加载纯Java 数据库驱动连接 MySQL。操作的前提是已经安装并创建了相应的数据库,数据出的安装和创建这里不再赘述。
2.JDBC-ODBC 桥接器连接 SQL Server 2005
(1).配置数据源驱动
在建好相应的数据库后,打开windows 的 控制面板 进入ODBC 选项,选择 系统DNS ,选择数据源驱动 SQL Server,添加兵并配置数据源:
(2)配置数据源
名称任意(必填项),描述可不填,服务器这里选择自己的主机,如图:
测试程序:
package jdbcSql;
import java.sql.*;
/*
* 使用JDBC-ODBC桥接器连接SQL Server 2005
* 数据源为 SqlData
*
*/
public class Demo {
public static voidmain(String[] args){
try{
//加载驱动(作用是将驱动加载到内存)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundExceptionex){
System.out.println(ex);
}
try{
//返回连接
//这里是用Windows身份登录,无需填写用户名和密码;若不是Windows身份登录,
//应该写成 Connection con =DriverManager.getConnection("jdbc:odbc:SqlData","User_name","passwd");
Connectioncon = DriverManager.getConnection("jdbc:odbc:SqlData");
//创建 Statement 对象
Statementsql = con.createStatement();
//创建 ResultSet 对象
//executeQuery()方法用来执行SQL查询语句
ResultSetrs = sql.executeQuery(" use 教学库 select *from 学生 where专业 = '电子' and 性别 = '男' ");
//循环打印车讯结果
while(rs.next()){
System.out.println(rs.getDouble(1)+ " " + rs.getString(2) + "\t"
+ rs.getString(3)+ rs.getString(4));
}
con.close();
}
catch(SQLExceptionex){
System.out.println(ex);
}
}
}
3. 加载纯Java数据库驱动 连接MySQL
(1)首先是要到官网上下载数据库驱动jar包。为了方便可以将其解压到MySQL的安装路径;如图:
(2)使用MyEclipse或者Eclipse 编写代码(代码的编写可以随便用各种IDE,这里为了方便,是使用的是MyEclipse),编写完代码后如下操作:
(3).配置Java数据驱动包的路径(这里是在MySQL的目录下),可以看到:
测试程序:
package jdbc.myData;
import java.sql.*;
/*
* 使用纯Java驱动连接MySql数据库
*
*/
public class Demo {
public static void main(String[] args){
try{
//加载驱动(作用是将驱动加载到内存)
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException ex){
System.out.println(ex);
}
try{
//返回连接
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcData","root","root");
//创建 Statement 对象
Statement sql = con.createStatement();
//创建 ResultSet 对象
//executeQuery() 方法用来执行SQL查询语句
ResultSet rs = sql.executeQuery("select*from iphone where price>4000 ");
//循环打印车讯结果
while(rs.next()){
System.out.println(rs.getDouble(1) + "" + rs.getString(2) + "\t"
+ rs.getString(3));
}
con.close();
}
catch(SQLException ex){
System.out.println(ex);
}
}
}
三.小结
通过以上操作可以发现两种方法的原理是一样的,甚至是代码几乎也完全一样,不一样的仅仅是几个操作。连接其他数据库也是一样,只是不同的数据库具体操作在一些差别,对于Java 逻辑代码没有影响!通过上面2个程序也不难看出,不同的方法不同的数据库,仅仅是用的数据库驱动包不同而已!
PS:本人也是初学者,以上相当于是就是整理的学习笔记而已!仅供参考,欢迎交流!