JDBC的常用方法

一曲冷凌霜 提交于 2020-03-11 17:12:17

在上一篇文章我们讲了一些基本使用JDBC-DBCP-MYBATIS

1.防止SQL注入

我们在写sql语句时,为了方便可能会进行拼接字符串,这样做的弊端就是可能被sql注入攻击,解决的办法也很简单。

//获取数据库连接
Connection connection = DBUtils.getConnection();
//在写sql语句时,使用?代替变量
String sql = "select * from user where username=? and password=?";
//使用预编译对象进行预编译,就不使用原始的Statement对象
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//预编译后进行?的替换
preparedStatement.setString(1,"csdn");
preparedStatement.setString(2,"csdn123");
ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
      System.out.println(resultSet.getString(1));
 }

2.SQL批量操作

如果我们想批量执行多条sql语句,解决的办法也很简单,不管时Statement对象,还是PreparedStatement对象,都提供了批量操作的方法,其实就是同一个方法。

Connection connection = DBUtils.getConnection();
//创建sql执行对象
Statement statement = connection.createStatement();
String sql1="xxxxxxxxxxxxxxx";
String sql2="xxxxxxxxxxxxxxx";
String sql3="xxxxxxxxxxxxxxx";
//将要执行的sql语句放到批处理中
statement.addBatch(sql1);
statement.addBatch(sql2);
statement.addBatch(sql3);
//执行
statement.executeBatch();

3.插入数据获取自增主键值

Statement对象执行

Connection connection = DBUtils.getConnection();
String sql = "insert into user values(null,\"csdn\",\"csdn123\")";
Statement statement = connection.createStatement();
//执行时加上Statement常量,看意思就知道是返回自增主键
statement.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
//获取返回的自增主键
ResultSet rs = statement.getGeneratedKeys();
//取出主键
while(rs.next()){
 System.out.println(rs.getInt(1));
  }

PreparedStatement对象执行

Connection connection = DBUtils.getConnection();
String sql = "insert into user values(null,?,?)";
//获取预编译执行对象,在这里加上参数Statement对象的常量
PreparedStatement preparedStatement = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1,"csdn");
preparedStatement.setString(2,"csdn123");
//执行sql操作
preparedStatement.executeUpdate();
//获取返回的主键值
ResultSet rs = preparedStatement.getGeneratedKeys();
 //遍历取出
while(rs.next()){
     System.out.println(rs.getInt(1));
   }

4.元数据

数据库元数据

 Connection connection = DBUtils.getConnection();
//获取数据库元数据对象
DatabaseMetaData databaseMetaData = connection.getMetaData();
//获取数据库名
databaseMetaData.getDatabaseProductName();
 //获取数据库驱动版本
databaseMetaData.getDriverVersion();
//获取数据库用户名
databaseMetaData.getUserName();

表元数据

 Connection connection = DBUtils.getConnection();
String sql = "select * from user";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//获取表元数据对象
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
//获取表字段数量
int count = resultSetMetaData.getColumnCount();
//注意下标从1开始
for (int i = 1; i <= count; i++) {
    //获取第i个字段的名字,就是列名
    resultSetMetaData.getColumnName(i);
    //获取第i个字段类型
    resultSetMetaData.getColumnTypeName(i);
   }

关于JDBC常用的操作基本就是这些了,如果有别的需要可以自己查阅一下官网。帮助到你了给个赞吧

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!