欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JDBC学习笔记(SQL语句的执行)

程序员文章站 2022-06-15 10:57:09
...

在获得数据库连接后,紧接着就是执行SQL语句。这里用到俩个类:StatementPreparedStatement

一、Statment

 

Statement提供了以下方法用来执行SQL语句:

 

 * executeQuery(String sql):执行一条SQL查询语句,返回查询结果对象(ResultSet)
 * executeUpdate(String sql):执行一条SQL更新,插入,删除操作语句。

 

 * execute(String sql):执行一条SQL语句

 *close():关闭Statement。和Connection一样,Statement使用后也需要关闭。

 

*注意:Statement通过connection的createStatement方法获得。

以下为执行SQL语句示例:

 

    Statement statement=connection.createStatement();
    String sql="insert into table_01 values('呵呵',1,'男'),('哈哈',2,'女'),('嘿嘿',3,'男')";
    statement.executeUpdate(sql);
    sql="delete from table_01 where id=3";
    statement.executeUpdate(sql);
    sql="update table_01 set id=3,name='hh' where id=2";
    statement.executeUpdate(sql);

    //使用后一定要关闭
    connection.close();
    statement.close();

二、PreparedStatement

ProparedStatement:是Statement的子接口,同样用来执行SQL语句,比Statement书写方便
 ProparedStatement的优点:
 * 1、书写方便,先写好SQL语句再设置参数。如:INSERT INTO table VALUES(?,?,?...),不用拼写SQL语句

 * 2、防止SQL注入(这点很重要)

 * 注意:在开始就赋入sql语句(此时的sql语句可以设置未知参数,通过?设置),后通过SetObject(int index,Object obj)设置sql语句里的参数,索引从1开始

 

PreparedStatement提供了三个方法:

        setXxx():设置SQL语句里的参数,Xxx为参数的类型

        executeUpdate():参数设置完毕后,执行插入、删除、更新的sql语句。

        executeQuery():参数设置完毕后,执行查询的sql语句,返回结果对象(ResultSet)

       

 

以下为使用示例:

    String sql="insert into table_01 values(?,?,?)";
    PreparedStatement preparedstatement=connection.prepareStatement(sql); //需要提前设置好SQL语句
    //设置SQL里的参数(索引从1开始)
    preparedstatement.setString(1,"张天笑");
    preparedstatement.setInt(2,2);
    preparedstatement.setString(3,"女");
    //直接executeUpdate()方法,不用传入SQL语句

    preparedstatement.executeUpdate();

 

不要求掌握知识:即在插入时获得主键

//获得主键
String sql="INSERT INTO table_01(name,sex) VALUES(?,?)";
Connection connection=JDBCTools.getConnection();
//设置好PreparedStatement是返回主键类型

PreparedStatement preparedstatement=

                connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

preparedstatement.setObject(1,"王富贵");
preparedstatement.setObject(2, "男");
preparedstatement.executeUpdate();

ResultSet resultset=preparedstatement.getGeneratedKeys();
ResultSetMetaData resultsetmetadata=resultset.getMetaData();
System.out.println(resultsetmetadata.getColumnName(1));
while(resultset.next()) {
System.out.println(resultset.getObject(1));
}
JDBCTools.release(connection, preparedstatement,resultset);