将SQL导入JAVA的后续操作
1-查询(ResultSet)
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
和增删改一样,只不过增删改用executeUpdate(执行更新)
查询用executeQuery(执行查询)
1、普通查询statement
1.1按照下标取值
固定写法:
{//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");//2、通过驱动管理器获得连接对象
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/java2212?useSSL=false","root","123456"); //3、创建查询对象
Statement s = conn.createStatement("需要查询的内容");//4、查询返回的是一种虚拟表,用集合装数据.即ResultSet
ResultSet rs = s.executeQuery//5、查询
while(rs.next){//下标是每一列的下标从1开始//表中的数据与get方法对应int id = re.getInt(1);String name = rs.getString(2);
}
//关闭流
rs.close();
s.close();
conn.close();
package com.qf.jdbc;import java.sql.*;/*** --- 天道酬勤 ---** @author QiuShiju* @desc*/
public class Demo1_select {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/java2212?useSSL=false","root","123456");Statement s = conn.createStatement( );// 执行查询使用executeQueryString sql = "select sal,hiredate,empno id,ename name from emp";// 查询返回的是一种虚拟表,用集合装数据.即ResultSetResultSet rs = s.executeQuery(sql);while(rs.next()){/*** 取值有两种方式:* getXxx(),根据数据类型再按以下方式取值* 1 按照列下标,从1开始,与虚拟表列顺序一致* 2 按照列名,是虚拟表的名字.即如果有别名就是别名取值*/// 列下标取值int empno = rs.getInt(1);String ename = rs.getString(2);double sal = rs.getDouble(3);Date date = rs.getDate(4);System.out.println(empno+"-"+ename+"-"+sal+"-"+date);}// 结果集关流rs.close();s.close();conn.close();}
}
1.2按照列名取值
取值的时候,将int empno = rs.getInt(1);换成名字即可,
学到这可以把下标取值彻底忘掉了,,,
int empno = rs.getInt(1);
int empno = rs.getInt(“id”);
2-登录案例
需求:判断数据中是否从存在输入的用户名和密码
准备数据表
CREATE TABLE `user` (`uid` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`createTime` date DEFAULT NULL,PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
先输入信息,然后查找信息,where条件是对应的列名等于输入的值
if语句判断每一列是否存在这一组信息,存在就输出,不存在就直接else。
不建议用while,因为查找信息本来就是以行为单位的,不在一行的信息,不能一起匹配。
if是可直接判断,while需要一行一行的循环查找,
package day29.ZYH.a_statement;import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;public class Demo3 {public static void main(String[] args) throws InterruptedException, ClassNotFoundException, SQLException {Scanner scanner = new Scanner(System.in);System.out.println("请输入账号名字:");String importUsername = scanner.next();System.out.println("请输入密码;");int importPassword = scanner.nextInt();System.out.print("正在登录");for (int i = 0; i < 3; i++) {Thread.sleep(1000);System.out.print(" .");}System.out.println();Class.forName("com.mysql.jdbc.Driver");ResultSet resultSet = DriverManager.getConnection("jdbc:mysql://localhost:3306/day29?useSSL=false","root","123456").createStatement().executeQuery("select * from user where username = '" + importUsername + "' and password = " + importPassword);if (resultSet.next()) {int uid = resultSet.getInt("uid");String username = resultSet.getString("username");int password = resultSet.getInt("password");Date createTime = resultSet.getDate("createTime");System.out.println("登录成功!!!");System.out.println("你的id是:" + uid + ", 用户名是:" + username + ",你的密码是:" + password + ", 注册日期是:" + createTime);} else {System.out.println("用户名或密码错误");}}
}
3-SQL被乱入!!!
SQL注入
就是利用一些sql关键词,拼接进sql字符串中,执行时出现一下以外的情况,严重时还会破坏数据库,非常的危险!!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mc4uxuul-1661161336747)(D:\千峰上课\Every Day Stage2\day29\code\day29-jdbc.assets\image-20220819144743111.png)]
如上图,在输入的东西,字符串拼接输入or,意思是或,1=1,一定是true,那么久执行。本不该成功登录的信息,变得可以登录了
4-预处理语句【重点】parameterStatement
将之前的处理语句变为预处理语句parameterStatement
用于解决
paramenter格式和Statement的差别:
//直接在结果集中添加就可以,不需要额外的操作
【Statment】:
ResultSet rs = s.executeQuery("select * from user where username = '"+username+"' and password = '"+password+"'"
);//需要在添加时,先把执行语句处理一下,conn.preparedStatement必须在传给结果集之前定义它的值
//把conn.prepareStatement中的量变成【?】
PreparedStatement ps = conn.prepareStatement("select * from user where username = ? and password = ?");
//再把指定的值赋给conn.prepareStatement的【?】
//第一个【?】是1,第二个【?】是2
//后边跟值
ps.setString(1,username);
ps.setString(2,password);
//预处理后,传给结果集ResultSet
ResultSet rs = ps.executeQuery();
总结:就是多了一步预处理,其他操作完全一样
ORM【重点】
是一种思维,是用对象封装数据,类对应表名属性对应列,属性值对应列值,将值赋给对象进行封装,将对象加入到集合中;
Object Relation Mapping 对象关系映射,使用ORM来封装数据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aOjs6c10-1661161336749)(D:\千峰上课\Every Day Stage2\day29\code\day29-jdbc.assets\image-20220819161434668.png)]
案例: 查询Emp为例演示,使用对象封装数据
第一步:根据表设计类
ject Relation Mapping 对象关系映射,使用ORM来封装数据。
[外链图片转存中…(img-aOjs6c10-1661161336749)]
案例: 查询Emp为例演示,使用对象封装数据
第一步:根据表设计类
将SQL导入JAVA的后续操作相关推荐
- vb.net datagridview数据批量导入sql_导入:Java实现大批量数据导入导出(100W以上)
阅读文本大概需要3分钟. 来源:https://www.cnblogs.com/barrywxx/p/10700221.html 最近业务方有一个需求,需要一次导入超过100万数据到系统数据库.可能大 ...
- jsp页面导入java包能干嘛_在JSP中如果要导入java.util.*包要使用什么指令
[判断题]扶梯满载上行时,所需总功率等于驱动梯级所需的功率乘以传动总效率. [判断题]电梯制动器闸瓦应均匀,其四角处间隙平均值两侧各不大于0.7mm. [多选题]以下()触点断开会使MC线圈断电. [ ...
- 谁是当今最顶级的技术?SQL、Java、Python、C++ 皆上榜!
[12月公开课预告],入群直接获取报名地址 12月11日晚8点直播主题:人工智能消化道病理辅助诊断平台--从方法到落地 12月12日晚8点直播:利用容器技术打造AI公司技术中台 12月17日晚8点直播 ...
- java中日期的数据类型是啥_用于存储日期和时间的最合适的SQL和Java数据类型
使用以下格式处理日期和时间的最合适的MySQL和Java数据类型是什么:yyyy.MM.dd hh:mm:ss 在持久层(jdbc类型)中使用的相应Java类型是java.sql.Timestamp. ...
- 在Eclipse中导入Java程序
在Eclipse中导入Java程序 在 Eclipse 中导入 Java 程序 在 Eclipse 中导入 Java 程序,分导入Java Project和导入Java源程序 两种情况,简述如下. 情 ...
- oracle导入dmp报无效的sql,oracle施用pl/sql导入数据库备份文件dmp导入失败原因
oracle使用pl/sql导入数据库备份文件dmp导入失败原因 利用PL/SQL导入数据库备份失败: Tools→Import →Tables Import Executable选择导入工具路径 D ...
- vbs文件放在java工程中如何调用_Eclipse软件导入Java工程文件的操作方法。
Eclipse软件怎么导入Java工程文件?有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面教大家如何在Eclipse软件中导入Java工程文件. 解决方法: 1.在 ...
- 计算机技能最新需求排名:Python增速爆炸,SQL和Java老当益壮,AWS令人惊讶
赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 掌握了什么计算机技术可以走遍天下都不怕? 从2014到2019年,老板最想要的技能变了吗? 美国求职公司Indeed从几百万份招聘中做了总结 ...
- 【IntelliJ IDEA】创建 导入 Java 项目
文章目录 I. IntelliJ IDEA 创建 Java 项目流程 II. IntelliJ IDEA 导入 Java 项目流程 I. IntelliJ IDEA 创建 Java 项目流程 1. 进 ...
最新文章
- 新华三,定义服务器虚拟化市场新格局
- 学生电脑哪个牌子好_泡脚足浴盆哪个牌子好?家用足浴盆哪个品牌好?足浴盆哪个牌子最安全?...
- Superhero Transformation
- 在Ubuntu8.04上编译安装QT4(Application Development)开发环境
- MyBatis 插件怎么编写和使用?原理是什么?
- 前端路由实现原理(history)
- Kafka三款监控工具比较
- solr简介——(九)
- CMD中文显示为乱码
- 关于XRD你知道多少
- 初级算法代码-位移密码
- idea的设置,导致list长度只有1000
- 新增经营情况汇总报表
- Markdown - 如何给文本加下划线
- 采用现场总线协议的压力变送器特性介绍
- 模拟用户操作购物车添加商品修改数量
- LIME Low light Image Enhancement via Illumination Map Estimation
- unity urp 棉麻织物渲染
- 心情好些了,发现自己还是适合专注科研
- android string 原理,Android中的SpannableString,Spans以及TextView绘制原理
热门文章
- 七牛上传图片初探 开始上传 暂停上传 继续上传
- 转-SIP穿越NAT SIP穿越防火墙
- 赛格威机器人待遇_赛格威配送机器人:年内做到10天无故障 3年10万台
- 安装 window10 系统
- aur打包linux微信,ArchLinux微信、TIM安装与乱码解决方法
- 智能电表如何采集数据?
- 凸包算法(Graham扫描法)
- qr-rls算法matlab实现,【预测模型】基于RLS算法进行预测matlab源码
- html简单边框制作--特效文字制作及代码,HTML音画介绍之一--基本原理和边框的制作...
- CASS方格网法土石方量计算