导读:
Java连接数据库
以SQL Server 2000为例
Java 程序连接数据库的方法实际上有四种:1. JDBC-ODBC 桥和ODBC 驱动程序-- 在这种方式下,这是一个本地解决方案,因为ODBC 驱动程序和桥代码必须出现在用户的每台机器中。从根本上说这是一个临时解决方案。
注意事项:
(1)在使用这种方法的时候,首先要设置一个数据源,具体方法和以前使用ODBC的时候一样,都是到【控制面板】-【数据源】那里添加一个新的数据源,例如建立一个名字为student的SQL Server数据库。
(2)然后就是编写代码啦,关键代码如下:
//使用jdbc-odbc桥连接SQL Server数据库
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
(3)如果是使用java的话,以上应该没有问题了,但是如果是写成 jsp,我发现会出现错误,javax.servlet.ServletException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序,估计是没有驱动程序的问题,因为上面现在一般都是推荐使用纯jdbc来访问数据库的,而且大多数dbms厂商都会提供其DBMS的JDBC驱动程序的,但是为了兼容,JAVA也允许通过JDBC-ODBC桥的方式连接数据库(也就是这种方法),但是这个需要一个JDBC-ODBC-Brige驱动程序,好吧,听说sun的网站上有,但是我没有找到,用百度吧,反正找到就行了(注意不要找jdbc驱动,要找JDBC-ODBC桥驱动,根据我的理解,JDBC应该有很多,例如Orace有一个,SQL Server有一个,MySQL有一个,DB2有一个等等,但是JDBC-ODBC-BRIDGE应该只有一个,因为它要解决就是JDBC到ODBC的连接,而前者是解决JDBC到各种DBMS的连接,说白了,就是JDBC和ODBC是同一个等级的东西,但是JDBC要比ODBC先进很多罢了)。
不过很奇怪,我使用JAVA编程就可以实现桥连接,但是使用 JSP就不行,就是上面的错误,我也觉得很奇怪,我在网上搜了2天,居然还是解决不了问题,正如我上面所说,似乎需要一个所谓的JDBC-ODBC桥驱动,但是网上的人都说在JDK里面已经包含了,不用安装了,我想可能是吧,不然为什么我在sun的网站上找了很久也没有发现可以下载的东西呢?!,但是我在JDK的安装目录下又找不到这个类,真是奇怪。Java可以,但是 jsp不行,这个问题更加奇怪,唉,现在还没有解决这个问题,郁闷。2. 本机代码和Java 驱动程序-- 它用另一个本地解决方案(该平台上的Java 可调用的本机代码)取代ODBC 和JDBC-ODBC 桥。
――没有使用过,呵呵!3. JDBC 网络的纯Java 驱动程序-- 由Java 驱动程序翻译的JDBC 形成传送给服务器的独立协议。然后,服务器可连接任何数量的数据库。这种方法使您可能从客户机Applet 中调用服务器,并将结果返回到您的Applet。在这种情况下,中间件软件提供商可提供服务器。
――也没有使用过,呵呵!4. 本机协议Java 驱动程序-- Java 驱动程序直接转换为该数据库的协议并进行调用。这种方法也可以通过网络使用,而且可以在Web 浏览器的Applet 中显示结果。在这种情况下,每个数据库厂商将提供驱动程序。
这种应该就是我们应该尽量使用的方法了吧,就是纯粹的使用JDBC连接,就好像我们以前使用ODBC一样,使用JDBC连接到各种的DBMS。不过首先是要先下载相关的DBMS的JDBC驱动程序啦,毕竟JDBC不是MS的东西,没有在Windows里面集成了,例如对于S QL Server 2000,可以到MS公司的网站上下载它的JDBC驱程。
安装之后就可以了,当然还有一些类似与路径和环境变量等等的东西还是要注意一下的,例如应该将安装目录下的lib目录下的3个jar文件添加到环境变量的path和classpath中,详细的内容可以参见以前的一篇文章:http://apollosysu.bokee.com/5397185.html
这样连接方法的代码编写方法如下:
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
//注意这里的student不是ODBC数据源的名称,而是数据库本身的名称。
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
//stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2)+"
");
}
rs.close();
stmt.close();
conn.close();
下面转一篇网上看到的文章:
浅谈 4种类型的JDBC驱动程序
在网上下载JDBC驱动程序,常看见Type4字样,开始以为是厂商自己的标准,近来翻看资料,原来是SUN定义的JDBC标准。
Type1 JDBC-ODBC桥作为JDK1.1后的一部分,是sun.jdbc.odbc包的一部分
Application--->JDBC-ODBC Bridge(Type1 jdbc driver)---->JDBC-ODBC Library--->ODBC Driver-->Database
适用于快速的原型系统,没有提供JDBC驱动的数据库如Access
Type2 JAVA to Native API利用开发商提供的本地库来直接与数据库通信。
Application--->JDBC Driver(Type2 jdbc driver)---->Native Database library---->Database
比Type1性能略好。
Type3 Java to netApplication--->Jdbc Driver(Type3 jdbc driver)----->java middleware--->JDBC Driver---->Database
具有最大的灵活性,通常由那些非数据库厂商提供,是四种类型中最小的。
Type4 JAVA to native dababaseApplication--->Jdbc driver(type4 jdbc driver)----->database engine--->database
最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力。
本文转自
http://hi.baidu.com/sdyaomingjun/blog/item/2e42e3548c27fc59d10906a8.html
Java连接数据库
以SQL Server 2000为例
Java 程序连接数据库的方法实际上有四种:1. JDBC-ODBC 桥和ODBC 驱动程序-- 在这种方式下,这是一个本地解决方案,因为ODBC 驱动程序和桥代码必须出现在用户的每台机器中。从根本上说这是一个临时解决方案。
注意事项:
(1)在使用这种方法的时候,首先要设置一个数据源,具体方法和以前使用ODBC的时候一样,都是到【控制面板】-【数据源】那里添加一个新的数据源,例如建立一个名字为student的SQL Server数据库。
(2)然后就是编写代码啦,关键代码如下:
//使用jdbc-odbc桥连接SQL Server数据库
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
(3)如果是使用java的话,以上应该没有问题了,但是如果是写成 jsp,我发现会出现错误,javax.servlet.ServletException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序,估计是没有驱动程序的问题,因为上面现在一般都是推荐使用纯jdbc来访问数据库的,而且大多数dbms厂商都会提供其DBMS的JDBC驱动程序的,但是为了兼容,JAVA也允许通过JDBC-ODBC桥的方式连接数据库(也就是这种方法),但是这个需要一个JDBC-ODBC-Brige驱动程序,好吧,听说sun的网站上有,但是我没有找到,用百度吧,反正找到就行了(注意不要找jdbc驱动,要找JDBC-ODBC桥驱动,根据我的理解,JDBC应该有很多,例如Orace有一个,SQL Server有一个,MySQL有一个,DB2有一个等等,但是JDBC-ODBC-BRIDGE应该只有一个,因为它要解决就是JDBC到ODBC的连接,而前者是解决JDBC到各种DBMS的连接,说白了,就是JDBC和ODBC是同一个等级的东西,但是JDBC要比ODBC先进很多罢了)。
不过很奇怪,我使用JAVA编程就可以实现桥连接,但是使用 JSP就不行,就是上面的错误,我也觉得很奇怪,我在网上搜了2天,居然还是解决不了问题,正如我上面所说,似乎需要一个所谓的JDBC-ODBC桥驱动,但是网上的人都说在JDK里面已经包含了,不用安装了,我想可能是吧,不然为什么我在sun的网站上找了很久也没有发现可以下载的东西呢?!,但是我在JDK的安装目录下又找不到这个类,真是奇怪。Java可以,但是 jsp不行,这个问题更加奇怪,唉,现在还没有解决这个问题,郁闷。2. 本机代码和Java 驱动程序-- 它用另一个本地解决方案(该平台上的Java 可调用的本机代码)取代ODBC 和JDBC-ODBC 桥。
――没有使用过,呵呵!3. JDBC 网络的纯Java 驱动程序-- 由Java 驱动程序翻译的JDBC 形成传送给服务器的独立协议。然后,服务器可连接任何数量的数据库。这种方法使您可能从客户机Applet 中调用服务器,并将结果返回到您的Applet。在这种情况下,中间件软件提供商可提供服务器。
――也没有使用过,呵呵!4. 本机协议Java 驱动程序-- Java 驱动程序直接转换为该数据库的协议并进行调用。这种方法也可以通过网络使用,而且可以在Web 浏览器的Applet 中显示结果。在这种情况下,每个数据库厂商将提供驱动程序。
这种应该就是我们应该尽量使用的方法了吧,就是纯粹的使用JDBC连接,就好像我们以前使用ODBC一样,使用JDBC连接到各种的DBMS。不过首先是要先下载相关的DBMS的JDBC驱动程序啦,毕竟JDBC不是MS的东西,没有在Windows里面集成了,例如对于S QL Server 2000,可以到MS公司的网站上下载它的JDBC驱程。
安装之后就可以了,当然还有一些类似与路径和环境变量等等的东西还是要注意一下的,例如应该将安装目录下的lib目录下的3个jar文件添加到环境变量的path和classpath中,详细的内容可以参见以前的一篇文章:http://apollosysu.bokee.com/5397185.html
这样连接方法的代码编写方法如下:
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
//注意这里的student不是ODBC数据源的名称,而是数据库本身的名称。
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
//stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2)+"
");
}
rs.close();
stmt.close();
conn.close();
下面转一篇网上看到的文章:
浅谈 4种类型的JDBC驱动程序
在网上下载JDBC驱动程序,常看见Type4字样,开始以为是厂商自己的标准,近来翻看资料,原来是SUN定义的JDBC标准。
Type1 JDBC-ODBC桥作为JDK1.1后的一部分,是sun.jdbc.odbc包的一部分
Application--->JDBC-ODBC Bridge(Type1 jdbc driver)---->JDBC-ODBC Library--->ODBC Driver-->Database
适用于快速的原型系统,没有提供JDBC驱动的数据库如Access
Type2 JAVA to Native API利用开发商提供的本地库来直接与数据库通信。
Application--->JDBC Driver(Type2 jdbc driver)---->Native Database library---->Database
比Type1性能略好。
Type3 Java to netApplication--->Jdbc Driver(Type3 jdbc driver)----->java middleware--->JDBC Driver---->Database
具有最大的灵活性,通常由那些非数据库厂商提供,是四种类型中最小的。
Type4 JAVA to native dababaseApplication--->Jdbc driver(type4 jdbc driver)----->database engine--->database
最高的性能,通过自己的本地协议直接与数据库引擎通信,具备在Internet装配的能力。
本文转自
http://hi.baidu.com/sdyaomingjun/blog/item/2e42e3548c27fc59d10906a8.html