1、JDBC使用步骤
(1)注册驱动
(2)获取连接
(3)创建发送sql语句对象
(4)发送sql语句并获取返回结果
(5)结果集解析
(6)资源关闭
eg:
(1)DriverManager.registerDriver(new Driver);
(2)DriverManager.getConnection(url,user,password)
url格式:
jdbc:数据库厂商名://ip地址:Port/数据库名
Connection conn="jdbc:mysql://127.0.0.1:3306/atxxx";
(3)Statement sta=Connection.CreateStatement();
(4)String sql="sql语句"
ResultSet resultset=sta.exqcuteQuery(sql);
(5)While(resultset.next()){
resultSet.getInt("id').Variable 然后回车,快捷方式需要先安装tabnine插件
=》
int id=resultSetgetInt("id");
}
(6)有内到外逐个关闭
resultset.close();
statement.close();
connection.close();
2、SQL分类
DDL:容器创建、修改、删除
DML:插入、删除、修改
DQL:查询
DCL:权限控制
TPL:事务控制语句
3、Statement与PreparedStatement的区别
Statement:
Statement sta=Connection.createStatement();
String sql=" ";
ResultSets resultset=sta.executeQuery(sql);
PreparedStatement:
String sql=" ? "; ? 占位符
PreparedStatement presta=Connection.createStatement(sql);
presta.setObject(1,"aaa"); 占位符赋值
ResultSets resultset=presta.executeQuery();
PreparedStatement通过占位符能够有效消除sql注入的问题,提高数据与系统的安全。
4、MetaData
@Test 测试方法 需要添加 junit的测试包
metaData:当前结果集列的信息对象,可以根据下标获取列的名称也可以获取列的数量。
ResultSetMetaData metadata=resultSet.getMetaData();
int column_count=metadata.getColumnCount();
for(int i=1;i<=column_count;i++){
Object value=resultSet.getObject(i);
String columnlable=metaData.getColumnLable(i);
map.put(columnlable,value);
}
list.add(map)
Map map=new HashMap();
List<Map> list=new ArrayList<>();
getColumnLable与getColumnName的区别
getColumnLable:可以根据下标获取对应列的名称或者别名
getColumnName:只会获取列的名称
5、主键回显
创建Statement时告诉数据库自己需要主键的信息
PreparedStatement presta=Connection.preparedStatement(sql,Statement.RETURN_GENERATED_KEYS);
获取主键
ResultSet resultset=presta。getGenerateKeys(); 一行一列的结果集
resultset.next();
int id = resultset.getInt(1);
6、批量插入
路径后面追加"?rewriteBatchedStatements=true",并且sql中value()改为values(),sql语句后不能添加“,”作为结束符,Statement.executeUpdate()改为Statement.addBatch(),全部执行完以后执行statement.executeBatch();