当前位置: 首页 > news >正文

旅游攻略网站开发重庆市建设工程信息网项目经理解锁指南

旅游攻略网站开发,重庆市建设工程信息网项目经理解锁指南,wordpress 主题 36kr,广东省住房和城乡建设厅官网文章目录01 JDBC快速入门02 JDBC各个类详解03 JDBC之CRUD练习04 ResultSet类详解05 JDBC登录案例练习抽取JDBC工具类 #xff1a; JDBCUtils练习06 PreparedStatement类详解07 JDBC事务管理目标 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 01 JDBC快速入门 1… 文章目录01 JDBC快速入门02 JDBC各个类详解03 JDBC之CRUD练习04 ResultSet类详解05 JDBC登录案例练习抽取JDBC工具类 JDBCUtils练习06 PreparedStatement类详解07 JDBC事务管理目标 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 01 JDBC快速入门 1. 概念Java DataBase Connectivity Java 数据库连接 Java语言操作数据库* JDBC本质其实是官方sun公司定义的一套操作所有关系型数据库的规则即接口。各个数据库厂商去实现这套接口提供数据库驱动jar包。我们可以使用这套接口JDBC编程真正执行的代码是驱动jar包中的实现类。2. 快速入门* 步骤1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下2.右键--Add As Library2. 注册驱动3. 获取数据库连接对象 Connection4. 定义sql5. 获取执行sql语句的对象 Statement6. 执行sql接受返回结果7. 处理结果8. 释放资源* 代码实现//1. 导入驱动jar包//2.注册驱动Class.forName(com.mysql.jdbc.Driver);//3.获取数据库连接对象Connection conn DriverManager.getConnection(jdbc:mysql://localhost:3306/db3, root, root);//4.定义sql语句String sql update account set balance 500 where id 1;//5.获取执行sql的对象 StatementStatement stmt conn.createStatement();//6.执行sqlint count stmt.executeUpdate(sql);//7.处理结果System.out.println(count);//8.释放资源stmt.close();conn.close(); 02 JDBC各个类详解 sql语句 execute、executeQuery和executeUpdate之间的区别: DriverManager驱动管理对象 注册驱动获取数据库连接 Connection数据库连接对象Statement执行sql的对象 1. DriverManager驱动管理对象* 功能1. 注册驱动告诉程序该使用哪一个数据库驱动jarstatic void registerDriver(Driver driver) :注册与给定的驱动程序 DriverManager 。 写代码使用 Class.forName(com.mysql.jdbc.Driver);通过查看源码发现在com.mysql.jdbc.Driver类中存在静态代码块static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException(Cant register driver!);}}注意mysql5之后的驱动jar包可以省略注册驱动的步骤。2. 获取数据库连接* 方法static Connection getConnection(String url, String user, String password) * 参数* url指定连接的路径* 语法jdbc:mysql://ip地址(域名):端口号/数据库名称* 例子jdbc:mysql://localhost:3306/db3* 细节如果连接的是本机mysql服务器并且mysql服务默认端口是3306则url可以简写为jdbc:mysql:///数据库名称* user用户名* password密码 2. Connection数据库连接对象1. 功能1. 获取执行sql 的对象* Statement createStatement()* PreparedStatement prepareStatement(String sql) 2. 管理事务* 开启事务setAutoCommit(boolean autoCommit) 调用该方法设置参数为false即开启事务* 提交事务commit() * 回滚事务rollback() 3. Statement执行sql的对象1. 执行sql1. boolean execute(String sql) 可以执行任意的sql 了解 2. int executeUpdate(String sql) 执行DMLinsert、update、delete语句、DDL(createalter、drop)语句* 返回值影响的行数可以通过这个影响的行数判断DML语句是否执行成功 返回值0的则执行成功反之则失败。3. ResultSet executeQuery(String sql) 执行DQLselect)语句 5. PreparedStatement执行sql的对象1. SQL注入问题在拼接sql时有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题1. 输入用户随便输入密码a or a a2. sqlselect * from user where username fhdsjkf and password a or a a 2. 解决sql注入问题使用PreparedStatement对象来解决3. 预编译的SQL参数使用?作为占位符4. 步骤1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar2. 注册驱动3. 获取数据库连接对象 Connection4. 定义sql* 注意sql的参数使用作为占位符。 如select * from user where username ? and password ?;5. 获取执行sql语句的对象 PreparedStatement Connection.prepareStatement(String sql) 6. 给赋值* 方法 setXxx(参数1,参数2)* 参数1的位置编号 从1 开始* 参数2的值7. 执行sql接受返回结果不需要传递sql语句8. 处理结果9. 释放资源5. 注意后期都会使用PreparedStatement来完成增删改查的所有操作1. 可以防止SQL注入2. 效率更高03 JDBC之CRUD练习 java基础总结(二十七)–Statement 和 PreparedStatement之间的关系和区别 2. 练习1. account表 添加一条记录2. account表 修改记录3. account表 删除一条记录代码Statement stmt null;Connection conn null;try {//1. 注册驱动Class.forName(com.mysql.jdbc.Driver);//2. 定义sqlString sql insert into account values(null,王五,3000);//3.获取Connection对象conn DriverManager.getConnection(jdbc:mysql:///db3, root, root);//4.获取执行sql的对象 Statementstmt conn.createStatement();//5.执行sqlint count stmt.executeUpdate(sql);//影响的行数//6.处理结果System.out.println(count);if(count 0){System.out.println(添加成功);}else{System.out.println(添加失败);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {//stmt.close();//7. 释放资源//避免空指针异常if(stmt ! null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn ! null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}04 ResultSet类详解 4. ResultSet结果集对象,封装查询结果* boolean next(): 游标向下移动一行判断当前行是否是最后一行末尾(是否有数据)如果是则返回false如果不是则返回true* getXxx(参数):获取数据* Xxx代表数据类型 如 int getInt() , String getString()* 参数1. int代表列的编号,从1开始 如 getString(1)2. String代表列名称。 如 getDouble(balance)* 注意* 使用步骤1. 游标向下移动一行2. 判断是否有数据3. 获取数据//循环判断游标是否是最后一行末尾。while(rs.next()){//获取数据//6.2 获取数据int id rs.getInt(1);String name rs.getString(name);double balance rs.getDouble(3);System.out.println(id --- name --- balance);}* 练习* 定义一个方法查询emp表的数据将其封装为对象然后装载集合返回。1. 定义Emp类2. 定义方法 public ListEmp findAll(){}3. 实现方法 select * from emp;05 JDBC登录案例练习 抽取JDBC工具类 JDBCUtils 目的简化书写分析 注册驱动也抽取抽取一个方法获取连接对象 需求不想传递参数麻烦还得保证工具类的通用性。解决配置文件 jdbc.properties url user password 抽取一个方法释放资源 * 代码实现public class JDBCUtils {private static String url;private static String user;private static String password;private static String driver;/*** 文件的读取只需要读取一次即可拿到这些值。使用静态代码块*/static{//读取资源文件获取值。try {//1. 创建Properties集合类。Properties pro new Properties();//获取src路径下的文件的方式---ClassLoader 类加载器ClassLoader classLoader JDBCUtils.class.getClassLoader();URL res classLoader.getResource(jdbc.properties);String path res.getPath();System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties//2. 加载文件// pro.load(new FileReader(D:\\IdeaProjects\\itcast\\day04_jdbc\\src\\jdbc.properties));pro.load(new FileReader(path));//3. 获取数据赋值url pro.getProperty(url);user pro.getProperty(user);password pro.getProperty(password);driver pro.getProperty(driver);//4. 注册驱动Class.forName(driver);} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 获取连接* return 连接对象*/public static Connection getConnection() throws SQLException {return DriverManager.getConnection(url, user, password);}/*** 释放资源* param stmt* param conn*/public static void close(Statement stmt,Connection conn){if( stmt ! null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if( conn ! null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}/*** 释放资源* param stmt* param conn*/public static void close(ResultSet rs,Statement stmt, Connection conn){if( rs ! null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if( stmt ! null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if( conn ! null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}练习 * 练习* 需求1. 通过键盘录入用户名和密码2. 判断用户是否登录成功* select * from user where username and password ;* 如果这个sql有查询结果则成功反之则失败* 步骤1. 创建数据库表 userCREATE TABLE USER(id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(32),PASSWORD VARCHAR(32));INSERT INTO USER VALUES(NULL,zhangsan,123);INSERT INTO USER VALUES(NULL,lisi,234);2. 代码实现public class JDBCDemo9 {public static void main(String[] args) {//1.键盘录入接受用户名和密码Scanner sc new Scanner(System.in);System.out.println(请输入用户名);String username sc.nextLine();System.out.println(请输入密码);String password sc.nextLine();//2.调用方法boolean flag new JDBCDemo9().login(username, password);//3.判断结果输出不同语句if(flag){//登录成功System.out.println(登录成功);}else{System.out.println(用户名或密码错误);}}/*** 登录方法*/public boolean login(String username ,String password){if(username null || password null){return false;}//连接数据库判断是否登录成功Connection conn null;Statement stmt null;ResultSet rs null;//1.获取连接try {conn JDBCUtils.getConnection();//2.定义sqlString sql select * from user where username username and password password ;//3.获取执行sql的对象stmt conn.createStatement();//4.执行查询rs stmt.executeQuery(sql);//5.判断/* if(rs.next()){//如果有下一行则返回truereturn true;}else{return false;}*/return rs.next();//如果有下一行则返回true} catch (SQLException e) {e.printStackTrace();}finally {JDBCUtils.close(rs,stmt,conn);}return false;}} 06 PreparedStatement类详解 PreparedStatement和动态SQL 什么是sql注入 PreparedStatement执行sql的对象 SQL注入问题在拼接sql时有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1. 输入用户随便输入密码a’ or ‘a’ a 2. sqlselect * from user where username ‘fhdsjkf’ and password ‘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.prepareStatement(String sql)给赋值 方法 setXxx(参数1,参数2) 参数1的位置编号 从1 开始参数2的值 执行sql接受返回结果不需要传递sql语句处理结果释放资源 注意后期都会使用PreparedStatement来完成增删改查的所有操作 可以防止SQL注入效率更高 07 JDBC事务管理 事务一个包含多个步骤的业务操作。如果这个业务操作被事务管理则这多个步骤要么同时成功要么同时失败。操作 开启事务提交事务回滚事务 使用Connection对象来管理事务 开启事务setAutoCommit(boolean autoCommit) 调用该方法设置参数为false即开启事务 在执行sql之前开启事务 提交事务commit() 当所有sql都执行完提交事务 回滚事务rollback() 在catch中回滚事务 4. 代码public class JDBCDemo10 {public static void main(String[] args) {Connection conn null;PreparedStatement pstmt1 null;PreparedStatement pstmt2 null;try {//1.获取连接conn JDBCUtils.getConnection();//开启事务conn.setAutoCommit(false);//2.定义sql//2.1 张三 - 500String sql1 update account set balance balance - ? where id ?;//2.2 李四 500String sql2 update account set balance balance ? where id ?;//3.获取执行sql对象pstmt1 conn.prepareStatement(sql1);pstmt2 conn.prepareStatement(sql2);//4. 设置参数pstmt1.setDouble(1,500);pstmt1.setInt(2,1);pstmt2.setDouble(1,500);pstmt2.setInt(2,2);//5.执行sqlpstmt1.executeUpdate();// 手动制造异常int i 3/0;pstmt2.executeUpdate();//提交事务conn.commit();} catch (Exception e) {//事务回滚try {if(conn ! null) {conn.rollback();}} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}finally {JDBCUtils.close(pstmt1,conn);JDBCUtils.close(pstmt2,null);}}}i 3/0; pstmt2.executeUpdate();//提交事务conn.commit();} catch (Exception e) {//事务回滚try {if(conn ! null) {conn.rollback();}} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}finally {JDBCUtils.close(pstmt1,conn);JDBCUtils.close(pstmt2,null);}} }
http://wiki.neutronadmin.com/news/149493/

