概述:
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(); } } }
相关链接:
相关推荐
### JDBC基础教程之PreparedStatement知识点详解 #### 一、概述 `PreparedStatement`是Java数据库连接(JDBC)API中的一种重要接口,它继承自`Statement`接口,并在其基础上进行了扩展和优化。`PreparedStatement`...
在“java基础知识应用”这个主题中,我们主要探讨的是Java语言的基础概念及其在实际开发中的应用,特别是与数据库交互的部分。 一、Java语言基础 1. 类与对象:Java基于面向对象的编程理念,所有程序都是由类和对象...
在IT领域,尤其是在Java编程中,SQL注入是一个重要的安全问题,而PreparedStatement是解决这一问题的有效手段之一。批量插入则是提高数据库操作效率的关键技术。今天我们就来深入探讨这些知识点。 首先,我们来理解...
本篇将详细探讨Java基础,涵盖面向对象编程、Java Standard Edition (Java SE)、MySQL数据库、Java Database Connectivity (JDBC)以及Web开发相关知识。 首先,让我们深入理解面向对象编程。面向对象编程(Object-...
本教程"最经典的Java基础实验与案例开发指导教程精选"旨在提供一个全面的学习平台,帮助新手快速掌握Java编程的核心概念。以下是对该教程内容的详细解读: 1. **Java基础概念**:Java的基础包括变量、数据类型、...
Java基础总结笔记主要涵盖了编程语言Java的核心概念和应用领域,旨在为初学者提供全面的指导。以下是这些知识点的详细说明: 1. **Java基础语法**:这是学习Java的第一步,包括变量、数据类型(基本类型与引用类型...
Java基础类是学习Java编程语言的关键部分,涵盖了各种核心概念和技术。这些概念和技术构成了Java程序设计的基础,并在实际开发中广泛应用。以下是对标题和描述中提及的Java基础类知识点的详细解释: 1. **字符串...
一、Java 流和文件操作 Java 中的流主要分为两类:字节流和字符流,它们分别继承自 ...这些知识点涵盖了 Java 的基础知识,包括文件操作、数据库交互、网络编程以及 GUI 开发,对于理解和掌握 Java 编程至关重要。
这份"Java基础资料"涵盖了从Java基础知识到高级特性的全面学习路径,旨在帮助初学者快速掌握Java编程。 第一章:JAVA基础 这部分内容将引导你了解Java的基础概念,包括安装JDK(Java Development Kit),设置环境...
14. **JDBC(Java Database Connectivity)**:学习如何连接数据库,执行SQL查询,以及使用PreparedStatement和ResultSet对象。 15. **Java注解**:理解注解的用途,包括元注解和自定义注解,以及它们在编译时和...
"Java基础巩固"的主题涵盖了Java语言的核心概念和技术,是准备Java面试或深化编程技能的重要资源。下面将对Java的基础知识、数据库交互、框架以及常见的面试题进行详细阐述。 一、Java基础知识 1. **语法与数据...
1. **Java面向对象**:面向对象是Java的核心特性之一,它基于类和对象的概念。类是具有属性(数据成员)和行为(方法)的模板,而对象则是类的实例。面向对象编程(OOP)包含三个主要原则:封装,继承和多态。封装...
Java基础之JDBC相关代码是Java编程中一个重要的部分,主要涉及如何与关系型数据库进行交互。在Java中,JDBC(Java Database Connectivity)是一套规范,它为开发者提供了标准的API,使得Java应用程序能够连接到各种...
在Java编程中,PreparedStatement是Java SQL API中的一个接口,它是Statement接口的子接口。...同时,这也是一个很好的机会去学习数据库连接管理、事务控制和异常处理等Java数据库编程的基础知识。
在IT领域,尤其是在Java编程中,SQL注入是一个重要的安全问题,而PreparedStatement是解决这一问题的有效手段之一。批量插入则是提高数据库操作效率的关键技术。今天我们将深入探讨这两个知识点。 首先,让我们来...
这份名为“java基础代码”的压缩包显然是一份针对初学者的资源集合,涵盖了Java编程的基础概念和重要领域。以下是对每个文件名所代表的知识点的详细解释: 1. **线程代码**: 线程是程序中的执行流程,Java提供了...
以上知识点涵盖了Java基础中的核心部分,包括数据类型处理、数据库交互、安全编程和并发编程。理解并熟练运用这些概念对于任何Java开发者来说都是至关重要的。对于准备面试或者巩固基础的同学,深入理解和实践这些...
`PreparedStatement`是Java JDBC API中的一个关键类,用于执行预编译的SQL语句。它继承自`Statement`类,并在其基础上提供了更多的功能和优化。在Java应用程序与数据库交互的过程中,`PreparedStatement`的使用能够...
这个名为"Java基础知识代码"的资源包旨在帮助初学者快速掌握Java的核心概念和技术。下面将详细阐述其中涉及的知识点: 1. **异常处理**: 在Java中,异常是程序运行时发生的问题。使用`try-catch`块可以捕获并处理...
这份"Java基础知识精华总结"压缩包,显然是一份集大成的学习资源,旨在帮助初学者或需要巩固基础的开发者系统地掌握Java的核心概念。 首先,文档《Java基础知识笔记总结》可能会涵盖以下内容: 1. **Java简介**:...