JDBC java连接数据库对数据库进行一些操作

本文详细介绍了使用JDBC访问数据库的步骤,包括导入驱动、建立连接、执行SQL语句及处理结果集。重点对比了Statement与PreparedStatement的区别,后者在编码简便性、性能提升和防止SQL注入方面具有明显优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 jdbc访问数据库的具体步骤:
a.导入驱动,加载具体的驱动类
b.与数据库建立连接
c.发送sql,执行
d.处理结果集(集中)

a.导入驱动包、加载具体驱动类 Class.forName("com.mysql.cj.jdbc.Driver");
b.与数据库建立连接 connection = DriverManager.getConnection(....);
c.通过connection,获取操作数据库的对象(Statement \ preparedStatement \ callablestatement)
   stmt = connection.createStatement();
d.(查询)处理结果集  rs = pstmt.executeQuery()

 

 

 

推荐使用PreparedStatement:原因如下:
1.编码更加简便 (避免了字符串的拼接)
String name = "zs";
int age = 23;

stmt:
String sql = "insert into student (stuno,stuname) values ('"+name+"',"+age+")" ;
stmt.executeUpdate(sql) ;

pstmt:
String sql = "insert into student (stuno,stuname) values (?,?)" ;
pstmt = connection.prepareStatement(sql);   //预编译
pstmt.setString(1,name);
pstmt.setInt(2,age);
pstmt.executeUpdate();

2.提高性能 (因为有预编译操作, 预编译只需要执行一次)

需要重复增加100条数 (批量处理)

stmt:
String sql = "insert into student (stuno,stuname) values ('"+name+"',"+age+")" ;
stmt.executeUpdate(sql) ;

pstmt:
String sql = "insert into student (stuno,stuname) values (?,?)" ;
pstmt = connection.prepareStatement(sql);   //预编译
pstmt.setString(1,name);
pstmt.setInt(2,age);
pstmt.executeUpdate();

3.安全(可以有效防止sql注入)
sql注入:将客户输入的内容 和 开发人员的SQL语句 混为一体
stmt:存在被sql注入的风险
(例如输入 用户名: 任意值  ' or 1=1 --
      密码   : 任意值)
分析:
select count(*) from login where uname = '"+name+" ' and upwd = '"+pwd+";
select count(*) from login where uname = '任意值' or 1=1 -- ' and upwd = '任意值';    // --是sql的注释语句
select count(*) from login where uname = '任意值' or 1=1;
select count(*) from login ;

pstmt:有效防止sql注入

推荐使用pstmt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值