jdbc程序编写 d7

一.jdbc的编写

  1.首先导入jar包

  • 导入数据库厂商提供的驱动jar包,我们这里使用MySQL,所以导入MySQL驱动 mysql-connector-java-5.1.7-bin.jar,这两个包需要放在web-inf里lib下面。
  • 如果使用的是oracle数据的话就导入ojdbc6.jar。

  2.注册驱动

  驱动程序的静态代码中,会自动将驱动程序通过DriverManager进行注册,所以我们要做的只是将驱动类加载进JDK中,静态代码块将会自动执行。

  3.获取数据库连接

   获取连接的意思就是调用DriverManagergetConnection()方法即可,里面用到了url,password,username三个参数,其中url是数据库的端口号以及库名,password是创建数据库的密码,username默认的orcl或者mysql的root,他的命名是  jdbc:mysql://主机地址:端口号/库名 对应的  jdbc:mysql://localhost:3306/test

 jdbc:oracle:thin:@主机地址:端口号:数据库名 对应的 jdbc:oracle:thin:@localhost:1521:atguigu 其中最后的是自己定义的,前面的到端口号都基本上是默认的。

 

  4.获取Statement对象

   获取Statement对象用来执行SQL语句,通过Connection对象的相关方法即可。值得注意的是它存在漏洞,这是黑客攻击的重点,所以一般不使用,取而代之的是prepareStatement,后面操作的就是这样的

   5.执行Sql语句

  在获取数据库连接和Statement对象后,正式建立了联系,再进行java代码对数据库的增删改插,进一步从前台调数据同java和后台的数据库进行数据的交换。同时也可以把数据库数据拿出来作为比较。

   6.resultSet接口

  在进行jdbc查询操作的时候会返回一个result对象,只有查询的时候返回一个resultset类型的,他用了st.executeQuery(sql2);它next()的返回值是一个boolean的类型,如果数据库存在这样的值就返回true,否则继续走直到所有数据查询玩。对应的增删改就只要判断数据库里的数据有什么改动,用到了executeUpdate(sql1);也就是说返回一个数值型的,如果操作了就大于0,可用来判断是否增删改了,如果想要判断插入的数据还是要调用executeQuery()。

 

   7.释放资源

  在所有操作都执行完了就要关闭连接了。关闭的顺序与连接的顺序正好反过来,先关ResultSetStatement、最后关Connection。这样才不会出错

 

 


package com.neuedu.web;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;




public class TestConnection {

    public static void main(String[] args) throws Exception {
        // 由于要try、catch许多异常,防止代码过于繁琐,就直接抛出异常
        String username="root";
        String password="yantao1";
        String url="jdbc:mysql://localhost:3306/books";
        String driverClass="com.mysql.jdbc.Driver";
     //首先用来获取数据库地址,用户名和密码。另外定义了一个加载驱动的字符串。 Class.forName(driverClass);
      //加载驱动也可以直接Class.forName("com.mysql.jdbc.Driver"); Connection conn
=DriverManager.getConnection(url,username,password);
    //获取数据库的连接通过驱动程序的getConnection方法。 Statement st
=conn.createStatement(); //上面的一行存在sql漏洞问题,具体的是如果选择查询就会出现where后面的判断语句,如果有or 1=1,必定成立的语句就会出错,黑客攻击的漏洞。 String sql="insert into teacher(id,aname) values(null,'咕噜噜')"; String sql1="update teacher set aname='咕噜' where aname in('咕噜')"; String sql2="select id,aname from teacher"; PreparedStatement st1=conn.prepareStatement(sql);
  
//conn.executeStatement这个方法就是来解决漏洞问题的。它与上面的不同在于它是上面的子类,需要在里面通过sql的string类型才可以调用,不能调用空的。 //父类的接口指向子类就是多态,同一个变量可以指向多个对象,一种事物多种形态。 int execute=st1.executeUpdate(sql1);
    //这个是用来判断增删改的,当数据库数据发生了变化,对应的数据库更新了,所以返回了一个影响了行的行数的int类型,可以判断他大于0说明进行了数据库的操作。 ResultSet rs
=st1.executeQuery(sql2);
    //这个是在数据库里寻找,如果有的话就返回一个对象,否则返回的是空。
if(execute>0){ System.out.println(execute);    System.out.println("成功"); }
    //如果发生了数据变化就输出。
while (rs.next()) { System.out.println(rs.getInt(1)+rs.getString("aname"));
    //对于这个用了一个迭代,就是每一行都判断是否相等,如果不想等鼠标向下一行,知道所有的行都执行完了,才可以结束。 }
if(rs!=null){ rs.close(); } if(st!=null){ st.close(); } if(conn!=null){ conn.close(); } //最后关闭所有的连接,释放资源。 } }
另外这个将连接操作和关闭一起操作了,十分的繁琐,而没有封装,所有代码都公开,在实际的业务里是不存在的,这里可以定义一个连接类,在定一个业务层,业务层调用连接层的东西,
最后将写一个最总的类用来调用所有的类。

 


 

转载于:https://www.cnblogs.com/guomingyt/p/7846427.html

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值