Statement:执行sql语句的工具接口
概述:
1.本文为了代码结构清晰 采用的是try-with-resource结构,请在java7下使用(或者自己改成传统模式)
2.sql大体的分类
a.查询(select)
b.DDL—数据定义语言(create,alter,drop)
c.DML—数据操纵语言(delete,update,insert)
d.DCL—数据控制语言(grant,revoke)
e.事务控制(commit,rollback)
这是详细的分类,很多分类是把a并入b,e并入d
3.executeQuery、execute、executeUpdate区别
executeQuery:顾名思义,执行查询语句,返回类型是ResultSet
executeUpdate:执行DDL和DML语句,返回类型 int,DDL执行后返回0,DML执行后返回受影响的记录行数
execute:什么都能执行,需要注意的是他的返回类型,返回的是boolean类型
true:代表有结果集,用stmt.getResultSet();来获得结果集
false:代表没有结果集,用stmt.getUpdateCount();来获得影响的记录数
4.本文介绍的方法列表
executeQuery、execute、executeUpdate、getResultSet、getUpdateCount
addBatch、executeBatch、clearBatch、close、isClosed、setMaxRows、getMaxRows
package com.cxy.jdbc; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * @author cxy */ public class StatementTest { public static void main(String[] args) { try( Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root"); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("select * from t_student"); ) { //stmt.executeQuery(...),看到了吧直接用ResultSet对象接的 System.out.println("id\t姓名\t 性别"); while(rs.next()) { System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)); } System.out.println("=============================="); //stmt.executeUpdate(DML) 返回执行后影响记录行数 System.out.println(stmt.executeUpdate("insert into t_student values ('1','小明','男')")); System.out.println(stmt.executeUpdate("delete from t_student")); System.out.println("=============================="); //stmt.executeUpdate(DDL) 成功返回0,不成功就报异常 System.out.println(stmt.executeUpdate("CREATE TABLE t_student1 (id_ varchar(32) not null)")); System.out.println(stmt.executeUpdate("DROP TABLE t_student1")); System.out.println("=============================="); //stmt.execute(sql) 成功返回boolean类型 boolean flag=stmt.execute("insert into t_student values ('1','小明','男')"); System.out.println("execute结果:"+flag); ResultSet rs1=stmt.getResultSet(); System.out.println(rs1); System.out.println("影响记录行数:"+stmt.getUpdateCount()); System.out.println("-------------------------------"); flag=stmt.execute("select * from t_student"); System.out.println("execute结果:"+flag); rs1=stmt.getResultSet(); System.out.println(rs1); System.out.println("影响记录行数:"+stmt.getUpdateCount()); System.out.println("=============================="); //addBatch:添加sql语句,进行批量执行 DatabaseMetaData dmd= con.getMetaData(); //获得数据库信息 我想看看当前数据库是否支持批量操作 boolean isSupportsBatchUpdates=dmd.supportsBatchUpdates(); System.out.println("是否支持批量操作?"+isSupportsBatchUpdates); if(isSupportsBatchUpdates) { stmt.addBatch("insert into t_student values ('11','小明','男')"); stmt.addBatch("insert into t_student values ('22','小明2','男')"); //stmt.clearBatch(); //清理 批量操作列表 开启这句发现上面两句被清空了 stmt.executeBatch(); //这个返回类型是int[] 每条语句执行后影响的记录行数组成的集合 printResultSet(stmt.executeQuery("select * from t_student")); }else { System.out.println("您的数据库不支持批量更新"); } System.out.println("=============================="); //setMaxRows stmt.setMaxRows(2); System.out.println("最大查询行数设置为:"+stmt.getMaxRows()); printResultSet(stmt.executeQuery("select * from t_student")); System.out.println("=============================="); //close、isClosed System.out.println("Statement是否关闭:"+stmt.isClosed()); stmt.close(); System.out.println("Statement是否关闭:"+stmt.isClosed()); }catch(SQLException e) { System.out.println("数据库操作出现异常"); } } /** * 打印ResultSet */ 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(); } } }
声明:
1.原创文章,转载请标明并加本文连接。
2.更详尽的API请参见 http://docs.oracle.com/javase/7/docs/api/
3.文章反映个人愚见,如有异议欢迎讨论指正
相关推荐
通过深入探讨`Statement`的创建、使用方法以及与之相关的其他类(如`PreparedStatement`和`CallableStatement`)的区别,帮助读者更好地理解如何在Java程序中执行SQL命令。 ### Java数据库连接中的Statement #### ...
在“java基础知识应用”这个主题中,我们主要探讨的是Java语言的基础概念及其在实际开发中的应用,特别是与数据库交互的部分。 一、Java语言基础 1. 类与对象:Java基于面向对象的编程理念,所有程序都是由类和对象...
本篇将详细探讨Java基础,涵盖面向对象编程、Java Standard Edition (Java SE)、MySQL数据库、Java Database Connectivity (JDBC)以及Web开发相关知识。 首先,让我们深入理解面向对象编程。面向对象编程(Object-...
Java基础类是学习Java编程语言的关键部分,涵盖了各种核心概念和技术。这些概念和技术构成了Java程序设计的基础,并在实际开发中广泛应用。以下是对标题和描述中提及的Java基础类知识点的详细解释: 1. **字符串...
本教程"最经典的Java基础实验与案例开发指导教程精选"旨在提供一个全面的学习平台,帮助新手快速掌握Java编程的核心概念。以下是对该教程内容的详细解读: 1. **Java基础概念**:Java的基础包括变量、数据类型、...
"Java基础巩固"的主题涵盖了Java语言的核心概念和技术,是准备Java面试或深化编程技能的重要资源。下面将对Java的基础知识、数据库交互、框架以及常见的面试题进行详细阐述。 一、Java基础知识 1. **语法与数据...
一、Java 流和文件操作 Java 中的流主要分为两类:字节流和字符流,它们分别继承自 ...这些知识点涵盖了 Java 的基础知识,包括文件操作、数据库交互、网络编程以及 GUI 开发,对于理解和掌握 Java 编程至关重要。
1. **Java面向对象**:面向对象是Java的核心特性之一,它基于类和对象的概念。类是具有属性(数据成员)和行为(方法)的模板,而对象则是类的实例。面向对象编程(OOP)包含三个主要原则:封装,继承和多态。封装...
Java基础之JDBC相关代码是Java编程中一个重要的部分,主要涉及如何与关系型数据库进行交互。在Java中,JDBC(Java Database Connectivity)是一套规范,它为开发者提供了标准的API,使得Java应用程序能够连接到各种...
本Java基础课件将带你深入理解和掌握这门强大的语言。 一、Java语言基础 Java的基础包括语法、数据类型、变量、运算符、流程控制语句等。数据类型分为基本类型(如int、float、char)和引用类型(如类、接口、数组...
1. 平台无关性是Java的核心特性之一,这意味着Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,无需针对特定操作系统进行修改。源代码级的平台无关性意味着用Java编写的程序在不同系统中只需重新编译即可,而...
这个"java基础视频-试看.rar"似乎是一份专为初学者设计的教程资源,帮助学习者掌握Java编程的基本概念和语法。让我们深入探讨一下Java的基础知识。 1. **Java简介**:Java是由Sun Microsystems(后被Oracle收购)...
以上知识点涵盖了Java基础中的核心部分,包括数据类型处理、数据库交互、安全编程和并发编程。理解并熟练运用这些概念对于任何Java开发者来说都是至关重要的。对于准备面试或者巩固基础的同学,深入理解和实践这些...
Java是一种广泛使用的...Java基础教程通常会涵盖以上这些内容,学习者可以通过阅读`Java基础教程.pdf`进一步深入理解和掌握Java编程的基础概念和技能。这个PDF文档将是一个全面的指南,帮助初学者逐步进入Java的世界。
根据提供的文件信息,我们可以推断出这是一份关于JAVA基础的教学资源,具体为SWF格式的视频教程。接下来,我们将围绕这份资源展开详细介绍,并从中提炼出相关的JAVA基础知识点。 ### JAVA基础swf视频教程下载(108...
### JAVA基础知识点详解 #### 第一章:开发简单JAVA应用程序 **1.1 简介** 本章节主要介绍如何开发简单的Java应用程序,包括Java语言的基础概念、发展历程以及开发环境的搭建。 **1.2 JAVA简介** Java是一种...
1. Java基础语法:Java是一种面向对象的编程语言,它严格区分大小写,要求程序员遵守特定的语法规则来编写代码。 2. 数据类型: - 基本数据类型:包括byte(8位)、short(16位)、int(32位)、long(64位)、...
【Java编程基础】是计算机科学领域的一门重要课程,尤其对于初学者而言,它是进入软件开发世界的敲门砖。Java以其“一次编写,到处运行”的跨平台特性,以及丰富的类库和强大的社区支持,成为了全球范围内广泛使用的...
Java Database Connectivity (JDBC) API是Java连接数据库的标准接口,通过DriverManager、Connection、Statement和ResultSet等类实现数据库的连接、查询、增删改操作。 这套【JAVA 基础教学课件】将详细讲解以上...
本课程"【IT十八掌徐培成】Java基础第22天-04.JDBC基础"可能是由知名IT教育专家徐培成教授的,主要讲解了Java基础的第22天课程,专注于JDBC的基础知识。课程内容可能涵盖了以下几个核心知识点: 1. **JDBC API概述*...