使用JDBC连接数据库

来源:互联网 发布:applyasync python 编辑:程序博客网 时间:2024/06/06 03:23

      JDBC访问数据库包括两个方面:第一个是 java本身提供给程序员的API,大部分API位于java.sql包中,还有存在于javax.sql中。第二部分是:不同的数据库产品提供不同的JDBC API称为spi 也就是数据库驱动程序。数据库驱动中有一个关键类是帮助连接java程序与数据库创建连接的,驱动类(Driver Class)

   利用JDBC操作数据库首先要下载不同数据库的驱动同时导入项目中。还要尽量熟悉java提供的API。首先介绍常用的api

   (1)DriverManager:驱动管理类:

          操作数据库首先建立链接,得到连接对象(Connection)着各类中定义了得到链接的方法:

        public static Connection getConnection(String url,String user,String password)

     getConnection方法获得数据库连接对象 ,url称为连接串,它体现了数据库的链接协议,数据库名称,端口,主机地址,user为数据库名,password为数据库密码。

(2)Connection 连接接口

    可以通过他来获得语句执行对象(Statement)利用其中的createStatement()方法。

(3)Statement语句接口 包括executeUpdate、executeQuery方法。

     其中 int   executeUpdate(String sql ):执行增加、删除、修改操作。返回值是影响的行数。

     ResultSet   executeQuer(String sql ):执行查询操作,返回结果集对象。

(4)ResultSet结果集接口

    当执行了查询操作后都会返回结果进行处理,结果都存进封装在这个对象中,该接口还提供了遍历结果集的方法

   boolean next():该方法可以是结果集游标上下移动,if()/ while()实现。有记录返回true 没有false。

    getXXX(String columnName)方法,如getString ,getInt  XXX为数据类型。选择与字段相同的数据类型,通过名称可以返回对象的值

    getXXX(Int indext)根据字段在结果集中的位置来返回字段的值 用法和上面的相似

       链接数据库时首先声明驱动类的名字,连接串,连接对象,语句对象,可以使用class类中的forName()方法来加载一个类。

   利用JDBC链接数据库 并且封装增删改查的方法。代码如下(masql为例):

  

package com.tjetc.dbutil;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DBConn {   //三属性   private Connection conn;  //连接   private Statement stmt;      //执行对象,用于执行sql语句   private ResultSet rs;        //结果集,用于保存查询的结果       //构造方法   public DBConn(){          try {                 Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动文件                 String url="jdbc:mysql://localhost:3306/project";                 this.conn=DriverManager.getConnection(url,"root","1");                 stmt=conn.createStatement();          } catch (ClassNotFoundException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();          } catch (SQLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();          }   }         //查询的方法   public ResultSet execQuery(String strSql){          try {                 rs=stmt.executeQuery(strSql);                 return rs;          } catch (SQLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();                 return null;          }   }         //执行增删改的方法   public int execOther(String strSql){          try {                 int flag=stmt.executeUpdate(strSql);                 return flag;          } catch (SQLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();                 return -1;          }   }         //关闭   public void closeAll(){          try {                 if(!rs.isClosed()){                       rs.close();                 }                 if(!stmt.isClosed()){                       stmt.close();                 }                 if(!conn.isClosed()){                       conn.close();                 }          } catch (SQLException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();          }   }} 


 



0 0
原创粉丝点击