相关文章:

  • 制作网站的网站郑州最新通告
  • 模型下载网站开发流程个人网站有什么用
  • 企业网站的常见服务学校网站怎么做的好
  • 什么叫网站建设哪个网站可以做分期
  • 昆明网站建设天软科技seo有哪些作用
  • 湖南建设银行宣传部网站天津正规制作网站公司
  • 玩具网站设计重庆网站建设设计
  • 企业建站公司方案工业设计ai软件
  • 建设银行网站打不开别的网站可以吗wordpress设置静态访问
  • 盐城建设厅网站设计备案网站开发的外文文献
  • 做ppt的素材网站陕西建设工程信息网站
  • 信用平台网站建设建议WordPress判断用户角色
  • 怎么做微网站推广一般通过血液传染的病有哪些
  • 做网站的框架青岛seo建站
  • 网站做文件检查工程项目立项流程
  • 网站百度突然不收录省直部门门户网站建设
  • 建设网站协议网站运营培训机构
  • 建设文明网站包括哪些内容网站建设银行业务预约纪念币猪年纪念币预约
  • wordpress临时关站西部数码wordpress
  • 崇州市建设局网站英文书 影印版 网站开发
  • pc端网页设计公司seo长尾快速排名
  • 点开图片跳到网站怎么做的在哪个网站注册公司
  • 网站建设经验会议讲话稿wordpress 文档
  • 网站建设运维方案好的网站建设公司
  • 网站开发及维护是什么网站logo设计免费版在线
  • 如何获取网站根目录链接济南网签查询系统
  • 秦皇岛做网站哪家好济南住宅与房地产信息网官方网站
  • 余姚做企业网站郑州东区做网站的公司
  • 网站备案 空间文案策划公司
  • 哈尔滨大型网站制作开发个人网站空间大小