本篇学习下对数据库数据进行操作的过程。
Statement接口中的方法主要有:
增加数据实例:
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() ; // 数据库关闭 } };
package Demo01; import java.sql.*; ; public class ConnectionTest { // 定义数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; // 定义数据库连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/test"; // 定义数据库用户名 public static final String DBUSER = "root"; // 定义数据库密码 public static final String DBPASS = "zhengzehui"; public static void main(String[] args) throws Exception { Connection conn = null; Statement stmt = null; Class.forName(DBDRIVER); int id = 1; String name = "老王"; String sex = "女"; int age = 36; String sql = "UPDATE student SET name= '" + name + "', sex= '" + sex + "',age= '" + age + "'WHERE id = " + id; conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); stmt = conn.createStatement(); stmt.executeUpdate(sql); stmt.close(); conn.close(); } }
package Demo01; import java.sql.*; ; public class ConnectionTest { // 定义数据库驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; // 定义数据库连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/test"; // 定义数据库用户名 public static final String DBUSER = "root"; // 定义数据库密码 public static final String DBPASS = "zhengzehui"; public static void main(String[] args) throws Exception { Connection conn = null; Statement stmt = null; Class.forName(DBDRIVER); int id = 1; String sql = "DELETE FROM student WHERE id = " + id; conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); stmt = conn.createStatement(); stmt.executeUpdate(sql); stmt.close(); conn.close(); } }
然而在实际的开发中,不会使用Statement接口,因为其采用的是拼凑的SQL形式,就有可能造成SQL的注入漏洞,所以要使用PreparedStatement接口。
PreparedStatement接口是Statement接口的子接口,属于预处理操作,在操作时,先在数据表中准备了一条SQL语句,但是内容不设置,等到用户操作的时候再进行设置。
import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import java.sql.ResultSet ; import java.sql.PreparedStatement ; import java.text.SimpleDateFormat ; public class PreparedStatementDemo03 { // 定义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" ; Class.forName(DBDRIVER) ; // 加载驱动程序 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; pstmt = conn.prepareStatement(sql) ; // 实例化PreapredStatement对象 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() ; // 数据库关闭 } };