Statement:

用于执行SQL语句的对象

通过Connection的createStatement()方法得到一个Statement对象

只有在获得了Statement对象之后才能执行SQL对象

Statement常用的方法:

->ResultSet executeQuery() throws SQLException:用于执行查询语句,并返回查询结果对应的ResultSet,该方法只能用于执行查询语句。

->int executeUpdate(String sql) throws SQLException:用于执行DML语句,返回首影响的行数。

->Boolean execute(String sql) throws SQLException:可以执行任何SQL语句。

在执行结束之后必须要关闭Statement对象

executeUpdate:可以执行的SQL语句,可以是insert,update,delete,不可以是select。

执行SQL一般使用executeUpdate,execute使用的次数相对比较少

现在代码跑起来:

主要用于获取数据库的连接方法:

    public Connection getConnection() throws Exception{
Properties properties = new Properties();
InputStream in =
getClass().getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(in);
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String jdbcUrl = properties.getProperty("jdbcUrl");
String driver = properties.getProperty("driver");
Class.forName(driver);
Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
System.out.println(connection);
return connection;
}

执行executeUpdate(sql)方法

@Test
public void InsertStatementTestJdbc() throws Exception{ //1.获取数据库的连接
Connection conn = getConnection();
//2.准备的sql语句
String sql = "insert into student(sname,sclass)" +
"values('MrChengs','1111')"//3.执行插入操作
//4.获取操作SQL语句的Statement对象
//调用Connection的createStatement()方法来获取
Statement statement = (Statement) conn.createStatement();
//5.调用Statement对象的executeUpdate(sql)执行SQL语句的插入
statement.executeUpdate(sql); //6.关闭Statement对象
statement.close();
//7.关闭连接
conn.close();
}

会发现这个程序有点问题,关闭是不是应该放在finally?

此时程序会更加完美一点

    @Test
public void StatementTestInSert() throws Exception{
Connection conn = null;
Statement statement = null;
try {
conn = null;
conn = getConnection();
String sql = "insert into student(sname,sclass)" + "values('MrChengs','1111');";
statement = null;
statement = (Statement) conn.createStatement();
statement.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(statement !=null){
statement.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(conn != null){
conn.close();
}
}
}
}

一般使用到的insert/delete/update

使用这个方法,我们一般要进行拼串

在拼串的时候,我们需要注意拼串的一些规范

防止在拼串的时候出错

//插入
//String sql = "insert into student(sname,sclass)" + "values('MrChengs','1111')"; //删除
//String sql = "DELETE From student where id=1"; //修改
String sql = "update student set sname = 'MrChengs' where id = 3";
statement = null;

简单的说一下:

execute()方法几乎可以执行所有的SQL语句,但是执行SQL语句时比较麻烦

所以一般不使用该方法。

这里基本上讲完了。

JDBC(2)Statement的更多相关文章

  1. JDBC(2)—Statement

    介绍: 获取到数据库连接之后,就可以对数据库进行一些增.删.改操作,但是却不能进行查询操作. 增删改操作是程序到数据库的一个操作过程,但是查询是程序到数据库--数据库返回到程序的一个过程. 步骤: 步 ...

  2. Java基础(三十二)JDBC(2)连接数据库

    一.连接数据库的过程 连接数据库的过程:加载数据库驱动程序,不过只需在第一次访问数据库时加载一次,然后在每次访问数据库时创建一个Connection实例,然后执行操作数据库的SQL语句,并返回执行结果 ...

  3. 跟着刚哥学习Spring框架--JDBC(六)

    Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...

  4. JDBC(一)之细说JDBC

    Properties info = new Properties();//要参考数据库文档 info.setProperty("user", "root"); ...

  5. JDBC(三)数据库连接池(DBCP、C3P0)

    前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...

  6. JAVA基础-JDBC(一)

    一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...

  7. JDBC(四)

    1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...

  8. JDBC (三)

    1 数据库连接池的原理 应用程序直接获取Connection的缺点: 缺点:用户每次请求都需要向数据库获取连接,而数据库创建连接通常需要消耗相对较大的资源,创建的时间较长.如果一个网站一天访问量是10 ...

  9. JDBC (二)

    1 使用JDBC进行批处理 当需要向数据库发送一批SQL语句的时候,应该避免向数据库一条条的发送执行,而应该采用JDBC的批处理机制,以提高执行效率. 实现批处理的方式一: Statement.add ...

随机推荐

  1. 2.VS2012为创建的类添加注释的模板

    在项目中给类添加注释的优点: 1.方便查看这个类是为了那些功能 2.是成员小组中的谁负责编写的 根据自己的vs的安装路径找到类模板的位置:D:\Program Files (x86)\Microsof ...

  2. JVM(四) G1 收集器工作原理介绍

    此篇文章半原创是对参考资料中的知识点进行总结,欢迎评论指点,谢谢!        部分知识点总结来自R大的帖子,下文有参考资料的链接 概述 G1 收集是相比于其他收集器(可见 上一篇文章),可以独立运 ...

  3. [javaSE] java上传图片给PHP

    java通过http协议上传图片给php文件,对安卓上传图片给php接口的理解 java文件: import java.io.DataOutputStream; import java.io.File ...

  4. JFrame自适应大小

    pack();函数调用PreferedSize(); 所以对于组件要setPreferedSize();

  5. redis的持久化方式

    redis有两种持久化方式,第一种是基于快照的持久化方式,第二种是基于文件追加的持久化方式 一.基于快照的持久化 1.修改redis.conf配置文件,开启基于快照的持久化方式 2.修改持久化文件存放 ...

  6. pycharm下 os.system os.popen执行命令返回有中文乱码

    原文 settings:

  7. Java 不可变类

    Java 不可变类 immutable object 不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值. 如JDK内部自带的很多不可变类:Interger.Long和String等. * ...

  8. Iphone各个型号机型的详细参数,尺寸和dpr以及像素

    1.iPhone尺寸规格 2.单位inch(英吋) 1 inch = 2.54cm = 25.4mm 3.iPhone手机宽高 上表中的宽高(width/height)为手机的物理尺寸,包括显示屏和边 ...

  9. Python-常用模块2

    今天我们继续来看模块的那些事儿 一.os模块 所有和操作系统相关内容都在os模块 os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('d ...

  10. Mybatis学习随笔

    学习Mybatis路径(适合有java基础和mysql基础的小伙伴) 1.把项目搭建起来,跑一跑感受一下 2.测试基本映射 3.测试高级映射 4.测试动态sql 5.学习懒加载与缓存 6.与sprin ...