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

东兴移动网站建设app大全免费软件下载安装

东兴移动网站建设,app大全免费软件下载安装,品牌推广百度seo,有人免费有片视频吗二.JDBC知识点全面总结1#xff1a;JDBC实战编写CRUD 1.JDBC重要接口#xff1f; 2.Driver和DriverMangement的关系#xff1f; 3.JAVA与数据库连接 4.JAVA中使用statement来执行sql语句时#xff0c;拼接字符串的sql注入问题#xff1f; 5.使用preparedstatement进行…二.JDBC知识点全面总结1JDBC实战编写CRUD 1.JDBC重要接口 2.Driver和DriverMangement的关系 3.JAVA与数据库连接 4.JAVA中使用statement来执行sql语句时拼接字符串的sql注入问题 5.使用preparedstatement进行增删改查 6.自定义通用查询方法 未更新 二.JDBC知识点全面总结1JDBC实战编写CRUD 1.JDBC重要接口 ①装载驱动接口 Driver接口对接MySQL提供的Driver具体实现类DriverManager类封装Driver实例。 ②连接 Connetion接口获取和MySQL服务器的连接获取connection实例的方式 driver.connect(); DriverManger.getConnection(); ③执行SQL语句 Statement类执行静态SQL语句并接受返回结果 Statement类SQL语句无参数 PreparedStatement类继承Statement类SQL语句有参数防止sql注入执行方法 execute()运行无返回值 executeQuery()运行select语句有返回集 executeUpdate()运行Insert/delete/Update语句返回影响的行数 2.Driver和DriverManger的关系 ①对比 Driver是所有JDBC驱动类实现的接口DriverMangement封装Driver ②使用 Driver创建驱动实例后直接获取连接 driver.connect()DriverMangement初始化注册Driver后直接获取连接 DriverMangement.getConnetion ③实战使用 Class.forName()加载类而且执行静态代码快。数据库驱动Driver中有静态代码块即注册驱动到DriverMangement故实战可以使用DriverMangement在加载驱动类后直接获取连接。 3.JAVA与数据库连接 ①获取连接注意事项 properties的编写注意直接连接的具体数据库class.forName在加载驱动类时执行类中静态代码已经从DriverMangement中注册初始化 ②获取连接代码 mytest是具体数据库名称 driverClasscom.mysql.jdbc.Driver urljdbc:mysql://localhost:13306/mytest?useUnicodetruecharacterEncodingutf8useSSLfalse userroot passwordabc123注意我的mysql版本是5.7的 dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.37/version/dependencypackage com.likejin;import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; import java.util.Properties;public class MyTest2 {public static void main(String[] args) throws Exception {InputStream resourceAsStream MyTest2.class.getClassLoader().getResourceAsStream(jdbc.properties);Properties properties new Properties();properties.load(resourceAsStream);String driverClass properties.getProperty(driverClass);String url properties.getProperty(url);String user properties.getProperty(user);String password properties.getProperty(password);Class.forName(driverClass);Connection connection DriverManager.getConnection(url, user, password);} }4.JAVA中使用statement来执行sql语句时拼接字符串的sql注入问题 ①statement 是通过获取连接之后利用其来执行sql语句原理字符串拼接由于数据必须通过’来包含 ②sql注入问题 实例场景判断学生在数据库中是否有。代码 package com.likejin;import com.likejin.util.Utils;import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.Scanner;public class MyTest3 {public static void main(String[] args) throws Exception {Connection conn Utils.getconn();Statement statement conn.createStatement();Scanner scanner new Scanner(System.in);System.out.println(请输入ID);String id scanner.nextLine();System.out.println(请输入年龄);String age scanner.nextLine();String sql select * from student where id id and age age;System.out.println(sql);ResultSet resultSet statement.executeQuery(sql);if(resultSet.next()){System.out.println(您找的学生在这个班级);}else{System.out.println(您找的学生不在这个班级);}} } 数据表 正常情况下 sql注入问题加上单引号 sql注入 不加单引号 5.使用preparedstatement进行增删改查 ①preparedstatement的方法 setObject 来填充占位符execute() 来执行增删改返回boolean类型是否成功executeQuery()来执行查返回ResultSet结果集 ②ResultSet的方法 next() 判断下一个是否存在存在指正下移返回true不存在指正不动返回falsegetObject(i) 参数为行数据的第几列返回的是某一行数据的某一列的具体数值getMetaData()获取到ResultSetMetaData类型该类型有方法 getColumnCount()返回具体列数 getColumnName(i)返回某一列的名称 ②注意事项 注意数据库中列从第一列开始而JAVA数据一般从0开始故计算时注意1。注意sql注入时参数也是从第一个开始的。注意封装类时需要设置属性为public否则无法利用反射初始化值。注意如果要编写未知数据的查找封装为该类的list需要知道数据的类型 可以用泛型方法来传入封装的数据类型 Class T clazz T t ②代码 package com.likejin.util;import com.likejin.MyTest2; import com.likejin.Student;import java.io.InputStream; import java.lang.reflect.Field; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Properties;public class Utils {public static Connection getconn() throws Exception {InputStream resourceAsStream MyTest2.class.getClassLoader().getResourceAsStream(jdbc.properties);Properties properties new Properties();properties.load(resourceAsStream);String driverClass properties.getProperty(driverClass);String url properties.getProperty(url);String user properties.getProperty(user);String password properties.getProperty(password);Class.forName(driverClass);Connection connection DriverManager.getConnection(url, user, password);return connection;}//针对学生表的通用更新操作public static boolean updateData(String sql, Object... args) throws Exception {Connection conn getconn();PreparedStatement preparedStatement conn.prepareStatement(sql);for (int i 0; i args.length; i) {preparedStatement.setObject(i 1, args[i]);}boolean execute preparedStatement.execute();preparedStatement.close();conn.close();return execute;}//针对学生表的通用查询操作已知列数已知对象已知列名)public static List selectData(String sql, Object... args) throws Exception {Connection conn getconn();PreparedStatement preparedStatement conn.prepareStatement(sql);for (int i 0; i args.length; i) {preparedStatement.setObject(i 1, args[i]);}ResultSet resultSet preparedStatement.executeQuery();ArrayListStudent students new ArrayList();int i 0;while (resultSet.next()) {Student student new Student();student.setId(resultSet.getInt(1));student.setAge(resultSet.getInt(2));student.setGrade(resultSet.getInt(3));i i 1;students.add(student);}return students;}//针对任何表的查询操作public static T ListT selectData(ClassT clazz,String sql, Object... args) throws Exception {Connection conn getconn();PreparedStatement preparedStatement conn.prepareStatement(sql);for (int i 0; i args.length; i) {preparedStatement.setObject(i 1, args[i]);}ArrayListT ts new ArrayList();ResultSet resultSet preparedStatement.executeQuery();ResultSetMetaData metaData resultSet.getMetaData();int columnCount metaData.getColumnCount();while(resultSet.next()){T t clazz.newInstance();for(int i 0;icolumnCount;i){Field dd clazz.getDeclaredField(metaData.getColumnName(i1));dd.set(t,resultSet.getObject(i1));}ts.add(t);}return ts;} }6.自定义通用查询方法 ①缺点 运行时类和类类型不同无法在方法中就强转为需要的类类型。 stuent.getClass() 或者Student.class都和 Student不同故如果想获得类类型就需要运用泛型。举例说明 如果想在传入方法中获取该类的类型如何获取 利用泛型 T t或者 ClassT clazz都可获取类型为T 利用Object o 获取不到类类型最多获取运行时类的实例故需要在获取方法的返回值后手动进行强转。对象获取到类类型的数据是什么为什么不能强转 即最多获取到类类型字符串 String typeName o1.getClass().getTypeName();由于编译的限制无法去利用字符串强转对象。 ②代码 //针对任何表的查询操作public static List selectData5(Object o,String sql, Object... args) throws Exception {//获取连接拿到配置文件中的内容注册driverDriverMangement获取连接InputStream resourceAsStream Utils.class.getClassLoader().getResourceAsStream(jdbc.properties);Properties properties new Properties();properties.load(resourceAsStream);final String url properties.getProperty(url);String user properties.getProperty(user);String password properties.getProperty(password);Class.forName(properties.getProperty(driverClass));Connection connection DriverManager.getConnection(url, user, password);//连接的sql注入获取结果集PreparedStatement preparedStatement connection.prepareStatement(sql);for(int i 0;iargs.length;i){preparedStatement.setObject(i1,args[i]);}ResultSet resultSet preparedStatement.executeQuery();//处理结果集利用反射获取结果的列表ResultSetMetaData metaData resultSet.getMetaData();ArrayList arrayList new ArrayList();int columnCount metaData.getColumnCount();while(resultSet.next()){Object o1 o.getClass().newInstance();for(int i 0;icolumnCount;i){String columnName metaData.getColumnName(i 1);Field field o1.getClass().getField(columnName);field.set(o1, resultSet.getObject(i1));}//无法转换为目标对象的类//因为o.getClass获取的是运行时类的类型而不是实际类类型//故实际使用时需要转换类型输出arrayList.add(o1);}return arrayList;}public static void main(String[] args) throws Exception {String sql select * from student where id? ;List students1 null;List list selectData5(new Student(), sql, 10);Iterator iterator list.iterator();while(iterator.hasNext()){System.out.println((Student)iterator.next());}}未更新
http://www.w-s-a.com/news/326370/

