简单SQLHelper(java)

  在学习制作jsp网站时,学习写了一份SQLHelper文档(静态调用),内容及其精简,考虑不周之处甚多,不过新手学习还是勉强可以用的。😂

       JDBC参考和学习:https://www.yiibai.com/jdbc/       易百教程

首先,看一下正常JDBC的使用过程.

//导入包
import java.sql.*;
//几个需要用到的字符串
static final String driver = "com.mysql.jdbc.Driver";
//第一项固定,第二项是地址和端口,第三项是数据库名
static final String url = "jdbc:mysql://localhost:3306/test";
//数据库名和密码
static final String user = "username";
static final String password = "password";
//第一步:打开驱动
Class.forName(driver);
//第二步:打开连接
Connection conn = DriverManager.getConnection(url,user,password);
//第三步:创建SQL语句和执行SQL语句
Statement stmt = conn.createStatement();
String sql= "SELECT id FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

//第四步:处理返回的结果
while(rs.next()){
    //获取结果
    int id  = rs.getInt("id");
    //处理结果
    System.out.print("ID: " + id);
}
//第五步:关闭连接
rs.close();
stmt.close();
conn.close();

 

现在开始,创建我们的SQLHelper。

       这里SQLHelper文档为静态方法,直接调用,所以令其无法实例化。

  1.首先要导入包,建立类

import java.sql.*;
public class SQLHelper {
    private SQLHelper()
    {
    }
}

      2.在连接JDBC的时候,我们会用到相对不变的一些字符串 

  这些字符串为静态的属性。

private static Connection conn=null;
private static Statement stm=null;
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://localhost:3306/test";
private static String user="username";
private static String password="password";

      如果使用时会有使用不同数据库,或其他设置时,可以写个方法修改这些字符串。例如:public static void seturl(str){url=str;}

      3.打开驱动和连接

private static Connection Getconn(){
    try{
        Class.forName(driver);
        return DriverManager.getConnection(url,user,password);
    }catch(Exception ex){
        return null;
    }
}

  4.创建stm

private static Statement Getstatement(){
    conn=Getconn();
    if(conn==null)return null;
    try {
        return conn.createStatement();
    } catch (SQLException e) {
        return null;
    }
}

  5.执行sql语句返回结果

  执行查询语句,返回结果集  

public static ResultSet ExcueteQuery(String str){
    stm=Getstatement();//包含创建conn和stm
    ResultSet rs=null;
    if(stm==null){Close();return rs;}//判断jdbc连接成功与否
    try {
        rs= stm.executeQuery(str);
    } catch (SQLException e) {
        rs= null;
        Close();//关闭连接的函数,下文写
    }
    return rs;//返回函数结果
}

  执行操作语句,返回受影响行数

public static int ExcueteNonQuery(String str){
    stm=Getstatement();//包含创建conn和stm
    int i=0;
    if(stm==null){Close();return -1;}//判断jdbc连接成功与否
    try {
        i= stm.executeUpdate(str);
    } catch (SQLException e) {
       i= -1;
       Close();//关闭连接的函数,下文写
    }
    return i;//返回函数结果
}

  查询某个数据库的值

public static Object ExcueteScalar(String str){
    stm=Getstatement();
    Object obj="null";
    if(stm==null){Close();return obj;}
    try {
        ResultSet rs=stm.executeQuery(str);//执行查询语句,返回第一行第一个结果
        if(rs!=null){
            rs.next();
            obj=rs.getObject(1);
        }
    } catch (SQLException e) {
       obj= "null";
       Close();
    }
    return obj;//返回结果,函数类型也可以直接设置为String
}

 

  此三个函数为外部类调用的接口方法,也是主要的查询方法,所以这三个方法为公有public类型,其他方法为私有private类型。调用如下:

//查询返回表
ResultSet rs=SQLHelper.ExcuteQuery(sql);
//插入、更新、删除数据
SQLHelper.ExcuteNonQuery(sql);
//查询某个值
String s=SQLHelper.ExcuteScalar(sql).ToString();

  6.关闭连接

private static void Close(){
    if(stm!=null){
        try {
            stm.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    if(conn!=null){
       try {
          conn.close();
       } catch (SQLException e) {
          // TODO Auto-generated catch block
            e.printStackTrace();
         }
    }
}

  

  至此,简单的SQLHelper书写完成,它包括了三个接口用于执行SQL语句。(在执行查询时,因为在错误时返回了rs=null,因此外部类在查询时,先要判断一次结果是否为null)

  思考: 1.连接不同的数据库,可以添加方法setURL()等修改原有字符串

      2.错误提示,可以增加一个属性ErrorMessage,在出现不同异常时,向其中写入,最后提供一个getError();

      3.仿照4.5,可以写PreparedStatement,CallableStatement类型的方法

      4.多数据库连接,可以修改成实例化的SQLHelper文档,不同的实例连接不同数据库。

posted @ 2018-06-08 15:31  新手之小龙  阅读(1375)  评论(0编辑  收藏  举报