9.JDBC

0.1JDBC介绍

        jdbc是一个独立于数据库管理系统和通用sql的公共接口,为访问不同的数据库提供了一种统一的途径

0.2获取数据库连接

        方式一:

String url="jcbc:mysql://localhost:3306/xxx";
String user="用户名"
String password="密码";
Class clazz=Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection(url,user,password);

        方式二:将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接。

                (1)使数据与代码的分离,实现了解耦

                (2)只需要修改配置文件信息,可以避免程序重新打包

user=用户名
password=密码
url=jdbc:mysql://localhost:3306/xxx
dirverClass=com.mysql.jdbc.Driver
InputStream is=ClassLoder.class.getResourceAsStream("jdbc.properties");//该方式的jdbc.properties默认在当前Module的src路径下
Properties pros=new Properties();
pros.load(is);
String user=pros.getProperty("user");
String password=pros.getProperty("password");
String url=pros.getProperty("url");
String driverClass=pros.getProperty("driverClass");
Class.forName(driverClass);
Connection conn=DriverManager.getConnection(url,user,password);

0.3实现CRUD操作

        数据库连接被用于向数据库服务器发送命令和SQL语句,并接受数据库服务器返回的结果。

        java.sql包中有3个接口分别定义了对象数据库的调用的不同方式:

                Statement:用于执行静态SQL语句并返回它所生成结果的对象。

                PrepatedStatement:Statement的子接口。SQL语句被预编译并存储在此对象中,可以使用此对象多次高效地执行该语句。

                CallableStatement:用于执行SQL存储过程。

        使用Statement操作数据表的弊端:

                问题一:存在拼串操作,繁琐。

                问题二:存在SQL注入问题。在用户输入数据中注入非法的SQL语句,从而利于系统的SQL引用完成恶意行为的做法。

        防止SQL注入,只要用PrepatedStatement替换Statement就可以了

//1.加载驱动
class.forName("JDBC驱动类的名称");
//2.创建连接
Connection con=DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);
//3.写sql语句
//4.创建PreparedStatement对象执行sql语句
PreparedStatement psmt=con.prepareStatement(sql语句); //sql语句里的条件先用占位符先占着
psmt.setInt(1,80);     //给占位符参数。1为占位符的下标(下标从1开始),80就是参数
ResultSet rs=psmt.executeQuery();
//5.遍历结果
while(rs.next())
{
    int id=rs.getInt("id");
    String name=rs.retString("name");
}
//6.关闭连接

0.4JDBC事务处理

        当一个连接对象被创建时,默认情况下是自动提交的。

        关闭数据库连接,数据就会自动的提交,如果多个操作,每个操作使用的是自己单独的连接,则无法保证事务,即同一个事务的多个操作必须在同一个连接下。

        调用Connection的方法:

setAutoCommit(false); //取消数据的自动提交
commit(); //提交事务
rollback(); //回滚事务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值