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);

猜你喜欢

转载自blog.csdn.net/qq_38487155/article/details/80135309