DriverManager:驱动管理对象 功能:1. 注册驱动:告诉程序应该使用哪个数据库驱动jar
static void registerDriver ( Driver driver)
static {
try {
java. sql. DriverManager. registerDriver ( new Driver ( ) ) ;
} catch ( sQLException E) {
throw new RuntimeException ( "can't register driver!" ) ;
}
2. 获取数据库连接
参 数∶url : 指定连接的路径
* 语法: jdbc : mysql: / / ip地址( 域名) : 端口号/ 数据库名称
* 例子: jdbc : mysql: / / localhost: 3306 / db3
* 细节: 如果连接的是本机my sql服务器,并且mysql服务默认端口是3306 ,则url可以简写为: jdbc: mysql:
* user : 用户名
* password : 密码
Connection:数据库连接对象 功能:1. 获取执行sql的对象
Statement createStatement( )
PreparedStatement prepareStatement( String sql)
2. 管理事务
1.开启事务:
void setAutoCommit(boolean autoCommit) 将此连接的自动提交模式设置为给定状态。
2. 提交事务
void commit() 使上次提交/回滚之后所做的所有更改都将永久性,并释放此 Connection对象当前持有的任何数据库锁。
3. 回滚事务
void rollback() 撤消在当前事务中所做的所有更改,并释放此 Connection对象当前持有的任何数据库锁。
Statement(功能不太完善,知道就行,不太使用):执行sql对象 功能: 1. boolean execute (string sql) : 可以执行任意的sql(了解) 2. int executeupdate(String sql):执行DML (insert、update、delete)语句、DDL(create,alter、drop)语句 返回值∶影响的行数,可以通过这个影响的行数判断DML语句是否执行成功 返回值>0的则执行成功,反之,则失败。 3. Resultset executeouery(string sql):执行DQL (select)语句 ResultSet:结果集对象,封装查询结果 功能:
next();游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true getXxx(参数);获取数据:Xxx:代表数据类型 如:int geiInt(), String getString() 使用步骤:
游标向下移动一行 判断是否有数据 获取数据 举例:
while ( resultSet. next ( ) ) {
int id= resultSet. getInt ( 1 ) ;
String name= resultSet. getString ( 2 ) ;
double balance= resultSet. getDouble ( 3 ) ;
System. out. println ( ( id + " " + name + " " + balance) ) ;
}
PreparedStatement(主要使用,来执行sql对象):执行sql对象 执行sql对象 1. sql注入问题:在拼接sql时,有些sql的特殊关键字参与字符串拼接,会造成安全问题。 输入用户名随便,输入密码:a" or “a”=“a” sql : select * from user where username ="sdfsa"andpassword=“a” or “a”=“a”;
解决sql注入问题使用preparedstatement对象来解决 预编译的sql :参数使用?作为占位符 使用步骤:
导入驱动jar包mysql-connector-java-5.1.37-bin.jar 注册驱动 获取数据库连接对象 Connection 定义sql 注意:sql的参数使用?作为占位符 如:select * from user where username=? and password=?; 获取执行sql语句的对象 preparedstatement connection.preparedstatement(String sql); 给?赋值 方法:setXxx(参数1,参数2) 参数1:?的位置编号 从1开始 参数2:?的值 执行sql,接收返回结果,不需要传递sql 语句。 如果执行的语句是DML语句,使用executeUpdate 如果执行的语句是DQL语句,使用executeQuery 处理结果 释放资源