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

建设高校实验教学网站的作用设计公司网站要包含什么信息

建设高校实验教学网站的作用,设计公司网站要包含什么信息,制作头像的软件,淄博seo服务今日内容 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解JDBC#xff1a; 概念#xff1a;Java DataBase Connectivity Java 数据库连接#xff0c; Java语言操作数据库 * JDBC本质#xff1a;其实是官方#xff08;sun公司#xff09;定义的一套操作所有关系…今日内容 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解JDBC 概念Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 * JDBC本质其实是官方sun公司定义的一套操作所有关系型数据库的规则即接口。各个数据库厂商去实现这套接口提供数据库驱动jar包。我们可以使用这套接口JDBC编程真正执行的代码是驱动jar包中的实现类。 快速入门 步骤 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下 2.右键–Add As Library注册驱动获取数据库连接对象 Connection定义sql获取执行sql语句的对象 Statement执行sql接受返回结果处理结果释放资源 代码实现 //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的对象 Statement Statement stmt conn.createStatement(); //6.执行sql int count stmt.executeUpdate(sql); //7.处理结果 System.out.println(count); //8.释放资源 stmt.close(); conn.close(); 代码演示 package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class JdbcDemo1 {public static void main(String[] args) throws Exception {// 1. 导入驱动jar包// 2. 注册驱动Class.forName(com.mysql.jdbc.Driver);// 3. 获取数据库的连接对象Connection conn DriverManager.getConnection(jdbc:mysql://localhost:3306/jxgl,root,root);// 4. 定义sql语句String sql update students set address 北京路110号 where s_no 122003 ;// 5. 获取执行sql的对象 StatementStatement statement conn.createStatement();// 6. 执行sqlint count statement.executeUpdate(sql);// 7. 处理结果System.out.println(count);// 8. 释放资源statement.close();conn.close();} } 3. 详解各个对象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)语句2. 练习1. students表 添加一条记录2. students表 修改记录3. students表 删除一条记录代码演示 students表 添加一条记录 package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;public class JdbcDemo2 {public static void main(String[] args) {Connection conn null;Statement stmt null;try {// 1. 注册驱动Class.forName(com.mysql.jdbc.Driver);// 2. 定义sqlString sql insert into students values(0001,zep,男,1999-07-14,D111,深圳路118号,135000,null);// 3. 获取Connection对象conn DriverManager.getConnection(jdbc:mysql://localhost:3306/jxgl,root,root);// 4. 获取执行sql的对象 Statementstmt conn.createStatement();// 5. 执行sqlint count stmt.executeUpdate(sql); // 返回sql代码执行后所影响的行数// 6. 处理结果System.out.println(count);if (count0) {System.out.println(添加成功);}else {System.out.println(添加失败);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {// 7. 释放资源// 为了避免空指针异常if (stmt ! null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn ! null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}} } students表 修改记录: package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;public class JdbcDemo3 {public static void main(String[] args) {Connection conn null;Statement stmt null;try {// 1. 注册驱动Class.forName(com.mysql.jdbc.Driver);// 2. 获取连接对象conn DriverManager.getConnection(jdbc:mysql://localhost:3306/jxgl,root,root);// 3. 定义sqlString sql update students set s_no 122001 where phone 135000 ;// 4. 获取执行sql的对象stmt conn.createStatement();// 5. 执行sqlint count stmt.executeUpdate(sql);// 6. 处理结果System.out.println(count);if (count0) {System.out.println(修改成功);}else {System.out.println(修改失败);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {// 释放资源if (stmt ! null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn ! null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}} } 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 List findAll(){} 3. 实现方法 select * from emp; Student.java: package cn.itcast.domain;import java.sql.Blob; import java.util.Date;/*** 封装student表数据的JavaBean*/ public class Student {private String s_no;private String s_name;private String sex;private Date birthday;private String D_NO;private String address;private String phone;private Blob photo;public String getS_no() {return s_no;}public void setS_no(String s_no) {this.s_no s_no;}public String getS_name() {return s_name;}public void setS_name(String s_name) {this.s_name s_name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday birthday;}public String getD_NO() {return D_NO;}public void setD_NO(String d_NO) {D_NO d_NO;}public String getAddress() {return address;}public void setAddress(String address) {this.address address;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone phone;}public Blob getPhoto() {return photo;}Overridepublic String toString() {return Student{ s_no s_no \ , s_name s_name \ , sex sex \ , birthday birthday , D_NO D_NO \ , address address \ , phone phone \ , photo photo };}public void setPhoto(Blob photo) {this.photo photo;}} JdbcDemo8.java: package cn.itcast.jdbc;import cn.itcast.domain.Student;import java.sql.*; import java.util.ArrayList; import java.util.Date; import java.util.List;public class JdbcDemo8 {public static void main(String[] args) {ListStudent list new JdbcDemo8().findAll();System.out.println(list);}/*** 查询所有Student对象* return*/public ListStudent findAll() {Connection conn null;Statement stmt null;ResultSet rs null;ListStudent list null;try {// 1. 注册驱动Class.forName(com.mysql.jdbc.Driver);// 2. 获取连接conn DriverManager.getConnection(jdbc:mysql://localhost:3306/jxgl,root,root);// 3. 定义sqlString sql select * from students ;// 4. 获取执行sql的对象stmt conn.createStatement();// 5. 执行sql语句rs stmt.executeQuery(sql);// 6. 遍历结果集封装对象装载集合Student stu null;list new ArrayListStudent();while(rs.next()) {// 获取数据String s_no rs.getString(s_no);String s_name rs.getString(s_name);String sex rs.getString(sex);Date birthday rs.getDate(birthday);String D_NO rs.getString(D_NO);String address rs.getString(address);String phone rs.getString(phone);Blob photo rs.getBlob(photo);// 创建stu对象,并赋值stu new Student();stu.setS_no(s_no);stu.setS_name(s_name);stu.setSex(sex);stu.setBirthday(birthday);stu.setD_NO(D_NO);stu.setAddress(address);stu.setPhone(phone);stu.setPhoto(photo);// 装载集合list.add(stu);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {if (rs ! null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (conn ! null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}if (stmt ! null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}}return list;} } 运行结果 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. 效率更高抽取JDBC工具类 JDBCUtils * 目的简化书写 * 分析1. 注册驱动也抽取2. 抽取一个方法获取连接对象* 需求不想传递参数麻烦还得保证工具类的通用性。* 解决配置文件jdbc.propertiesurluserpassword3. 抽取一个方法释放资源* 代码实现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;}}JDBC控制事务 1. 事务一个包含多个步骤的业务操作。如果这个业务操作被事务管理则这多个步骤要么同时成功要么同时失败。 2. 操作1. 开启事务2. 提交事务3. 回滚事务 3. 使用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);}}}
http://www.pierceye.com/news/453294/

