Java JDBC连接SQL Server数据库初级

来源:互联网 发布:windows 7 编辑:程序博客网 时间:2024/05/01 01:08

 一、JDBC的概念

         JDBC(Java数据库连接)是用于执行SQL语句的API,可以为多种关系数据库提供统一的访问,由一组Java语言编写的类和接口组成。

JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级别的工具和接口。使开发人员可以利用纯Java API编写数据库应用程序。

JDBC驱动程序共分四种类型:

类型1:JDBC-ODBC桥

           把所有的JDBC调用传递给ODBC,再让后者调用数据库本地驱动代码。(效率相对来说较低)

类型2:本地API驱动

           通过客户端加载数据库厂商提供的本地代码库来访问数据库,而在驱动程序中则包含了JAVA代码。

类型3:网络协议驱动

           给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字Socket来调用服务器上的中间件程序,后者将其请求转化为所需的具体API调用。

类型4:本地协议驱动

          使用Socket,直接再客户端和数据库间进行通信(效率最高,但是开发复杂度也高)。

JDBC API主要位于JDK中的java.sql包中,主要包括:

DriverManager:完成驱动程序的装载和建立新的数据库连接。

Connection:表示对某一指定数据库的连接。 

Statement:管理在一指定数据库连接上的SQL语句的执行(一般执行不带参数也就是占位符的SQL语句)。 

CallableStatement:用于调用数据库端的存储过程,由Connection.prepareCall(...)方法创建。

SQLException:代表在数据库连接的创建和关闭和SQL语句的执行过程中发生的异常。

Driver:驱动程序,会将自身加载到DriverManger中去,处理相应的请求并返回相应的数据库连接(Connection)。

PreparedStatement:用以执行包含动态参数的SQL查询和更新(可以执行带占位符的SQL语句)。

JDBC主要做3件事:

1、与数据库建立连接。2、发送操作数据库的SQL语句。3、处理结果。

二、创建数据库连接

        要使Java程序可以连接数据库,需要获取相应的JDBC驱动程序,将其引入项目java build path路径即可。

在Java程序中完成一下两步操作获得与数据库的Connection连接对象

1、加载数据库驱动程序:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

2、建立连接:url="jdbc:sqlserver://127.0.0.1:1433;databaseName=UserInfo;user=sa;password=123";//sa身份连接

                       Connection conn=DriverManager.getConnection(url);

连接一旦建立,就可以向数据库传送SQL语句。

JDBC提供了3个类用于向数据库发送SQL语句,Connection接口中的3个方法可以用于创建这三个类的实例。

Statement:由Connection对象的createStatement方法创建,Statement对象用于发送简单的SQL语句。

PreparedStatement:由preparedStatement方法创建,PreparedStatement对象用于发送带有输入参数的SQL语句。需要注意的是用该对象发送SQL语句到数据库的时候,数据库会将SQL语句优化,存储下来。下次再用该对象执行同样的SQL语句,不会将该SQL语句再发送到数据库端,只会发送相应占位符对应的值。这一点和Statement 对象不同,Statement每次都会发送,数据库端也不会保存SQL语句。

CallableStatement:me由prepareCall方法创建,CallableStatent对象用于执行数据库端的存储过程。

完成向数据库发送操作语句(通过Statement,PreparedStatement,CallableStatement对象的execute/executeXXX方法)数据库引擎执行完成后会返回一个结果,这个结果主要有两种形式。

对于更新语句(增、删、改)完成后会返回一个受操作影响的行数。

          1、executeUpdate():执行DML和DDL语句,返回int类型。即可以执行insert、delete、update、create(建表)、drop语句,所返回的int值就是当前操作所影响的记录数。

          2、execute()  :执行任何SQL语句,包括DML、DDL和查询语句。返回boolean类型,指示是否有ResultSet返回。

executeQuery():执行查询语句,返回查询结果集ResultSet。

          1、ResultSet的next()方法下移结果集中记录指针,并判断当前记录指针是否指向空。

          2、ResultSet的getXxx()读取结果集中当前记录的字段信息。

补充:ResultSet 维护有一个缓冲用于保存从数据库中返回的记录,其大小是有限制的。(这很容易理解,数据库中有1w条数据符合查询条件不可能一下全部返回给我们)

         ResultSet.getFetchSize() :可以返回当前结果集默认可以从数据库中获得的记录个数。

          ResultSet.setFetchSize()  :可以设置我们当前结果集能保存的记录的个数。

三、具体操作

1、下载JDBC  下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599

下载 完成后,是个exe文件,点击运行,会提示你选择解压目录.

解压完成后,进入 解压完成后的文件,里边有两个.jar文件。一个

是:sqljdbc.jar,另外一个是sqljdbc4.jar。

这里使用sqljdbc4.jar

2、复制sqljdbc4.jar。并将其粘贴到需要的项目中去,右击sqljdbc4.jar-->Build Path-->Add to Build Path,这样Ok了,可以在代码中获取和数据库相关的操作了。

3、在用Java和数据库建立连接之前我们还需要知道我们的端口号。

           a、打开SQL Server 配置管理器启用TCP/IP,如下图


       b、双击TCP/IP--》IP地址(我的TCP动态端口号全部为空,TCP端口号为:1433)知道了端口号我们可以继续进行了。


4、编写java代码(此处我用sa身份验证模式连接SQL Server数据库。因此需要知道自己的sa身份的密码)

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Dbdemo1 {public static void main(String[] args) {// TODO Auto-generated method stub             String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=UserInfo;user=sa;password=123";//sa身份连接Connection conn=null;Statement statement=null;ResultSet rs=null;try {                //com.microsoft.sqlserver.jdbc.SQLServerDriver     这是驱动的路径Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载数据库驱动程序conn=DriverManager.getConnection(url);//获取对指定数据库的连接对象statement=conn.createStatement();//创建Statement用以发送简单的SQL语句rs=statement.executeQuery("SELECT * FROM admin_table");while(rs.next()) {System.out.println("name:"+rs.getString("user_name")+"||"+"password:"+   rs.getString("user_pwd")+" "+rs.getString("user_age"));}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(conn!=null) {try { //如果不为空说明连接成功了,关闭连接conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();               }         }     }  }}


注意:想要连接数据库当然需要事先把数据库建立好,我已经在SQL Server2008R2建立了一个名为UserInfo的数据库

代码的执行结果如下:



原创粉丝点击