什么时JDBC?
JDBC指Java数据库连接,是一种标准Java应有编程接口,用来连接Java编程语言的广泛的数据库
操作数据库的步骤
- 加载驱动
- 连接数据库DriverManager
- 获得执行SQL的对象Statement
- 获得返回的结果集
- 释放资源
DriverManager
Class.from("com.mysql.jdbc.Driver") ;-- 固定写法
Connection connection = DriverManager.getConnection(url,name,pwd)
//Connection代表数据库 数据库能干的事
//数据库的自动提交
//事务提交
//事务回滚
connection.rollback();-- 事务回滚 connection.setAutoCommit();-- 设置自动提交 true是开启 false是关闭 connection.commit();-- 事务提交
URL
String url="jdbc:mysql://localhost:3306/school?useUnicode=true&characterEnocding=utf8&useSSL=true"
//mysql--3306 mysql只有一个端口号3306
//jdbc:mysql://主机地址://数据库名字?参数1&参数2&参数3
Statement执行SQL的对象 PrepareStatement执行SQL对象
-》statement执行SQL对象
-- 编写SQL语句 String str="select * from student"; -- 创建Statement 对象 Statement statement=connection.createStatement(); statement.executeQuery(sql); //执行查询 返回结果集 statement.execute(sql);// 任何语句都可以执行 因为它有一个判断效率肯定会慢一点 statement.executeUpdate();// 执行增删改 返回影响行数 statement.executeBatch();// 可以执行多个SQL语句
-》执行PrepareStatement
// 这样的方式比较安全防止SQL注入 String sql="update student set name=? where id=?";//创建SQL语句先不赋值 PreparedSatement st=connection.prepareStatement(sql);//这边要预创建SQL //这里的第一个参数对应的是SQl语句中的问号,以1开始,第二个参数是要负的值(什么类型写什么值) st.getString(1,"小糊涂"); st.getInt(2,1); //执行更新 st.executeUpdate();
扩展:PreparedStatement防止SQL注入的本质,把传递进来的参数当作字符,假设其中存在转义字符,比如 ’ 就会被直接转义
ResultSet查询的结果集:封装了 所有的查询结果
//如果知道列的类型旧使用指定的类型 resultSet.getString(); resultSet.getInt(); resultSet.getFloat(); resultSet.getDate(); resultSet.getObject();
运用:假设有一个学生表表里有id,name,sex字段,拿到学生表字段的每一个值
//加载驱动 Class.forName("com.mysql.jdbc.Driver"); //URL String url="jdbc:mysql://localhost:3306/school?useUnicode=true&characteEnocding=utf8&useSSL=true"; //连接数据库DriverManager Connection root =DriverManager.getConnection(url,"root","123456"); //创建执行对象 Statement statement=root.createStatement(); //执行sql语句 String sql="select*from student"; ResultSet resultset=statement.executeQuery(sql); while(resultset.next){ sout(resultset.getInt("id")); sout(resultset.getString("name")); sout(resultset.getString("sex")); }