简介
-
JDVBC就是使用java语言操作关系型数据库的一套API
-
全称:Java DataBase Connectivity
操作数据库
1.创建工程,导入驱动jar包,使用maven 2.注册驱动: Class.forName("com.mysql.jdbc.Driver"); 3.获取连接: connection conn=DriveManager.getConnection(url,username,password); url:端口,访问的数据库 username:数据库的账号 password:数据库的密码 4.定义sql语句: String sql="update....."; 5.获取执行Sql对象: Statement stmt=conn.createStatement(); 6.执行SQL stmt.executeUpdate(sql); 7.处理返回结果 8.释放资源
//1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 这个是数据库 String url="jdbc:mysql://localhost:3306/(dormitory)?serverTimezone=GMT%2B8";//端口号,要连接的哪个数据库 String username="root";//数据库的账号 String password="1234";//数据库的密码 //2.创建连接对象,获取连接 Connection conn=DriverManager.getConnection(url,username,password); //3.定义sql语句 String sql="update student set gender='男' where id=3"; //4.获取sql执行对象 Statement stmt=conn.createStatement(); //5.执行sql,受影响的行数 int count=stmt.executeUpdate(sql); if (count==1){ System.out.println("更新成功"); } //关闭执行对象 //关闭连接 stmt.close(); conn.close();
Drivermanager
-
注册驱动:
例: Class.forName("com.mysql.cj.jdbc.Driver"); static{ //加载mysql驱动 try { Class.forName(driverName); } catch (Exception e) { e.printStackTrace(); } }
-
获取数据库的连接:
Connection conn=DriverManager.getConnection(url,username,password); 1.url:(连接路径) "jdbc:mysql://localhost:3306/dormitory?serverTimezone=GMT%2B8"; jdbc:mysql:// :协议,固定的书写格式 localhost:3306/ :ip地址:端口号/ dormitory? :数据库 serverTimezone=GMT%2B8"; :就是对比时间,数据库是外国人发明的,我们要对比到我们的北京时间
Connection
-
获取执行SQL的对象
1.获取执行的SQL的对象 1.普通的执行SQL对象: Statement createStatement(); 2.预编译SQL的执行SQL对象,防止SQL注入 PreparedStatement preparedStatement(sql) 3.执行存储过程的对象 CallableStatement prepareCall(sql)
-
事物管理
-
statement
-
执行SQL语句
int executeUpdate(sql);执行DML,DDL DML:对数据的增删该的操作 DDL:对数据库和表进行增删改的操作 返回值:DML语句影响的行数,DDL语句执行后,执行成功也肯能返回0 ResultSet executeQuery(sql);执行DQL DQL:执行对数据的查询操作 返回值:ResultSet结果集对象
ResultSet(结果集对象)
-
封装了DQL查询语句的结果
boolean next(); 1.将光标从当前位置向前移动一行 2.判断当前行是否为有效行 3.返回值: true:有效行,当前行有数据 false:无效行当前行没有数据 xxx getxxx(参数); 1.获取数据 2.xxx:数据类型 如 int getInt(参数) || String getString(参数) 3.参数: int:列的编号,从1开始 String:列的名称
prepareStatement
-
预编译SQL语句并执行,预防SQL注入问题
//获取prepareStatement 对象 String sql="select * from user where username=? and password=?"; //通过Connection对象获取,并创宇对应的sql语句 prepareStatement pstmt=conn.prepareStatement(sql); //设置参数 prepareStatement对象:setXxx(参数1,参数2):给?赋值 Xxx:数据类型;如SetInt(参数1,参数2) 参数: 参数1:?的位置编号,从1开始 参数2:?的值
-
SQL注入通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法