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

在获得数据库连接后,紧接着就是执行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);

 

转载于:https://www.cnblogs.com/MrQlyn/p/10236349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值