day05JDBC总结

来源:互联网 发布:工业软件市场规模 编辑:程序博客网 时间:2024/06/02 18:46
1.JDBC的简介
1.用java程序对数据库进行增删改查,是java和数据库之间的桥梁
2.想要使用java对数据库进行操作,需要使用由数据库提供的数据库驱动
3.一个程序,使用java操作数据库,要掌握java代码,还需要掌握数据库驱动代码
而数据库有多种,比如mysql,oracle,对于程序员来讲需要掌握每一种数据库驱动代码
对于程序员来说压力很大.sun公司针对这一点,就开发出一套标准接口,各个数据库只需要实现这个接口就可以
程序员只需要掌握这套标准接口就可以了
这套标准接口就是JDBC
4.如果想要使用JDBC对数据库进行操作首先要安装数据库驱动,不同的数据库提供驱动使用jar的形式提供的
需要把jar包放到项目里面,相当于安装了数据库驱动
5.导入jar到项目中(使用到开发工具myeclipse10.x版本)
首先创建一个文件夹lib,把jar包复制到lib里面,选中jar包右键点击build path--add to build path,
jar包前面的图标变成奶瓶图标,表示导入成功
2.JDBC入门案例
2.使用jdbc对数据库进行操作步骤是固定的
使用类和接口
DriverManager
Connection
Statement
ResultSet
JDBC操作步骤
第一步:数据驱动
第二步:创建与数据库连接
第三步:编写sql语句
第四步:执行Sql语句
第五步:释放资源
3.使用JDBC实现查询的操作
代码
public static void main(String[] agrs) throws Exception{
//加载驱动
DriverManager.registerDriver(new Driver());
//创建连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3360/testdb2","root","root")
//编写sql
String sql="select * from user"
//执行Sql,得到statement
Statement stmt=conn.createStatement(),
ResultSet rs=stmt.executeQuery(SQL)
//遍历结果集得到每条记录
while(rs.next()){
int id=rs.getInt("id");
String username=rs.getString("username")
int chinese=rs.getInt("chinese");
int english= rs.getInnt("english")
System.out.println(id+"::"+username+"::"+chinese+"::"+english)
}
//释放资源
rs.close();
stmt.close();
conn.close();


}


3.使用JDBC进行crud操作
(1)实现对数据库表记录进行查询的操作
* executeQuery(sql)
(2)实现对数据库表记录进行增加的操作
*executeUpdate(sql)
(3)实现对数据库表记录进行修改的操作
*executeUpdate(Sql)


4.Jdbc工具类的封装
9.1当在很多的类里面有相同的代码,可以吧相同的代码提取到一个工具类李曼
在类里面直接调用工具类里面的方法实现
在JDBC实现crud操作的代码里面,首先得到数据库连接和释放资源的代码是重复的,所以进行封装
可以把数据库的一些信息,写到配置文件里面,在工具类读取配置文件得到内容
一般使用ProPerties格式文件作为存储数据库信息的文件
有两种方式读取配置文件
第一种 使用properties类
(1)代码
//创建properties对象
Properties p=new Properties();
//文件的输入流
InputStream in=new FileInputStream("src/db.properties");
//把文件的输入流放到对象里面
p.load(in);
String drivername=p.getProerty("drivername")
String  url=p.getProperty("url");
String username=p.getProperty("username")
String password=p.getProperty("password");
第二种,使用ResourceBundle类
使用范围:首先读取文件格式需要时Properties,文件需要放到src下面
代码
String drivername=ResourceBudle.getBundle("db").getString("drivername");
String url=ResourceBudle.getBundle("db").getString("url")
String username=ResourceBundle.getBundle("db").getString("username");
String password=ResourceBundle.getBundle("db").getString("password")
String password=ResourceBundle.getBundle("db").getString("password");
代码
public static String drivername;
public static String url;
public static String url;
public static String username;
public static String password;
//在类加载时候,执行读取文件的操作
static{
drivername=ResourceBundle.getBundle("db").getString("drivername")
url=ResourceBunDle.getBundle("db").getString("username");
username=ResourceBundle.getBundle("db").getString("username")
password =ResourceBundle.getBundle("db").getString("password");

}
10.使用jdbc的工具类实现crud操作
11.sql的注入和防止
模拟登陆的效果
(1)登陆的实现的步骤
首先,输入用户名和密码
第二,拿到输入的用户名和密码,到数据库里面进行查询,如果用户名和密码都正确,才表示登陆成功
但是如果用户名和密码,有一个错误,表示登陆失败哦


演示Sql的注入
(1)在登陆时候,用户名里面输入bbb'or'1=1,因为在表里面有一个用户是bbb,
可以登陆成功,因为输入的内容,被作为sql语句的一个条件,而不是作为整个用户名
select * from user where username='bbb'or'1=1'and password='rrr'
防止sql注入
(1)使用PreparedStatement预遍对象防止sql注入
(2)创建PreparedStatement对象 prepareStatement(String sql)
(3)PreparedStatement接口的父接口Statement
(4)什么是预编译
(5)步骤
第一步,加载驱动,创建数据库连接
第二步,编写Sql
第三步,需要对sql进行编译
第四步,向sql进行编译
第五步,执行sql
第六步 释放资源
(6)代码
//使用工具类得到数据库连接
conn=MyJdbcutils.getConnection();
//编写sql
String sql="select * from user where username=?and password=?"
//对sql进行预编译
pamt=conn.prepareStatement(sql);
//设置参数
psmt.setString(1,username)
//执行sql
rs=psmt.executeQuery();
if(rs.next()){
System.out.println("login success")
} else{
System.out.println("fail");

}


12.使用preparedStatement预编译对象实现crud操作
注意地方:
第一,编写sql时候,参数使用?表示(占位符)
第二,预编译sql设置参数的值,执行sql
12.1使用preparedStatement预编译对象实现查询的操作
(1)预编译sql,设置参数的值,执行sql
使用preparedStatement预编译对象实现查询的操作
(1)预编译对象executeQuery()执行查询语句
使用preparedStatement预编译对象实现增加的操作
(2预编译对象executeUpdate()执行增加的语句
使用preparedStatement预编译对象实现修改的操作
预编译对象executeUpdate()执行修改的语句
使用preparedStatement预编译对象实现删除的操作
(1)预编译对象executeupdate()执行删除的语句
0 0
原创粉丝点击