JavaWeb——教你写db数据库连接类

2017-12-31 14:15:10来源:CSDN作者:qq_37163479人点击

分享

db连接类

db就是database(数据库),下面我讲演示如何通过java语言通过jdbc的方式来连接到你所要的数据库,本例中以oracle为参考。

代码实现

首先我们先创造几个等会会用到的对象

  1. 创造一个数据库连接对象(Connection对象,代表与数据源进行的唯一会话。)。
  2. 创建编译语句对象(Statement对象,建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。)。
  3. 创建预编译语句对象(PreparedStatement对象, 实例包含已编译的 SQL 语句。这就是使语句“准备好”)。
  4. 创建结果集对象(ResultSet对象, 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.)
    ps:结果集对象在oracle中如果是查询会返回一个resultset,但是当插入,删除和更新值的时候返回的是被影响的行数,所以这时候需要用int类型来接收这个值。
    // 创建一个数据库连接    Connection connection = null;    // 创建编译语句对象    Statement stat =null;    // 创建预编译语句对象    PreparedStatement pstat = null;    // 创建结果集对象    ResultSet rs1 = null;    int rs2 ;

接着我们编写我们的第一个连接方法,这是整个db数据库连接类的基础。

我们需要4个参数:

  1. driverName,这个是你驱动的名称。
  2. URL,你数据库的地址,比如我jdbc:oracle:thin:@localhost:1521:stulibrary中,localhost表示在本机,1521表示数据库的端口号,stulibrary表示数据库的名称。
  3. userName,表示你的数据库登录名。
  4. pwd,表示登录名的登录密码
    //驱动名称    private static final String driverName="oracle.jdbc.driver.OracleDriver";    //数据库的地址(通过端口和SID找到对应的数据库)    private static final String URL="jdbc:oracle:thin:@localhost:1521:stulibrary";    //数据库登录用户名    private static final String userName="ADMIN";     //数据库登录密码    private static final String pwd="123456";

下面是具体的连接类,定义好变量之后我们的操作将会很简单。

这个类返回的是connetion对象,这是整个连接类最基础的对象,所有操作都要围绕这个对象展开。我们需要传入刚才定义的驱动,URL,用户名和密码,如果连接成功将会在命令行输出连接成功。(如果想测试记得写主类哦,或者在JUNIT内测试也可行,建议后者)

    public Connection getConnection(){        try {            //加载oracle驱动            Class.forName(driverName);            //通过驱动获取数据库的连接            connection = DriverManager.getConnection(URL,userName,pwd);            System.out.println("连接成功");        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return connection;    }

下面我们来写具体的操作的方法

查询

在查询方法中要求输入的sql语句,这个是用String类型定义的数据库PL/SQL语句。
executeQuery(sql)方法就是用来用sql查询的。

public ResultSet query(String sql){        try {            //通过刚才的getConnection方法获得一个连接的对象。            connection = getConnection();            //向数据库中发送你的sql语句            stat = connection.createStatement();            //获得所查询的结果,返回的是Resultset对象            rs1 = stat.executeQuery(sql);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return rs1;    }

更新

executeUpdate(sql)可以用来插入,删除和更新值。
其他操作与查询相同,见查询注释

public int update(String sql){        try {            connection = getConnection();            stat = connection.createStatement();            rs2 = stat.executeUpdate(sql);          }         catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return rs2;    }

替换

替换类中需要sql语句和一个字符串。
prepareStatement时sql语句可以这样写
UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?
用问号代替所需要填入的值,然后通过pstat.setString方法再把值赋给它,具体实现是pstat.setString(?的位置),需要替换的字符串值)。
ps:需要注意的是?的位置从第一个开始,不是第0个,比如上条语句需要给第一个?赋值1时就需要这样写pstat.setString(1,“1”);

public void update(String sql, String[] args){        try {            connection = getConnection();            pstat = connection.prepareStatement(sql);            System.out.println(sql);            System.out.println(args.length);            for (int i = 0; i < args.length; i++) {                pstat.setString(i+1, args[i]);                System.out.println(pstat);            }            pstat.executeUpdate();            connection.commit();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }

删除

值得注意的是,这里就是我刚才所讲的,返回的受影响的行数,所以这里人返回的是int类型的rs2。在之后的编写中可以通过这个rs2判断是否删除成功。

        public int delete(String sql){            try {                connection = getConnection();                stat = connection.createStatement();                rs2 = stat.executeUpdate(sql);                return rs2;            } catch (SQLException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            return 0;        }

最后很重要的一步,关闭数据库连接,释放资源

    public void close(){        try {            if(rs1!=null) {                rs1.close();            }            if(stat!=null) {                rs1.close();            }            if(pstat!=null) {                rs1.close();            }            if(connection!=null) {                rs1.close();            }        } catch (SQLException e) {            // TODO: handle exception        }    }

至此这个db数据库连接类就完成了,你可以通过更换中间连接类所讲的一些变量来适应你的数据库,这样一个万能的数据库连接类就完成了。

最后注意

请先保证你的数据库可正常连接,并且一些驱动及URL地址等信息填写正确,不然就会出现连接不上的问题。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台