简单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文档,不同的实例连接不同数据库。