Java之JDBC

JDBC的工作流程:(图片来自:https://blog.csdn.net/caihuangshi/article/details/51265324)

JDBC全称Java Database Connectivity 是一种可用于执行SQL语句的java接口,位于java.sql,javax.sql包下,主要工作流程其实上图已经说明:包括1.加载驱动程序;2.建立链接;3.向数据库发送SQL语句;4.处理返回结果;5.关闭链接。

JDBC中的常用接口和类如下图:(图片来自:https://blog.csdn.net/caihuangshi/article/details/51265324)

1.DriverManager类:用于管理数据库中的所有驱动程序,java中使用Class类的静态方法实现forName(String className)加载需要链接的数据库的驱动程序。常用的方法:

      

加载posgresql数据库的语句如下:

try{
    Class.forName("org.postgresql.Driver");
}catch(ClassNotFoundException e){
    e.printStackTrace();
}

2.Connection 接口:

与特定数据库的连接(会话)。 执行SQL语句并在连接的上下文中返回结果。

常用方法:

3.Statement接口:用于在已经建立链接的基础上向数据库发送SQL命令。

主要方法:

try{
    Statement stmt=con.createStatement();
}catch(SQLException e){
    e.printStackTrace();
}

4.PreparedStatement接口

PreparedStatement用来执行动态SQL语句

5.CallableStatement接口

用来执行数据库中的存储过程。

主要方法:get+数据类型():以java中指定类型的形式获取指定的JDBC中相应类型参数的值。

                  set+数据类型():以指定参数为java中指定数据类型的值。

我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后执行,而存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。----关于存储过程的调用摘自https://www.cnblogs.com/Qian123/p/5349884.html#_label1

 

6.ResultSet接口:

类似于一个临时表,用来暂时存放数据库操作所获得的结果集。

实例:

package com_jdbc_test;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcTest {

	public static void main(String[] args) {
		Connection c = null;
		Statement stmt = null;
		try {
			Class.forName("org.postgresql.Driver");
			c = DriverManager.getConnection("jdbc:postgresql://xxxxxxx:xxxx/postgres", "xxxx", "xxxx");
			c.setAutoCommit(false); // 把自动提交
//			System.out.println("Opened database successfully");
//			String sql="select ss();";
//			stmt = c.createStatement(); 
//			stmt.executeQuery(sql);
			CallableStatement cc=c.prepareCall("{call ss()}");
			CallableStatement cs=c.prepareCall("{call fangwen2()}");
			cc.execute();
			cs.execute();
			ResultSet re=cc.getResultSet();
			ResultSet re2=cs.getResultSet();
			while(re2.next()) {
				System.out.println("执行结果为:"+re2.getString(1));
			}
	        System.out.println("执行成功");
			stmt.close();
			c.commit();
			c.close();
		}catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
			System.exit(0);
		}
	}

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值