`

JAVA基础 之 PreparedStatement

    博客分类:
  • java
阅读更多

概述:

    1.本文为了代码结构清晰 采用的是try-with-resource结构,请在java7下使用(或者自己改成普通模式)

    2.预编译的sql语句存储在PreparedStatement对象中,所以PreparedStatement的执行效率要高于Statement

    3.使用占位符(?)的方式,使得重复的结构重复的语句不用重复的编写

       例如:Statement下如果我想插入两条记录

           stmt.addBatch("insert into t_student values ('11','小明','男')");

           stmt.addBatch("insert into t_student values ('22','小明2','男')");

           PreparedStatement下 使用占位符,只需要录入占位符的数据即可

           con.prepareStatement("insert into t_student values (?,?,?)"); 具体见例子

    4.这样的好处:

       1.防止重复编写多个结构类似的sql语句

       2.没有拼接字符串的烦恼

       3.防止sql注入(拼接字符串 会带来sql注入问题)

       4.sql语句预编译在PreparedStatement对象中,性能好

    5.使用前建议先看看Statement相关文章,很多方法类似

package com.cxy.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

/**
 * @author cxy
 */
public class PreparedStatementTest
{
	public static void main(String[] args)
	{
		try(
				Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
				PreparedStatement pstmt=con.prepareStatement("insert into t_student values (?,?,?)");
		   )
		   {
			    //executeUpdate 执行插入语句
				pstmt.setString(1, "123");
				pstmt.setString(2, "小红");
				pstmt.setObject(3, "女"); //如果不知道占位符是什么类型的数据就用setObject,jdbc会自动为您转成合适的类型
				pstmt.executeUpdate();
				System.out.println("=======================");
				
				//clearParameters:清理当前的参数,如果直接执行会带来异常:No value specified for parameter 1
				//pstmt.clearParameters();
				//pstmt.executeUpdate(); 
				
				//executeQuery执行查询语句,返回结果集
				PreparedStatement pstmt1=con.prepareStatement("select * from t_student");
				printResultSet(pstmt1.executeQuery());
				System.out.println("=======================");
				
				//ResultSetMetaData:ResultSet对象的相关信息
				ResultSetMetaData rsmd = pstmt1.getMetaData();
				System.out.println("结果集字段的个数:"+rsmd.getColumnCount());
				System.out.println("表名:"+rsmd.getTableName(1)); //获得指定参数所在表的表名
				//更多的方法请看ResultSetMetaData相关文章
		   }catch(Exception e)
		   {e.printStackTrace();
			   System.out.println("数据库操作出现异常");
		   }
	}
	
	public  static void printResultSet(ResultSet rs2)
	{
		try
		{
			while(rs2.next())
			{
				System.out.println(rs2.getString(1)+"\t"+rs2.getString(2)+"\t"+rs2.getString(3));
			}
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}

}

 

相关链接:

《Java基础 之 Statement》

2
2
分享到:
评论

相关推荐

    JDBC基础教程之PreparedStatement.doc

    ### JDBC基础教程之PreparedStatement知识点详解 #### 一、概述 `PreparedStatement`是Java数据库连接(JDBC)API中的一种重要接口,它继承自`Statement`接口,并在其基础上进行了扩展和优化。`PreparedStatement`...

    java基础知识应用

    在“java基础知识应用”这个主题中,我们主要探讨的是Java语言的基础概念及其在实际开发中的应用,特别是与数据库交互的部分。 一、Java语言基础 1. 类与对象:Java基于面向对象的编程理念,所有程序都是由类和对象...

    【IT十八掌徐培成】Java基础第23天-02.sql注入-preparedstatement-批量插入.zip

    在IT领域,尤其是在Java编程中,SQL注入是一个重要的安全问题,而PreparedStatement是解决这一问题的有效手段之一。批量插入则是提高数据库操作效率的关键技术。今天我们就来深入探讨这些知识点。 首先,我们来理解...

    java基础笔记

    本篇将详细探讨Java基础,涵盖面向对象编程、Java Standard Edition (Java SE)、MySQL数据库、Java Database Connectivity (JDBC)以及Web开发相关知识。 首先,让我们深入理解面向对象编程。面向对象编程(Object-...

    最经典的Java基础实验与案例开发指导教程精选

    本教程"最经典的Java基础实验与案例开发指导教程精选"旨在提供一个全面的学习平台,帮助新手快速掌握Java编程的核心概念。以下是对该教程内容的详细解读: 1. **Java基础概念**:Java的基础包括变量、数据类型、...

    Java基础总结笔记

    Java基础总结笔记主要涵盖了编程语言Java的核心概念和应用领域,旨在为初学者提供全面的指导。以下是这些知识点的详细说明: 1. **Java基础语法**:这是学习Java的第一步,包括变量、数据类型(基本类型与引用类型...

    Java基础类

    Java基础类是学习Java编程语言的关键部分,涵盖了各种核心概念和技术。这些概念和技术构成了Java程序设计的基础,并在实际开发中广泛应用。以下是对标题和描述中提及的Java基础类知识点的详细解释: 1. **字符串...

    javajava基础基础

    一、Java 流和文件操作 Java 中的流主要分为两类:字节流和字符流,它们分别继承自 ...这些知识点涵盖了 Java 的基础知识,包括文件操作、数据库交互、网络编程以及 GUI 开发,对于理解和掌握 Java 编程至关重要。

    Java基础资料

    这份"Java基础资料"涵盖了从Java基础知识到高级特性的全面学习路径,旨在帮助初学者快速掌握Java编程。 第一章:JAVA基础 这部分内容将引导你了解Java的基础概念,包括安装JDK(Java Development Kit),设置环境...

    JAVA初级基础PPT

    14. **JDBC(Java Database Connectivity)**:学习如何连接数据库,执行SQL查询,以及使用PreparedStatement和ResultSet对象。 15. **Java注解**:理解注解的用途,包括元注解和自定义注解,以及它们在编译时和...

    java基础巩固

    "Java基础巩固"的主题涵盖了Java语言的核心概念和技术,是准备Java面试或深化编程技能的重要资源。下面将对Java的基础知识、数据库交互、框架以及常见的面试题进行详细阐述。 一、Java基础知识 1. **语法与数据...

    java入门基础汇,总如何学习java

    1. **Java面向对象**:面向对象是Java的核心特性之一,它基于类和对象的概念。类是具有属性(数据成员)和行为(方法)的模板,而对象则是类的实例。面向对象编程(OOP)包含三个主要原则:封装,继承和多态。封装...

    Java基础之JDBC相关代码

    Java基础之JDBC相关代码是Java编程中一个重要的部分,主要涉及如何与关系型数据库进行交互。在Java中,JDBC(Java Database Connectivity)是一套规范,它为开发者提供了标准的API,使得Java应用程序能够连接到各种...

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

    在Java编程中,PreparedStatement是Java SQL API中的一个接口,它是Statement接口的子接口。...同时,这也是一个很好的机会去学习数据库连接管理、事务控制和异常处理等Java数据库编程的基础知识。

    【IT十八掌徐培成】Java基础第23天-02.sql注入-preparedstatement-批量插入 - 副本.zip

    在IT领域,尤其是在Java编程中,SQL注入是一个重要的安全问题,而PreparedStatement是解决这一问题的有效手段之一。批量插入则是提高数据库操作效率的关键技术。今天我们将深入探讨这两个知识点。 首先,让我们来...

    java基础代码

    这份名为“java基础代码”的压缩包显然是一份针对初学者的资源集合,涵盖了Java编程的基础概念和重要领域。以下是对每个文件名所代表的知识点的详细解释: 1. **线程代码**: 线程是程序中的执行流程,Java提供了...

    复习java基础.pdf

    以上知识点涵盖了Java基础中的核心部分,包括数据类型处理、数据库交互、安全编程和并发编程。理解并熟练运用这些概念对于任何Java开发者来说都是至关重要的。对于准备面试或者巩固基础的同学,深入理解和实践这些...

    PreparedStatement详细用法

    `PreparedStatement`是Java JDBC API中的一个关键类,用于执行预编译的SQL语句。它继承自`Statement`类,并在其基础上提供了更多的功能和优化。在Java应用程序与数据库交互的过程中,`PreparedStatement`的使用能够...

    Java基础知识代码

    这个名为"Java基础知识代码"的资源包旨在帮助初学者快速掌握Java的核心概念和技术。下面将详细阐述其中涉及的知识点: 1. **异常处理**: 在Java中,异常是程序运行时发生的问题。使用`try-catch`块可以捕获并处理...

    Java基础知识精华总结

    这份"Java基础知识精华总结"压缩包,显然是一份集大成的学习资源,旨在帮助初学者或需要巩固基础的开发者系统地掌握Java的核心概念。 首先,文档《Java基础知识笔记总结》可能会涵盖以下内容: 1. **Java简介**:...

Global site tag (gtag.js) - Google Analytics