java操作数据库(尚学堂)

java操作数据库

1 导入相关数据库的包
网上下载对应数据库的.jar
Eclipse 中的操作
JAR 系统库→构建路径→配置构建路径→添加外部 JAR
2 加载数据库驱动包
Class.forName("数据库驱动类名");
返回类,作用是加载要连接的数据库的驱动到 JVMJava 虚拟机)。
成功加载后,会将 Driver 类的实例注册到 DriverManager 类中。
mysql 数据库驱动类名
com.mysql.jdbc.Driver
3 连接数据库
Connection conn=DriverManager.getConnection ("jdbc:DBMS 类型://地址:端口号/数据库名", "用户名", "密码");
Connection 是一个接口;
DriverManager 是一个类,用于通过驱动程序连接数据库;
getConnection 方法返回 Connection 接口。
4 执行 SQL 语句
数据查询
预编译形式的 SQL 语句
数据库可以把编译后的执行代码缓存在内存中,当再次执行相同的 SQL
语句时就不需要重新编译了,只要将参数直接传入编译过的语句执行代码
中就会得到执行。
预编译可以提高数据库性能,还可以防范 SQL 注入。
String sql="select ... where 列名 1=? and 列名 2=?";
?是固定写法
PreparedStatement state=conn.prepareStatement(sql);
state.setString(1,值 1);
1 表示第 1 个参数,值是参数值,依次类推
获得结果集
ResultSet rs=state.executeQuery( );
只能执行查询操作,返回一个结果集,不能用于增删改。
ResultSet 是一个接口,用于暂存结果集,但无法获得行数。
移动行指针,读取一行数据
rs.next( )
指针移至下一行,成功返回 true,初始位置在第一行之前。
获得列值
rs.getString(列号或列名)/getDate/getByte/getShort/getInt/getLong/getFloat
列号从 1 开始
列名用双引号括起来
使用此句之前需先用 rs.next( )读取一行
结果集已耗尽
原因是 rs 中没有数据
增删改
int n=state.executeUpdate(String sql)
执行增删改操作,返回影响的行数。
5 批量插入多行数据
for( ){
state.setString(1,...);
state.setString(2,...);
...
state.addBatch();
}
state.executeBatch();6 关闭数据库连接
rs.close( );
state.close( );
conn.close( );
 
 

预处理方式的查询(优点:防止sql注入,提高性能):java操作数据库(尚学堂)

批量插入数据:

java操作数据库(尚学堂)

java操作数据库(尚学堂)