java/jsp执行sql语句的方式

  首先给出sql驱动包

  引入sql包

  import java.sql.*;//java

  <%@ page import="java.sql.*"%>//jsp

  连接mysql数据库

 

String DBDRIVER= "com.mysql.jdbc.Driver";//驱动程序
  String DBURL="jdbc:mysql://localhost:3306/db_jsp?characterEncoding=utf-8";
  //localhost是本机地址,3306端口,db_jsp数据库名,utf-8编码
  String DBUSER= "root";//登录名
  String DBPASSWORD= "toor";//登陆密码
  Connection conn=null;//Connection对象
  try{
  Class.forName(DBDRIVER);//将数据库驱动加载到JVM中,Driver类实例注册到DriverManager类中
  conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);//获取Connection对象
  }catch (Exception e){
  System.out.println("数据库连接失败:" + e.getMessage());
  }

  1.执行静态SQL语句,一般用Statement

  Statement提供了三种执行方法:

  (1)ResultSet executeQuery(String sqlString),执行查询语句,返回ResultSet;

  (2)int executeUpdate(String sqlString),执行更新语句(INSERT,UPDATE,DELETE,SQL DDL[CREATE TABLE,DROP TABLE])等,返回值是本次操作影响的记录数

  (3)execute(String sqlString),可以如(1)(2)处理单个语句,也可以处理返回多个结果的预编译语句

 

//执行例子
  String sql="INSERT INTO x(a,b) VALUES('1','2')";
  stmt = conn.createStatement();
  stmt.executeUpdate(sql);//int

  2.执行动态SQL语句,一般用PreparedStatement

  PreparedStatement继承自Statement,但已经过预编译,所以执行效率更高,并且PreparedStatement不是完整的sql语句,待定字符用'?'代替,用setXXX方法设置字段

  

PreparedStatement pstmt = null;//PreparedStatement对象
  String sql = "UPDATE person set password=? WHERE id=?";//'?'动态设置
  pstmt = conn.prepareStatement(sql);//预编译sql语句
  pstmt.setString(1,"hello");//第一个动态字段是String类型
  pstmt.setInt(2,123);//第二个动态字段是int类型
  pstmt.executeUpdate();//执行语句
  3.ResultSet接口提供访问结果集的方法
  ResultSet rs=stmt.executeQuery("SELECT * FROM per");//假设per数据库有id和name字段
  while(rs.next()){
  String id=rs.getString("id");
  String id=rs.getString("name");
  System.out.println(id+" "+name);
  }