JAVA应用程序与数据库的连接方式
许多JAVA应用程序都可能需要使用数据库,因为数据库在数据查询/修改/保存/安全等方面都很重要, JAVA使用JDBC提供的API与数据库进行交互信息的.
JDBC是JAVA运行平台的核心类库中的一部分,提供了访问数据库的API, 它由一些JAVA类和接口组成.
我们经常使用JDBC进入连接数据库的操作如下步骤:
1. 与一个数据库建立连接.
2. 向已连接的数据库发送SQL语句.
3. 处理SQL语句返回的结果.
JAVA应用程序与数据库交互信息,必须首先与数据库建立连接,其中有两种连接方式:
1.建立JDBC--ODBC桥接器方式,其中与数据库的连接是由ODBC去完成的.
2.加载纯JAVA数据库驱动程序,这种方式需要安装要连接数据库驱动程序(如要连接SQL Server2000的就要安装sqljdbc.exe程序)
下面分别说下两种连接方式
一.JDBC--ODBC桥接器方式:
A.建立JDBC--ODBC桥接器
代码:
Try{Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver"); }
Catch(ClassNotFoundException e)( System.out.println(e); )
B.创建ODBC数据源
这里要在控制面板--管理工具--数据源 添加要连接的数据库的驱动程序,并自己定义数据源名字,如果操作系统没有所需要连接的数据库驱动程序则要先安装其驱动程序,选择的数据库名一定是在数据库中已经创建了的.
C.与ODBC数据源建立连接
代码:
Connection con=DriverManager.getConnection("jdbc:odbc:数据源名"
,"username","password");
这里的username 是数据库登录用户
Password是数据库登录密码
假设我的数据源名是test, 为了能与数据源test交换数据,建立Connection对象,建立连接时要考虑捕获SQLException异常情况如下:
代码:
Try{Connection con=DriverManager.getConnection("jdbc:odbc:数据源名"
,"username","password");}
Catch(SQLException e){}
其实,JDBC与数据库表进行交互的主要方式是使用SQL语句,JDBC提供的API可以将标准的SQL语句发送给数据库,然后实现与数据库的交互.
上面已经实现了JAVA应用程序与数据库的连接了,下面是实现对数据库的操作(包括对表的修改./更新/保存/插入数据/查询数据等), 这里只对表的查询操作.
1.向数据库发送SQL查询语句,首先使用Statement声明一个SQL语句对象,然后再用已经创建的连接对象con调用方法createStatement()创建这个SQL语句对象
代码:
Try{Statement sql=con.createStatement();}
Catch(SQLException e){}
2.处理查询结果,利用一个ResultSet对象返回查询结果集.
例如:代码
ResultSet rs=sql.executeQuery("select * from message");
由于ResultSet对象一次只能看到一个数据行,所以要用一个循环输出,使用next()方法可以将游标依次移动到数据行,在当前的数据行使用ResultSet对象的getXXX()方法/*XXX可以是Byte/ Date/ Int/ String/ Double等*/
例如要输出一个表多个字段
代码如下:
While(rs.next()){
String number=rs.getString(1);//这种属于顺序查询,1代表第一个字段,也可以
String name=rs.getString(2); 直接写字段名的.
Date birth=rs.getDate(3);
Double height=rs.getDouble(4);
System.out.prinln(number+","+name+","+birth+","+height);
Con.close();
}
下面是一个完整具体的一个应用程序:
import java.sql.*;
public class Example12_1{
public static void main(String args[]){
Connection con;
Statement sql;
ResultSet rs;
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
System.out.println(""+e);
}
try{ con=DriverManager.getConnection("jdbc:odbc:hello","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM message");
while(rs.next()){
String number=rs.getString(1);
String name=rs.getString(2);
Date birth=rs.getDate(3);
double height=rs.getDouble(4);
System.out.println(number+","+name+","+birth+","+height);
}
con.close();
}
catch(SQLException e){
System.out.println(e);
}
}
}
JDBC--ODBC连接器与Oracle数据库的连接
实现代码:
import java.sql.*;
class dbAccess {
public static void main (String args []) throws SQLException
{
try {
Class.forName ("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection conn = DriverManager.getConnection
("jdbc:oracle:oci8:@ORA1", "scott", "tiger");
// or oci9 @Service, userid, password
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery (
"select BANNER from SYS.V_$VERSION"
);
while (rset.next())
System.out.println (rset.getString(1)); // Print col 1
stmt.close();
}
}
二.使用纯JAVA数据库驱动程序与数据库建立连接,这里以SQL Server2000为例.
实现建立连接前提:先安装好SQL Server2000数据库,并启动SQL Server2000,然后建立数据库,创建表.(已安装好sqljdbc.exe驱动程序)
使用纯JAVA数据库驱动程序与数据库建立连接的步骤如下:
1.加载纯JAVA数据库驱动程序
代码:
Try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}
Catch(Exception e){}
2.与指定的数据库建立连接
代码:
Try{String uri="jdbc:sqlserver://192.168.1.101:1433:DatabaseName=test";
String user="sa";
String password="sa";
Con=DriverManager.getConnection(uri,user,password);
}
Catch(SQLException e){}
以上代码的一些说明:192.168.1.101是SQL Server数据库服务器所驻留的计算机的IP地址, 1433是服务器端口号, test是数据库名,其用户名user和密码password都是sa
下面是具体的代码实例:
import java.sql.*;
public class Example{
public static void main(String args[]){
Connection con;
PreparedStatement pre;
ResultSet rs;
try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundException e){
System.out.println(""+e);
}
try{ String uri="jdbc:sqlserver://192.168.1.101:1433:DatabaseName=test";
String user="sa";
String password="sa";
Con=DriverManager.getConnection(uri,user,password);
pre=con.prepareStatement("SELECT * FROM message");
rs.pre.executeQuery();
while(rs.next()){
String number=rs.getString(1);
String name=rs.getString(2);
Date birth=rs.getDate(3);
double height=rs.getDouble(4);
System.out.println(number+","+name+","+birth+","+height);
}
con.close();
}
catch(SQLException e){
System.out.println(e);
}
}
}