JDBC(2)Statement
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的更多相关文章
- JDBC(2)—Statement
介绍: 获取到数据库连接之后,就可以对数据库进行一些增.删.改操作,但是却不能进行查询操作. 增删改操作是程序到数据库的一个操作过程,但是查询是程序到数据库--数据库返回到程序的一个过程. 步骤: 步 ...
- Java基础(三十二)JDBC(2)连接数据库
一.连接数据库的过程 连接数据库的过程:加载数据库驱动程序,不过只需在第一次访问数据库时加载一次,然后在每次访问数据库时创建一个Connection实例,然后执行操作数据库的SQL语句,并返回执行结果 ...
- 跟着刚哥学习Spring框架--JDBC(六)
Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...
- JDBC(一)之细说JDBC
Properties info = new Properties();//要参考数据库文档 info.setProperty("user", "root"); ...
- JDBC(三)数据库连接池(DBCP、C3P0)
前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...
- JAVA基础-JDBC(一)
一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...
- JDBC(四)
1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...
- JDBC (三)
1 数据库连接池的原理 应用程序直接获取Connection的缺点: 缺点:用户每次请求都需要向数据库获取连接,而数据库创建连接通常需要消耗相对较大的资源,创建的时间较长.如果一个网站一天访问量是10 ...
- JDBC (二)
1 使用JDBC进行批处理 当需要向数据库发送一批SQL语句的时候,应该避免向数据库一条条的发送执行,而应该采用JDBC的批处理机制,以提高执行效率. 实现批处理的方式一: Statement.add ...
随机推荐
- C#语言-05.委托和事件
a. 委托:是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联.所谓兼容的方法,是指这个方法和委托的方法签名具有相同的返回类型和参数 i. 语法:delegate 方法签名; . 方法签名是方 ...
- spring历史和哲学
spring 历史: 2004年 Spring Framework 1.0 final 正式问世. 1.在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分 ...
- VirtualBox使用Centos7与主机共享文件夹
最近使用VitrtualBox安装Centos7学习,liunx脚本和一些命令,经过一些研究完成了虚拟机与 主机共享文件夹,虚拟机链接外部网络,主机与虚拟机互相通信.在其中遇到一些我解决的技术问题记录 ...
- Filter---javaweb的过滤器
1.Filter是什么? Filter的基本功能是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理的前后实现一些特殊的功能. 在Servlet API中定义了三个 ...
- MyBatis入门篇
一.什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...
- Effective C++ .12 复制对象-拷贝构造函数的编写
当我们自己编写拷贝构造函数时,编译器就不会为该类生成默认拷贝构造函数了,对于assignment operator也是如此. 1. 拷贝构造函数中记得调用父类的拷贝构造函数,或者相应复制过程 clas ...
- javaScript删除对象、数组中的null、undefined、空对象、空数组方法
这两天在项目中遇到后台需要传的数据为不能有null,不能有空值,而这个数据又是一个庞大的对象,对组集合,所以写了个方法来解决这个问题.为了兼具所有的种类类型,封装了方法,代码如下: let obj = ...
- (转)快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...
- Java Struts2 (四)
一.contextMap中的数据操作 root根:List 元素1 元素2 元素3 元素4 元素5 contextMap:Map key value application Map key value ...
- 02_dubbo的SPI
[dubbo为什么不采用JDK自带的SPI] 1.JDK自带的SPI(ServiceLoader)会一次性实例化扩展点所有实现,基本只能通过遍历全部获取,也就是接口的实现类全部加载并实例化一遍,如果我 ...