相关文章:

  • 微信公众号属于网站建设网站云解析域名解析
  • 网站的建设及推广在哪找可以做网站的
  • 网站经常修改好不好北京互联网公司50强
  • 知识网站有哪些h5用什么制作
  • 广州网站制作联系方式上海共有多少家企业
  • 自己建一个网站需要什么网站关键词分析工具
  • 建三江建设局网站四川省建设厅官方网站电话
  • 福建志佳建设工程发展有限公司网站vi品牌包装
  • 专业门户网站开发公司龙岩正规全网品牌营销招商
  • 网站怎么做qq微信登陆政务网站的建设时期的概述
  • 购物网站的目的和意义西安做网站xamokj
  • 厦门市建设局网站网站开发周记30篇
  • 工业园区门户网站建设方案塘沽网站开发
  • 郑州网站设计 公司驻马店市可以做网站的公司
  • 推荐盐城网站开发安陆网站开发
  • wordpress中文网站模板软件开发者路线图
  • 福清市建设局网站深圳网站制作品牌祥奔科技
  • 工程建设采购有哪些网站做网络销售怎么样
  • wordpress数据库和网站文件下载商业网站成功的原因
  • 30岁转行做网站设计百度秒收网站
  • 网页设计与制作心得体会1000福州网站seo公司
  • 学校网站定位手机网站建设怎么样
  • 苏州科技网站建设模板网站 seo
  • 免费qq刷赞网站推广网站建设具体项目及价格
  • 怎么做网站页面代码搜索网站的根目录
  • 网站建设免责申明书做qq图片的网站吗
  • 营销型单页网站电子商务平台建设
  • 去柬埔寨做网站是传销吗app推广服务部
  • 网站建站的流程海南住建部建设网站的网站
  • 网站建设与推广的步骤网站建设费用如何做账务处理