JDBC的安装

JDBC

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

下载驱动jar包:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
jdbc连接步骤:
1.加载驱动
2.创建连接
3.创建sql通道
4.执行sql
5.关闭资源

创建项目:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:
//路径: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()

开发流程:

在这里插入图片描述

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值