JDBC之API详解

DriverManeger(驱动管理类,里面都是静态类getconnection和registerDriver)

1、注册驱动

Class.forName("com.mysql.jdbc.Driver");

2、获取数据库连接

url:

Connection(数据库连接对象)

1、获取执行sql执行对象

普通执行sql对象

Statement createStatement()

预编译sql执行对象:防止sql注入

PreparedStarement prepareStatement(sql)

2、事务管理

try{
//开启事务
conn.setAutoCommit(false);
//执行sql
int count1 = stmt.executeUpdate(sql1);//受影响的行数
//处理结果
System.out.println(count1);
//执行sql
int count2 = stmt.executeUpdate(sql2);
//处理结果
System.out.println(count2);
//提交事务
conn.commit();
}catch(Exception throwables){
//回滚事务
conn.rollback();
throwables.printStackTrace();
}

Statement

执行sql语句

1、int executeUpdate:执行DML DDL语句

//DML
//获取执行sql对象
Statement stmt = conn.createStatement();
//执行sql
int count = stmt.execeteUpdate(sql);//执行DML语句
//DDL
String sql = "create datebase db2";
String sql = "drop datebase db2";

2、Result executeQuery(sql):执行DQL语句。返回ResultSet对象

ResultSet(结果集对象)

1、封装了DQL查询语句的结果

//定义sql
String sql = "select *from account";
//获取statemet 对象
Statement stmt = conn.createStatement();
//执行sql
ResultSet rs = stmt.executeQuery(sql);
//处理结束,遍历rs中所有数据。
//光标向下移动,并且判断当前行是否有数据
while(rs.next()){
//获取数据 getXXX()
    int id = rs.getInt(1);
    String name = rs.getString(2)       ;
    double money = rs.getDouble(3);
}
//释放资源
rs.close();
conn.close();
stmt.close();

PreparedStatement(是接口,继承自Statement)

1、预防sql注入问题(预编译sql语句并执行)

sql注入:通过操作输入来修改事先定义好的sql语句,以达到执行代码对服务器进行攻击的方法

令password = ' or ' 1 ' = '1   可能直接登陆网页

//防注入
String name = "zhangsan";
String pwd = "hdbkhgfeish";
//定义sql
String sql = "select *from tb_user where username = ? and password = ?";
//获取pstmt对象
PreparedStstement pstmt = conn.prepareStatement(sql);
//设置?的值
pstmt.setString(1,name);
pstmt.setString(2,pwd);
//执行sql
ResultSet rs = pstmt.executeQuery();
//判断登录是否成功
if(rs.next()){
    System.out.println("登录成功");
}else{
    System.out.println("登录失败");
}
//释放资源
rs.close();
pstmt.close();
conn.clise();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值