`
Luob.
  • 浏览: 1590361 次
  • 来自: 上海
社区版块
存档分类
最新评论

Statement 和 PreparedStatement ,CallabelStatement

    博客分类:
  • JDBC
阅读更多
package com.enhance.jdbc;

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class PreparedStatementTest {
	private String driver;
	private String url;
	private String user;
	private String pass;
	private Statement stmt;
	private ResultSet rs;
	private PreparedStatement pstmt;
	public void initParam(String paramFile) throws Exception{
		Properties prop=new Properties();
		prop.load(new FileInputStream(paramFile));
		driver=prop.getProperty("driver");
		url=prop.getProperty("url");
		user=prop.getProperty("user");
		pass=prop.getProperty("pass");
	}
	public Connection getConnection() throws ClassNotFoundException, SQLException{
		Class.forName(driver);
		return DriverManager.getConnection(url,user,pass);
	}
	
	public void executeDmlAndDdlUseStmt()throws Exception{
		long start=System.currentTimeMillis();
		Connection conn=null;
		try {
			conn=getConnection();
			stmt=conn.createStatement();
			for (int i = 0; i < 1000; i++) {
				stmt.executeUpdate("insert into my_test (test_name)"
						+ " values('姓名"+i+"')");
			}
			System.out.println("使用Statement费时:"+(System.currentTimeMillis()-start));
			
		}finally{
			if(rs!=null)
				rs.close();
			if(stmt!=null)
				stmt.close();
			if(conn!=null)
				conn.close();
		}
		
		
	}
	
	public void executeDmlAndDdlUsePstmt()throws Exception{
		long start=System.currentTimeMillis();
		Connection conn=null;
		try {
			conn=getConnection();
			pstmt=conn.prepareStatement("insert into my_test (test_name) values(?)");
			
			for (int i = 0; i < 1000; i++) {
				pstmt.setString(1, "姓名2"+i);
				pstmt.executeUpdate();
			}
			System.out.println("使用PreparedStatement费时:"+(System.currentTimeMillis()-start));
			
		}finally{
			if(rs!=null)
				rs.close();
			if(pstmt!=null)
				pstmt.close();
			if(conn!=null)
				conn.close();
		}
		
		
	}
	
	/**
	 * 创建存储过程
	 * delimiter //
	 * create or replace procedure(a int,b int,out sum int)
	 * begin
	 * set sum=a+b;
	 * end;
	 * //
	 */
	public void callProcedure() throws Exception{
		try {
			Class.forName(driver);
			conn=DriverManager.getConnection(url,user,pass);
			
			cstmt=conn.prepareCall("{call add_proc(?,?,?)}");
			cstmt.setInt(1, 4);
			cstmt.setInt(2, 5);
			//注册 输出参数
			cstmt.registerOutParameter(3, Types.INTEGER);
			cstmt.execute();
			System.out.println("执行结果是:"+cstmt.getInt(3));
			
		}finally{
			if(cstmt!=null)
				cstmt.close();
			if(conn!=null)
				conn.close();
		}
		
	}

	public static void main(String[] args) throws Exception{
		PreparedStatementTest pst=new PreparedStatementTest();
		pst.initParam("src/mysql.ini");
		pst.executeDmlAndDdlUseStmt();
		pst.executeDmlAndDdlUsePstmt();
	}
	
	
}
分享到:
评论

相关推荐

    Statement和PreparedStatement之间的区别

    Statement和PreparedStatement之间的区别 Statement和PreparedStatement是JDBC中的两种不同的语句对象,用于执行数据库操作。虽然它们都可以执行SQL语句,但是它们之间存在着很大的区别。 首先, Statement对象...

    java中PreparedStatement和Statement的区别

    Java 中 PreparedStatement 和 Statement 的区别 Java 中的 PreparedStatement 和 Statement 都是用于执行 SQL 语句的接口,但是它们之间存在一些关键的区别。 首先,从数据库执行 SQL 语句的角度来看,使用 ...

    详解Java的JDBC中Statement与PreparedStatement对象

    在Java的JDBC(Java Database Connectivity)中,与数据库交互的核心接口是Statement和PreparedStatement。这两个接口都是用于执行SQL语句的,但它们在特性和效率上有所不同。 Statement接口是最基本的SQL执行方式...

    statement和prepared区别

    其中,Statement和PreparedStatement是两种常用的SQL语句执行接口。在理解和掌握它们之间的区别之前,我们需要首先了解JDBC对于数据库操作的基本概念。 JDBC的主要作用是提供了一套标准的API,使得Java程序能够连接...

    PreparedStatement和Statement

    在Java编程中,数据库操作是常见任务之一,而`PreparedStatement`和`Statement`是Java JDBC(Java Database Connectivity)中用于执行SQL语句的两种主要接口。它们都是`java.sql`包下的类,用来与数据库进行交互,但...

    connection 和 preparedstatement 的关闭问题

    正确地选择`Statement`和`PreparedStatement`以及适时地关闭它们对于保证应用程序的性能和稳定性至关重要。理解它们之间的区别,并根据实际需求选择合适的方法,能够显著提升应用的质量。同时,合理管理`Connection`...

    prepareStatement和Statement的区别

    prepareStatement和Statement的区别 prepareStatement和Statement是 Java 中两个常用的数据库操作接口,它们都可以用来执行 SQL 语句,但是它们之间有着明显的区别。 首先,从创建时的区别开始,Statement 需要...

    数据库-数据库编码解决方案

    首先我们设计Connection接口的代理类_Connection,这个代理类接管了Connection接口中所有可能获取到Statement或者PreparedStatement接口实例的方法,例如:prepareStatement和createStatement。改变这两个方法使之...

    关于PreparedStatement插入Date类型值的方法.txt

    `PreparedStatement`是`Statement`接口的子接口,用于预编译SQL语句,并可以重复执行这些预编译过的SQL语句。这不仅能够提高应用程序的性能,还能提高安全性,因为它支持参数化查询,避免了SQL注入的风险。 #### 二...

    如何获得PreparedStatement最终执行的sql语句

    一种可能的方法是通过日志配置,例如,启用MySQL的`Statement`和`PreparedStatement`日志,这样在执行时会打印出详细的SQL语句。 另外,开发工具如IntelliJ IDEA、Eclipse等,或者数据库管理工具如MySQL Workbench...

    Java-JDBC【源码】JDBC概述、获取连接、SQL注入问题与解决、查询解析

    Java-JDBC【之】JDBC概述、获取连接、SQL注入问题与解决、查询...3.SQL注入问题与解决(Statement 、PreparedStatement) 3.1.模拟SQL注入 3.2.PreparedStatement解决 3.3.Statement 与 PreparedStatement 4.完整源码

    PreparedStatement详细用法

    在这个例子中,首先定义了一个包含占位符的SQL语句,接着通过`connection`对象的`prepareStatement`方法创建`PreparedStatement`实例,然后通过`setInt`和`setString`方法设置参数值,最后调用`executeQuery`方法...

    怎样实现关闭connection时自动关闭Statement和ResultSet (下篇)

    这篇博客的下篇主要讨论了如何在关闭Connection时自动关闭Statement和ResultSet,以确保资源的有效释放,防止内存泄漏。以下是对这个主题的详细解释。 首先,我们需要理解数据库连接、Statement和ResultSet在JDBC中...

    练习3:使用PreparedStatement插入宠物信息.zip

    在Java编程中,PreparedStatement是Java SQL API中的一个接口,它是Statement接口的子接口。这个练习主要涉及如何使用PreparedStatement来插入宠物信息到数据库中。PreparedStatement的主要优势在于它的预编译能力和...

    JDBC.zip_创建数据对象

    6. **关闭资源**:操作完成后,记得关闭ResultSet、Statement和Connection,以释放系统资源。 在项目开发中,`.classpath`和`.project`文件是Eclipse IDE的配置文件,它们定义了项目的构建路径和项目元数据。`bin`...

    JDBC基础教程之PreparedStatement.doc

    `PreparedStatement`是Java数据库连接(JDBC)API中的一种重要接口,它继承自`Statement`接口,并在其基础上进行了扩展和优化。`PreparedStatement`的主要特点在于它可以预先编译SQL语句,并允许用户在执行前动态地...

    34.jdbc中preparedStatement比Statement的好处.avi

    jdbc中preparedStatement比Statement的好处

    PreparedStatement 详细用法

    在Java编程语言中,`PreparedStatement`是`java.sql`包中的一个接口,它继承自`Statement`类,并提供了预编译SQL语句的功能。预编译SQL语句的主要优势在于提高了执行效率和安全性。尤其在处理动态查询或频繁执行相同...

    JDBC技术使用标准的 SQL 语言对数据库表中的数据进行访问,以及增删查改

    6. 处理ResultSet,如果有的话,然后依次关闭ResultSet、Statement和Connection,释放资源。 在实际开发中,为了更好地管理和处理异常,通常会采用try-catch-finally结构来封装这些步骤,确保资源得到正确释放。...

Global site tag (gtag.js) - Google Analytics