使用jdbc连接数据库

来源:互联网 发布:网络赌搏 编辑:程序博客网 时间:2024/05/22 14:03

四步:加载驱动程序;连接数据库;访问数据库;执行查询。


(加载驱动程序)

       (1)JDBC中的Driver接口,是任何数据库提供商的驱动类必须实现的接口,驱动类必须实现该接口中的所有方法。

       Driver接口中共有以上六个方法。其中两个相对很重要,它是供DriverManager调用的,其它四个很简单就不说了。

       Connection connect(String url, java.util.Properties info) throws SQLException:这个方法是数据库提供商的驱动必须实现的方法,它主要是使用指定的URL和与具体提供商相关的信息建立一个连接。

boolean acceptsURL(String url) throws SQLException方法也是数据库提供商的驱动必须实现的方法,主要判定某个该驱动是否介绍该URL。(一般在建立连接之前调用。

(2)DriverManager类是整个JDBC的起点,利用它可以创建连接,从而完成后续的操作。主要有四类:1.初始化;2.驱动的注册、查询、取消注册;3.建立连接;4.日志相关。


初始化

static void initialize() {    if (initialized) {    return;     }                  //已经初始化就返回!(初始化了就算了)    initialized = true;                                    //设置此标识符,表示已经完成初始化工作    loadInitialDrivers();                                  //初始化工作主要是完成所有驱动的加载    println("JDBC DriverManager initialized");}

驱动的注册、查询、取消注册

有很多开源的驱动类,这边就不多做解释
建立连接
JDBC程序中一般使用DriverManager.getConnection方法返回一个连接。该方法有多个变体,它们都使用了具体驱动类的connect方法实现连接。
日志相关
一般使用字符流,即Reader、Writer。



(连接数据库)(访问数据库)(执行查询)

连接数据库首先需要加载驱动,不同的数据库的驱动是不一样的,比如Mysql的驱动如下,但是JDBC4以后已经可以自动加载驱动了,所以可以不写这个:

 com.mysql.jdbc.Driver
然后通过DriverManager类的getConnection方法建立连接时,需要注意getConnection会抛出SQLException异常,需要在try/catch块中捕获。

然后创建Statement对象,用来向数据库发送查询和命令,它由Connection的createStatement方法创建,其代码如下:

Statement statement=connection.createStatement();

大部分数据库驱动程序允许在同一个连接中打开多个并行的Statement对象,创建好Statement对象之后,就可以使用它来进行数据库的操作了。

 
最后处理结果,最常用的是ResultSet的next()方法移动,每次移动一行,在每一行中,ResultSet提供了各种getX方法。它们都以列名或索引为参数,有各种不同的Java类型返回结果。

 
最后记得关闭Connection和ResultSet

try{    int count = 0;    String url = "jdbc:MySql://localhost/DataBaseName";    String user = "root";    String password = "11111";    Connection conn = DriverManager.getConnection(url, user, password);    Statement stm = conn.createStatement();    String query = "select * from tableName";//也可以分成很多个方法,增删改查。    ResultSet rst = stm.executeQuery(query);    while(rst.next()){        count++;    }}catch(SQLException SQe){    SQe.printStackTrace();} finally {    rst.close();    conn.close();}


resultSet遍历整个表的过程

  private static List ResultSetList(ResultSet rs) throws SQLException{        List list = new ArrayList();        ResultSetMetaData rsmd = rs.getMetaData(); //获得数据库结构        int ColumnCount = rsmd.getColumnCount();  //数据库列数//        int RanksCount =rsmd.get        while(rs.next()){            Map rowMap = new HashMap();            for(int i = 1 ; i<=ColumnCount ; i++){                System.out.println(rsmd.getColumnName(i));  //数据库的列名                System.out.println(rs.getObject(i));        //对应数据库的内容                rowMap.put(rsmd.getColumnName(i), rs.getObject(i));            }            list.add(rowMap);        }        return list;    }

得到的结果大概如下:

[{password=32132, id=1, username=232}, {password=wewqeqweqw, id=4, username=232}]


其中rsdm.getColumnName(i),i从1开始的原因如下:

/** * Get the designated column's name. * * @param column the first column is 1, the second is 2, ... * @return column name * @exception SQLException if a database access error occurs */String getColumnName(int column) throws SQLException;

1 0
原创粉丝点击