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. heroku快速部署node应用

    试了一下heroku,简直碉堡了,下面介绍如何简单几步实现弄得应用的部署访问: 1.首先https://dashboard.heroku.com/进行账号注册 2.github上push一个最新的no ...

  2. MyBatis 指定的转换无效

    表字段Pay类型设置的是float,生成类的属性如下: public double Pay{get;set;} 读取列表时出现如下错误: 错误信息: 查看堆栈跟踪信息, get_Decimal()提示 ...

  3. Java 线程--继承java.lang.Thread类实现线程

    现实生活中的很多事情是同时进行的,Java中为了模拟这种状态,引入了线程机制.先来看线程的基本概念. 线程是指进程中的一个执行场景,也就是执行流程,进程和线程的区别: 1.每个进程是一个应用程序,都有 ...

  4. 用图片替代cursor光标样式

    鼠标光标样式有限,可参考http://css-cursor.techstream.org/,自定义光标样式可用设置cursor:url('xxx.cur'),auto;.还有一种办法,就是用图片替代鼠 ...

  5. rpm的参数

      rpm 包的参数如下: -e 卸载rpm包 -q 查询已安装的软件信息 -i 安装rpm包 -u 升级rpm包 --replacepkgs 重新安装rpm包 --justdb 升级数据库,不修改文 ...

  6. 第2章 css边框属性

    圆角效果 border-radius border-radius是向元素添加圆角边框. 使用方法: border-radius:10px; /* 所有角都使用半径为10px的圆角 */ border- ...

  7. ActiveX界面已显示,调用方法报undefined的处理办法

    1.在ie中将当前网址加入信任网站 2.设置->internet选项->安全->受信任站点->自定义级别:将所有有关ActiveX的选项设置为启用 3.重启ie再次访问即可. ...

  8. layui-学习03-页面元素

    布局: 相关样式: 包裹层 : layui-container ( 响应式 宽度 ) layui-fluid ( 100% 宽度 )行        : layui-row列        : lay ...

  9. iview table数据排序不正确

    在使用iview的table组件时,要做排序 代码: sortable: true,sortMethod: (a, b, type) => { if (type === 'desc') { re ...

  10. VS2010环境开发Teamcenter ITK

    前言 这篇文章主要是用Teamcenter ITK开发的入门配置教程.几个月前学习ITK开发时,领导要求将配置过程整理成学习笔记.最近同事要做ITK开发,就发给他了.感觉这篇文章对别人还是有帮助的,决 ...