相关文章:

  • 付款网站源码建网站卖东西
  • 用php做的录入成绩的网站wordpress等级插件
  • 网站运营优化方案广西桂林公司
  • 快递网站策划怎么做ppt长春建设信息网站
  • 做服装搭配图的网站有哪些经营一个网站要怎么做
  • 呼市品牌网站建设那家好增城住房和建设局网站
  • 网站首页布局设计代码太仓网站开发建设服务
  • 学校网站建设与管理porto wordpress模板
  • 余姚做网站公司网站建设有哪些基本流程
  • 门户网站建设的报价百度医生在线问诊
  • 北京公司注册在哪个网站浏览器打开网址404
  • 廊坊做网站公司绣花图案设计网站
  • 网站空间租用哪个好购物网站建设模板图片
  • 建设银行包头分行网站泰安网签成交量最新
  • 手机微网站与微官网现在去成都需要隔离吗
  • 学校的二级网站怎么建设深圳企业网站制作设计
  • 自己做qq头像静态的网站网站建设是属于软件开发费吗
  • 举报网站建设做网站之前的工作
  • 用QQ群做网站排名个人网站制作协议
  • 做茶叶网站的素材天津网站营销
  • 网站设计建设流程图微信端的网站开发python
  • 湖州网站seo优化网站改域名备案
  • dedecms怎么制作网站合肥电商网站开发
  • 网站开发通用流程图做flash的网站
  • 营销型网站有哪些平台网站建设藤设计
  • 网站需求分析网站建设美食网站建设多少钱
  • 有专门做网站的吗建德网站
  • 做网站要买服务器吗单页设计思路
  • 一 电子商务网站建设规划网站开发前端框架和后端框架
  • 自助网站建设系统软件自己免费建设网站