java 数据库工厂_0、原生jdbc工厂类

一、代码结构

9964bb31561d072c0932566c3b96b2eb.png

二、JDBCFactory.java

packagecom.test;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;public classJDBCFactory {//定义静态属性

private staticString DRIVER;private staticString URL;private staticString USERNAME;private staticString PASSWORD;//静态代码块,用来加载资源文件中的信息,且只会加载一次

static{//1、加载数据配置文件(资源对象)

Properties pro=newProperties();//2、将资源读取成字节输入流

InputStream is=JDBCFactory.class.getResourceAsStream("jdbc.sqlserver.properties");try{//3、通过资源对象加载字节输入流

pro.load(is);//4、资源对象通过key来获取对应的文件中的value

DRIVER=pro.getProperty("jdbc.driver");

URL=pro.getProperty("jdbc.url");

USERNAME=pro.getProperty("jdbc.username");

PASSWORD=pro.getProperty("jdbc.password");

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}/**建立数据库连接的静态方法

*@return如果有异常,则会返回null*/

public staticConnection getConn(){

Connection ct=null;try{//1、加载驱动

Class.forName(DRIVER);//2、得到连接

ct=DriverManager.getConnection(URL,USERNAME,PASSWORD);

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}returnct;

}/*** 静态方法,用来关闭资源,注意关闭顺序,否则可能报错*/

public static voidcloseAll(Connection ct,Statement st,ResultSet rs){if(rs!=null){try{

rs.close();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}if(st!=null){try{

st.close();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}if(ct!=null){try{

ct.close();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

三、jdbc.sqlserver.properties

jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

jdbc.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb1

jdbc.username=sa

jdbc.password=m123

四、TestClass.java

packagecom.test;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Timestamp;public classTestClass {

Connection ct;

PreparedStatement ps=null;

ResultSet rs;public static voidmain(String[] args) {

TestClass tc=newTestClass();

tc.ct=JDBCFactory.getConn();

String sql="insert into student_table(stuname,stuage,stusex,stubirth,stusubj) values(?,?,?,?,?)";try{

tc.ps=tc.ct.prepareStatement(sql);

tc.ps.setString(1, "哈哈");

tc.ps.setInt(2, 20);

tc.ps.setString(3, "男");

tc.ps.setTimestamp(4, null);

tc.ps.setString(5, "呵呵");

tc.ps.executeUpdate();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

JDBCFactory.closeAll(tc.ct, tc.ps,null);

}

}

}

五、说明

jbdc的常用API:

1.Connection:数据库的链接对象

2.statement:数据库sql执行对象

3.preparedStatment:sql的预编译处理对象,是statement子接口

4.resultset:返回查询的结果集

jdbc开发步骤:

1.在项目中加入驱动jar包

2.写jdbc链接代码

preparedStatment 预编译sql命令接口:

1.会对sql语句进行编译检查,可以用参数占位符的方式编写sql语句

2.作用:比普通statement接口执行效率更高。可以防止sql注入的侵入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值