java JDBC(二):Statement、ResultSet、PreparedStatement
2014-05-07 12:44
471 查看
一、利用Statement执行增加、删除、修改操作
要想对数据库进行操作,则需要使用Statement接口完成,此接口可以使用Connection中的createStatement
()方法实例化。此接口定义了以下的常用方法:
范例:像数据库中增加数据
范例:执行更新操作,值用变量传入
二、ResultSet
使用SQL中的Select语句可以将数据库中的全部结果查询出来,在JDBC的操作中,所有的查询结果将使用ResultSet接口进行接收,并使用ResultSet显示内容。
对于以上的操作代码,如果假设列的名称过长的话,则取值的时候显得不便,此时可以采用顺序的编号取得。
三、PreparedStatement
得到PreparedStatement:
PreparedStatement prepareStatement(String sql) throws SQLException
之后使用一系列的setXxx()方法设置内容,根据位置设置。
如果执行更新语句的话,则会返回更新数据的记录数。
注意日期设置问题:
范例:使用PrepareStatement进行插入
范例:使用该接口完成查询操作
在真正工作当中使用PreparedStatement是比较多的,因为这个可以避免SQL注入风险。
要想对数据库进行操作,则需要使用Statement接口完成,此接口可以使用Connection中的createStatement
()方法实例化。此接口定义了以下的常用方法:
范例:像数据库中增加数据
import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.Statement ; public class InsertDemo01{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception { // 所有的异常抛出 Connection conn = null ; // 数据库连接 Statement stmt = null ; // 数据库操作 Class.forName(DBDRIVER) ; // 加载驱动程序 String sql = "INSERT INTO user(name,password,age,sex,birthday) "+ " VALUES ('李兴华','www.mldn.cn',30,'男','2008-08-27')" ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; stmt = conn.createStatement() ; // 实例化Statement对象 stmt.executeUpdate(sql) ; // 执行数据库更新操作 stmt.close() ; // 关闭操作 conn.close() ; // 数据库关闭 } };
范例:执行更新操作,值用变量传入
import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.Statement ; public class UpdateDemo{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception { // 所有的异常抛出 Connection conn = null ; // 数据库连接 Statement stmt = null ; // 数据库操作 int id = 2 ; Class.forName(DBDRIVER) ; // 加载驱动程序 String name = "李华" ; // 姓名 String password = "mldn" ; // 密码 int age = 25 ; // 年龄 String sex = "男" ; // 性别 String birthday = "2001-09-13" ; String sql = "UPDATE user SET name='"+name+"',password='" +password+"' , age=" + age + ",sex='"+sex+"',birthday='" +birthday+"' WHERE id="+id ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; stmt = conn.createStatement() ; // 实例化Statement对象 stmt.executeUpdate(sql) ; // 执行数据库更新操作 stmt.close() ; // 关闭操作 conn.close() ; // 数据库关闭 } };删除操作:
public class DeleteDemo{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception { // 所有的异常抛出 Connection conn = null ; // 数据库连接 Statement stmt = null ; // 数据库操作 int id = 2 ; Class.forName(DBDRIVER) ; // 加载驱动程序 String sql = "DELETE FROM user WHERE id="+id ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; stmt = conn.createStatement() ; // 实例化Statement对象 stmt.executeUpdate(sql) ; // 执行数据库更新操作 stmt.close() ; // 关闭操作 conn.close() ; // 数据库关闭 } };
二、ResultSet
使用SQL中的Select语句可以将数据库中的全部结果查询出来,在JDBC的操作中,所有的查询结果将使用ResultSet接口进行接收,并使用ResultSet显示内容。
public class ResultSetDemo01{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception { Connection conn = null ; // 数据库连接 Statement stmt = null ; // 数据库的操作对象 ResultSet rs = null ; // 保存查询结果 String sql = "SELECT id,name,password,age,sex,birthday FROM user" ; Class.forName(DBDRIVER) ; // 加载驱动程序 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; stmt = conn.createStatement() ; rs = stmt.executeQuery(sql) ; while(rs.next()){ // 依次取出数据 int id = rs.getInt("id") ; // 取出id列的内容 String name = rs.getString("name") ; // 取出name列的内容 String password = rs.getString("password") ; // 取出password列的内容 int age = rs.getInt("age") ; // 取出age列的内容 String sex = rs.getString("sex") ; // 取出sex列的内容 java.util.Date d = rs.getDate("birthday") ; // 取出birthday列的内容 System.out.print("编号:" + id + ";") ; System.out.print("姓名:" + name + ";") ; System.out.print("密码:" + password + ";") ; System.out.print("年龄:" + age + ";") ; System.out.print("性别:" + sex + ";") ; System.out.println("生日:" + d + ";") ; System.out.println("-----------------------") ; } rs.close() ; stmt.close() ; conn.close() ; // 数据库关闭 } };
对于以上的操作代码,如果假设列的名称过长的话,则取值的时候显得不便,此时可以采用顺序的编号取得。
public class ResultSetDemo02{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception { Connection conn = null ; // 数据库连接 Statement stmt = null ; // 数据库的操作对象 ResultSet rs = null ; // 保存查询结果 String sql = "SELECT id,name,password,age,sex,birthday FROM user" ; Class.forName(DBDRIVER) ; // 加载驱动程序 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; stmt = conn.createStatement() ; rs = stmt.executeQuery(sql) ; while(rs.next()){ // 依次取出数据 int id = rs.getInt(1) ; // 取出id列的内容 String name = rs.getString(2) ; // 取出name列的内容 String password = rs.getString(3) ; // 取出password列的内容 int age = rs.getInt(4) ; // 取出age列的内容 String sex = rs.getString(5) ; // 取出sex列的内容 java.util.Date d = rs.getDate(6) ; // 取出birthday列的内容 System.out.print("编号:" + id + ";") ; System.out.print("姓名:" + name + ";") ; System.out.print("密码:" + password + ";") ; System.out.print("年龄:" + age + ";") ; System.out.print("性别:" + sex + ";") ; System.out.println("生日:" + d + ";") ; System.out.println("-----------------------") ; } rs.close() ; stmt.close() ; conn.close() ; // 数据库关闭 } };
三、PreparedStatement
得到PreparedStatement:
PreparedStatement prepareStatement(String sql) throws SQLException
之后使用一系列的setXxx()方法设置内容,根据位置设置。
如果执行更新语句的话,则会返回更新数据的记录数。
注意日期设置问题:
范例:使用PrepareStatement进行插入
public class PreparedStatementDemo01 { // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception{ // 所有异常抛出 Connection conn = null ; // 数据库连接 PreparedStatement pstmt = null ; // 数据库操作 String name = "李兴华" ; // 姓名 String password = "www.mldnjava.cn" ; // 密码 int age = 30 ; // 年龄 String sex = "男" ; // 性别 String birthday = "2007-08-27" ; // 生日 java.util.Date temp = null ; temp = new SimpleDateFormat("yyyy-MM-dd").parse(birthday) ; java.sql.Date bir = new java.sql.Date(temp.getTime()) ; String sql = "INSERT INTO user(name,password,age,sex,birthday) VALUES (?,?,?,?,?) " ; Class.forName(DBDRIVER) ; // 加载驱动程序 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; pstmt = conn.prepareStatement(sql) ; // 实例化PreapredStatement对象 pstmt.setString(1,name) ; pstmt.setString(2,password) ; pstmt.setInt(3,age) ; pstmt.setString(4,sex) ; pstmt.setDate(5,bir) ; int t = pstmt.executeUpdate() ; // 执行更新 System.out.println(t); pstmt.close() ; conn.close() ; // 数据库关闭 } };
范例:使用该接口完成查询操作
public class PreparedStatementDemo02 { // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL数据库的连接用户名 public static final String DBUSER = "root" ; // MySQL数据库的连接密码 public static final String DBPASS = "mysqladmin" ; public static void main(String args[]) throws Exception{ // 所有异常抛出 Connection conn = null ; // 数据库连接 PreparedStatement pstmt = null ; // 数据库操作 String keyWord = "李" ; // 设置查询关键字 ResultSet rs = null ; // 接收查询结果 String sql = "SELECT id,name,password,age,sex,birthday " + " FROM user WHERE name LIKE ? OR password LIKE ? OR sex LIKE ?" ; Class.forName(DBDRIVER) ; // 加载驱动程序 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; pstmt = conn.prepareStatement(sql) ; // 实例化PreapredStatement对象 pstmt.setString(1,"%"+keyWord+"%") ; pstmt.setString(2,"%"+keyWord+"%") ; pstmt.setString(3,"%"+keyWord+"%") ; rs = pstmt.executeQuery() ; // 执行查询 while(rs.next()){ int id = rs.getInt(1) ; String name = rs.getString(2) ; String pass = rs.getString(3) ; int age = rs.getInt(4) ; String sex = rs.getString(5) ; java.util.Date d = rs.getDate(6) ; System.out.print("编号:" + id + ";") ; System.out.print("姓名:" + name + ";") ; System.out.print("密码:" + pass + ";") ; System.out.print("年龄:" + age + ";") ; System.out.print("性别:" + sex + ";") ; System.out.println("生日:" + d + ";") ; System.out.println("-------------------------") ; } rs.close() ; pstmt.close() ; conn.close() ; // 数据库关闭 } };
在真正工作当中使用PreparedStatement是比较多的,因为这个可以避免SQL注入风险。
相关文章推荐
- java web项目结构
- org.eclipse.swt.SWTException: Invalid thread access问题解决方法
- 初学java之菜单条,菜单,菜单项的设置
- 初学java之JFrame窗口模式
- Struts、Hibernate、Spring的工作机制
- jni层解析java层传下来的JSONArray string 对象
- java JDBC(一):JDBC概述、数据库连接
- java中"=="和equals方法究竟有什么区别?
- Eclipse 应用的初步认识
- 基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站
- java.io.Serializable序列化
- Spring MVC 3 深入总结
- Struts2的应用:自定制Interceptor拦截器
- Spring @Resource注解
- JAVA 8 特性
- java中的(PO,VO,TO,BO,DAO,POJO)
- java 数组的声明和实例化
- java流
- PHP ECLIPSE快速安装 svn waordwrap 扩展
- Java中的两个类:Desktop和SystemTray