JDBC
概念:
Java数据库连接,Java语言操作数据库
jdbc的本质:是官方提供的一套操作所有关系型数据库的规则,即接口。让数据库去实现这套接口提供的tar包。我们可以使用这套接口(jdbc)编程,真正执行的代码是驱动tar包中的实现类。
快速入门:
*步骤:
1、导入tar包
2、注册驱动
3、获取数据库连接对象Connection
4、定义sql语句
5、获取执行sql语句 的对象Statement
6、执行sql语句 接收返回结果
7、处理结果
8、释放资源
JDBC各个类详解:
DriverManager:驱动管理对象
功能:1、注册驱动:告诉程序该使用哪个数据库驱动jar
代码一般写:Class.forName("com.mysql.jdbc.Driver");Driver里面有一个静态代码块封装的是DeiverManager的注册驱动的方法
2、获取数据库连接:getConnection(url,user,password)
参数:url:指定连接的路径
user:用户名 password:密码
url的格式:jdbc:mysql://IP地址(域名):端口号/数据库名 ,如果是本机ip和端口号可以省略
Connection:数据库连接对象
功能:1、获取执行sql对象
statement createStatement()
perparedstatement perparedstatement(string sql)
2、管理事务
开启事务:setAutoCommit(boolean autoCommit)调用该方法开启事务为false,即开启事务
提交事务:commit()
回滚事务:rollback()
statement:执行sql的对象
功能:
执行sql语句:
boolean excute(string sql)可以执行任意sql语句(了解)
int excuteUpdate(string sql)可以执行DML(insert into,update,delete)和DDL(create,alter,drop)的语句
返回值:int表示影响的行数,可以通过这个影响的行数判断DML是否执行成功,如果返回值>0,说明执行成功,反之,则失败。
resultset excuteQuery(string sql)执行DQL(select)的语句,返回一个结果集
resultset:结果集对象,查询封装结果
*next()游标向下移动了一位
*getXxx(参数)获取数据
*Xxx表示数据类型。如:getInt() getString()
参数:int string
1、int表示列的编号从1开始,如getString(1);
2、string()表示列名称,如getString(“id”);
注意:使用步骤
1、游标向下移动一行
2、判断是否有数据
3、获取数据
while(rs.next()) { // int id = rs.getInt(1); // String name = rs.getString(2); // String sex = rs.getString(3); int id = rs.getInt("sid"); String name = rs.getString("sname"); String sex = rs.getString("sex"); System.out.println(id+"...."+name+"....."+sex); }
preparedstatement:执行sql的对象
1、sql注入问题:在拼接sql时有一些sql的特殊关键字参与字符串拼接,会造成安全性问题。
如:用户随便输入密码 ‘a’ or ‘a’=a;会出现select * from user where uname='ss' and password =a or a= a;
2、解决sql注入问题:使用preparedstatement对象来解决
预编译的sql:参数使用?作用占位符
3、步骤
1、导入tar包
2、注册驱动
3、获取数据库连接对象Connection
4、定义sql语句
*注意:定义sql使用?作为占位符,如select * from user where uname = ? and password = ?;
5、获取执行sql语句 的对象perpardstatement ,prepardstatement Connection.Prepardstatement(string sql)
6、给?赋值
*setXxx(参数1,参数2)xxx是数据类型
*参数1表示第几个占位符,从1开始;参数2表示占位符的值
7、执行sql语句 接收返回结果 ; 接收返回是不需要传参数
8、处理结果
9、释放资源
4、注意后期会使用prepardstatement来完成增删改查的操作,
1、可以防止sql注入
2、效率更高
jdbc空值事务的操作:
1、概念:一个包含多个步骤的业务操作,如果这个业务操作被事务管理,则多个步骤要不同时成功,要不同时失败。
2、操作:
开启事务
提交事务
回滚事务
3、使用connection对象来管理事务:
开启事务:setAutoCommit(参数一):开启事务的方法。
参数一:boolean
true(默认值):自动提交数据
false:手动提交数据
提交事务:commit()
回滚事务:rollback()