概述
????JDBC
1、JDBC基础流程
- 加载驱动
- 获取连接
- 准备sql
- 封装处理块
- 发送sql数据返回结果
- 处理结果
- 关闭资源
public class Test01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取连接
Connection conn=DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:XE",
"SCOTT",
"TIGER"
);
//准备sql
String sql="select * from dept";
//封装处理快
Statement statement=conn.createStatement();
//发送sql获取结果
ResultSet result=statement.executeQuery(sql);
//处理结果
while(result.next()){
int deptno=result.getInt(1);
String dname=result.getString(2);
String loc=result.getString(3);
System.out.println("deptno="+deptno+",dname="+dname+",loc="+loc);
}
//关闭资源
result.close();
conn.close();
statement.close();
}
}
2、优化流程,封装成工具类
public class JdbcTool {
private static Properties pro =new Properties();
static{
//获取配置文件
try {
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("demo.properties"));
} catch (IOException e) {
System.out.println("IO异常");
}
//加载驱动
try {
Class.forName(pro.getProperty("driver"));
} catch (ClassNotFoundException e) {
System.out.println("未找到启动路径");
}
}
//封装链接
private static Connection conn=null;
public static Connection getconnection() throws SQLException {
conn = DriverManager.getConnection(
pro.getProperty("url"),
pro.getProperty("name"),
pro.getProperty("password")
);
return conn;
}
//封装关闭
public static void close(ResultSet result, Connection conn,Statement statement){
//关闭资源
if(result!=null){
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
测试类:main
public class Test01 {
public static void main(String[] args) {
Jdbc.jdbc();
}
}
class Jdbc{
public static void jdbc(){
//获取连接
Connection conn=null;
//准备sql
String sql="select * from dept";
//封装处理快
//发送sql获取结果
ResultSet result= null;
Statement statement= null;
try {
//获取连接
conn=JdbcTool.getconnection();
//打包
statement = conn.createStatement();
//发送
result = statement.executeQuery(sql);
//处理结果
while(result.next()){
System.out.println(
"deptno="+ result.getObject(1)+"," +
"dname="+result.getObject(2)+"," +
"loc="+result.getObject(3));
}
} catch (SQLException e) {
System.out.println("sql异常");
} finally {
//关闭资源
JdbcTool.close(result,conn,statement);
}
}
}
运行结果:》》》
3、扩展:数据库通用访问对象BaseDao
//通用的数据更新功能
public static boolean basedao(String sql,Object...args){
boolean flag=false;
Connection con=null;
PreparedStatement pment=null;
ResultSet sr=null;
try {
con=JdbcTool.getconnection();//获取连接
//封装块
pment=con.prepareStatement(sql);
//赋值?
if(args.length!=0&&args!=null){
for (int i = 0; i <args.length ; i++) {
pment.setObject(i+1,args[i]);
}
}
//传输
int row=pment.executeUpdate();//返回更新几条记录
//判断是否插入成功
if(row>0) {
flag=true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcTool.close(sr,con,pment);
}
return flag;
}
????小知识点:
关于静态方法为什么不能使用类的泛型:
原因: 在java中泛型只是一个占位符,必须在传递类型后才能使用就泛型而言,类实例化时才能正真的的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数静态的方法就已经加载完成了。
最后
以上就是整齐白开水为你收集整理的JDBC基本流程的全部内容,希望文章能够帮你解决JDBC基本流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复