JDBC的安装

JDBC

jdbc:(Java DataBase Connectivity,java数据库连接)
是一种用于执行SQL语句的Java API

下载驱动jar包:

JDBC的安装

JDBC的安装

JDBC的安装
JDBC的安装
JDBC的安装
jdbc连接步骤:
1.加载驱动
2.创建连接
3.创建sql通道
4.执行sql
5.关闭资源

创建项目:

JDBC的安装
JDBC的安装
JDBC的安装

代码:
//路径:localhost或127.0.0.1
String url=“jdbc:mysql://localhost:3306/javatest?serverTimezone=UTC”;
String username=“root”;
String password=“123456”;
String sql=“insert into user (username,upass) values(‘admin’,‘123123’)”;
//属性:
Connection conn=null;
Statement stat=null;
try {
// 1.加载驱动
Class.forName(“com.mysql.cj.jdbc.Driver”);
// 2.创建连接
conn=DriverManager.getConnection(url, username, password);
// 3.创建sql通道
stat=conn.createStatement();
// 4.执行sql 增删改:executeUpdate 查询:executeQuery
//返回值代表受影响行数
int con=stat.executeUpdate(sql);
if(con>0) {
System.out.println(“添加数据成功!”);
}else {
System.out.println(“添加失败!”);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
// 5.关闭资源
try {
if(stat!=null) {
stat.close();
}
if(conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

查询:

结果集:ResultSet
查询常用executeQuery()
常用方法:
boolean next()
将光标从当前位置向下移动一行

boolean previous()
游标从当前位置向上移动一行

void close()
关闭ResultSet 对象

int getInt(int colIndex)
以int形式获取结果集当前行指定列号值

int getInt(String colLabel)
以int形式获取结果集当前行指定列名值

float getFloat(int colIndex)
以float形式获取结果集当前行指定列号值

float getFloat(String colLabel)
以float形式获取结果集当前行指定列名值

String getString(int colIndex)
以String 形式获取结果集当前行指定列号值

String getString(String colLabel)
以String形式获取结果集当前行指定列名值

代码:
String sql=“select * from user”;
//ResultSet结果集
ResultSet rs=db.getStatement().executeQuery(sql);
//根据字段属性的类型一致 get…()可传列号或列名
//rs.next()判断是否有下一个
while(rs.next()) {
String username=rs.getString(2);
int id=rs.getInt(1);
String password=rs.getString(“upass”);
System.out.println(id+"–"+username+"-----"+password);
}

预编译通道preparedStatement与Statement的区别:
preparedStatement:针对多次执行同一条的sql提高了效率,可以用?代替占位符,避免sql注入,继承了Statement
Statement:每次执行sql都会重新加载编译一次,

代码实例:
String sqLPsta=“insert into user(username,upass,name,sex,age,birthday) values(?,?,?,?,?,?)”;
prepareStatement 给?赋值,属性的数据类型就是set… ;例如string就是setString(?的位置,值)
psta.setString(1, u.getUsername());
psta.setString(2, u.getPassword());
psta.setString(3, u.getName());
psta.setString(4, u.getSex());
psta.setInt(5, u.getAge());
psta.setString(6, u.getBirthday());
psta.executeUpdate();

防止sql注入实例:
String url=“jdbc:mysql://localhost:3306/javatest?serverTimezone=UTC”;
String username=“root”;
String password=“123456”;
String sql1=“select * from user where username=’”+u.getUsername()+"‘and upass=’"+u.getPassword()+"’ or 1=1";
String sql2="select * from user where username=? and upass= ? ";
try {
1.加载驱动
Class.forName(“com.mysql.cj.jdbc.Driver”);
2.创建连接
conn=DriverManager.getConnection(url, username, password);
3.创建sql通道 x
//stat=conn.createStatement();
psta=conn.prepareStatement(sql2);
psta.setString(1, u.getUsername());
psta.setString(2, u.getPassword()+“or 1=1 “);
ResultSet rs=psta.executeQuery();
while(rs.next()) {
String username1=rs.getString(2);
String password1=rs.getString(3);
System.out.println(username1+”—”+password1);
}
jdbc手动提交事务:
设置自动提交(开启事务),默认是true
setAutoCommit(false);
手动提交事务
commit();
批处理:
添加批处理的sql:addBatch()
执行批量sql:executeBatch()

开发流程:

JDBC的安装