PreparedStatement、Statement、CallableStatement

分别介绍:

①、PreparedStatement:

PreparedStatement是用来执行SQL查询语句的API之一,用于执行参数化查询;是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:

public class PreparedStmtExample {
 
    public static void main(String args[]) throws SQLException {
        Connection conn = DriverManager.getConnection("数据库地址", "名字", "密码");
        PreparedStatement preStatement = conn.prepareStatement("select distinct loan_type from loan where bank=?");
        preStatement.setString(1, "Citibank");
 
        ResultSet result = preStatement.executeQuery();
 
        while(result.next()){
            System.out.println("Loan Type: " + result.getString("loan_type"));
        }       
    }
}
②、Statement:

用于通用查询,不可以传递动态参数,(不建议使用)下面是一个例子:

Connection connection = DriverManager.getConnection("数据库地址", "名字", "密码");

//检查数据是否存
String strSql1 = "SELECT COUNT(*) count FROM user_authentication WHERE user_id = 1  AND status = 3";
Statement statement =connection.createStatement();
ResultSet resultSet = statement.executeQuery(strSql1);
int row = 0;
 f(resultSet.next())    
 {    
    row = resultSet.getInt("count");
 }

③、CallableStatement:

是用于存储过程,下面是一个例子:(未验证)

Connection connection = DriverManager.getConnection("数据库地址", "名字", "密码");

CallableStatement cstmt = connection.prepareCall("{call getTestData(?, ?)}");
cstmt.registerOutParameter(1, java.sql.Types.TINYINT);
cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3);
cstmt.executeQuery();
byte x = cstmt.getByte(1);
java.math.BigDecimal n = cstmt.getBigDecimal(2, 3);

上面是网上的案例,我一般是这么调用的:

ZpmsStoredProcedure storedProcedure = new ZpmsStoredProcedure(getDataSource());
 storedProcedure.setSql("ypl_ht_review_realname");//存储过程名字


storedProcedure.declareParameter(new SqlParameter("userId",Types.INTEGER));//输入参数
storedProcedure.declareParameter(new SqlParameter("stateCode",Types.INTEGER));


storedProcedure.declareParameter(new SqlOutParameter("result", Types.INTEGER));//输出参数
Map<String, Object> out = storedProcedure.execute(map);//执行

int result = Integer.parseInt(String.valueOf(out.get("result")));//得到输出参数

----------------------------------------------下面是上面用的封装类------------------------------------------------------------

ZpmsStoredProcedure:

import javax.sql.DataSource;
import org.springframework.jdbc.object.StoredProcedure;

public class ZpmsStoredProcedure extends StoredProcedure {
    public ZpmsStoredProcedure(DataSource dataSource){
        super();
        super.setDataSource(dataSource);
    }
}


getDataSource()由来:

import javax.sql.DataSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.core.simple.SimpleJdbcCallOperations;

public abstract class AbstractDao {
    private DataSource dataSource;
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    public DataSource getDataSource() {
        return dataSource;
    }
    protected SimpleJdbcCallOperations getSimpleJdbcCall() {
        return new SimpleJdbcCall(dataSource);
    }
}


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值