JDBC--Java Database Connectivity

 

1.JDBC:Java DataBase Connectivity  可以为多种关系型数据库DBMS 提供统一的访问方式,用Java来操作数据库
2.JDBC API 主要功能:
三件事,具体是通过以下类/接口实现:
DriverManager : 管理jdbc驱动
Connection: 连接(通过DriverManager产生)


Statement(PreparedStatement) :增删改查  (通过Connection产生 )
CallableStatement  : 调用数据库中的 存储过程/存储函数  (通过Connection产生 )

Result :返回的结果集  (上面的Statement等产生 )

Connection产生操作数据库的对象:


Connection产生Statement对象:createStatement()
Connection产生PreparedStatement对象:prepareStatement()
Connection产生CallableStatement对象:prepareCall();

Statement操作数据库:
增删改:executeUpdate()
查询:executeQuery();

ResultSet:保存结果集 select * from xxx
next():光标下移,判断是否有下一条数据;true/false
previous():  true/false
getXxx(字段名|位置):获取具体的字段值 

PreparedStatement操作数据库:
public interface PreparedStatement extends Statement 
因此
增删改:executeUpdate()
查询:executeQuery();
--此外
赋值操作 setXxx();


PreparedStatement与Statement在使用时的区别:
1.Statement:
sql
executeUpdate(sql)

2.
PreparedStatement:
sql(可能存在占位符?)
在创建PreparedStatement 对象时,将sql预编译 prepareStatement(sql)
executeUpdate()
setXxx()替换占位符?

推荐使用PreparedStatement:原因如下:
1.编码更加简便(避免了字符串的拼接)
String name = "zs" ;
int age = 23 ;

stmt:
String sql =" insert into student(stuno,stuname) values('"+name+"',  "+age+" )    " ;
stmt.executeUpdate(sql);

pstmt:
String sql =" insert into student(stuno,stuname) values(?,?) " ;
pstmt = connection.prepareStatement(sql);//预编译SQL
pstmt.setString(1,name);
pstmt.setInt(2,age);


2.提高性能(因为 有预编译操作,预编译只需要执行一次)
需要重复增加100条数 
stmt:
String sql =" insert into student(stuno,stuname) values('"+name+"',  "+age+" )    " ;
for(100)
stmt.executeUpdate(sql);

pstmt:
String sql =" insert into student(stuno,stuname) values(?,?) " ;
pstmt = connection.prepareStatement(sql);//预编译SQL
pstmt.setString(1,name);
pstmt.setInt(2,age);
for( 100){
pstmt.executeUpdate();
}

3.安全(可以有效防止sql注入)
sql注入: 将客户输入的内容  和 开发人员的SQL语句 混为一体

stmt:存在被sql注入的风险  
(例如输入  用户名:任意值 ' or 1=1 --
       密码:任意值)
分析:
select count(*) from login where uname='任意值 ' or 1=1 --' and upwd ='任意值'  ;
select count(*) from login where uname='任意值 ' or 1=1 ;
select count(*) from login ;


select count(*) from login where uname='"+name+"' and upwd ='"+pwd+"' 

pstmt:有效防止sql注入


推荐使用pstmt

3.jdbc访问数据库的具体步骤:
a.导入驱动,加载具体的驱动类
b.与数据库建立连接
c.发送sql,执行
d.处理结果集 (查询)

4.
数据库驱动
        驱动jar                    具体驱动类                        连接字符串
Oracle        ojdbc-x.jar                oracle.jdbc.OracleDriver                jdbc:oracle:thin:@localhost:1521:ORCL
MySQL        mysql-connector-java-x.jar        com.mysql.jdbc.Driver                    jdbc:mysql://localhost:3306/数据库实例名
SqlServer    sqljdbc-x.jar                com.microsoft.sqlserver.jdbc.SQLServerDriver        jdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名

使用jdbc操作数据库时,如果对数据库进行了更换,只需要替换:驱动、具体驱动类、连接字符串、用户名、密码


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计蒜客 28437.Big brother said the calculation-线段树+二分-当前第k个位置的数 ( ACM训练联盟周赛 M)...

M. Big brother said the calculation 通过线段树维护。 这个题和杭电的一道题几乎就是一样的题目。HDU5649.DZY Loves Sorting 题意就是一个n的排列,执行Q次操作,每次操作是对某个区间从小到大排序或者从大到小排序。最后只查询一次,输出第k…

oracle乱码函数,jfinal oracle操作时decode函数填值乱码 求助什么原因????

![输入图片说明](https://git.oschina.net/uploads/images/2017/0527/151633_3e7d8cc4_403754.png "在这里输入图片标题")![输入图片说明](https://git.oschina.net/uploads/images/2017/0527/151852_563c21cd_403754.png "在这里输入图片标题")**sql映射文…

数字孪生:连结现实与数字世界

作者:德勤洞察来源:《软件与集成电路》2020年第5期试想一下,你拥有一个现实世界的完美数字副本:数字孪生。它可以帮助你开展虚拟协作,快速获取传感器数据并模拟条件,清楚地了解假设情景,更能精准…

phalanger php compiler,phalanger-php的.net编译器 _php技巧

除了IronPython,微软正试着让.NET平台支持更多你我熟知的动态语言,例如Perl、PHP、Ruby。根据IronPython的创造者、也是微软CLR开发部门主管Jim Hugunin表示,微软正试着以不同的方式协助动态语言进驻.NET平台,不论是加强.NET底层的…

微软和谷歌的人工智能,在SuperGLUE基准测试中超越了人类

大数据文摘出品来源:venturebeat编译:千雪2019年底,Facebook、纽约大学、华盛顿大学和DeepMind的研究人员联合提出了SuperGLUE,这是人工智能的一个新基准,旨在总结多种语言任务的研究进展。基于一年前推出的GLUE基准&a…

[leetcode]从中序与后序/前序遍历序列构造二叉树

从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder [9,3,15,20,7] 后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树: 3/ \9 20/ \15 7 思路&…

Leetcode--56. 合并区间

给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为…

oracle课程设计摘要,Oracle程序设计课程设计概要(doc 35页)

Oracle程序设计课程设计概要目录:《Oracle数据库应用与开发实例教程》是学习数据库技术的高级阶段课程,读者应该在选择学习《数据库应用基础实例教程》、《Access2003数据库实用教程》、《SQL Server 数据库应用基础与实现》和《SQL Server2005 实例教程…

2020年度中国生命科学十大进展公布 | 中国科协生命科学学会联合体

来源:中国科协生命科学学会联合体本年度的评选,联合体成员学会推荐的项目较往年数量明显增加,体现了“中国生命科学十大进展”评选日臻完善,社会影响力与关注度不断扩大;获奖项目中非院士主导项目所占比例较往年大&…

springmvc log4j配置

1. web.xml <!-- 加载Log4J 配置文件 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/conf/log4j.properties</param-value> </context-param> <context-param> <pa…

debian php安装pdo扩展,在debian下为PHP5.0.3安装pdo模块

pdo作为下一个php的数据库统一接口&#xff0c;目前的版本是0.9&#xff0c;看来不久就可以release了&#xff0c;抢先尝鲜。经过测试&#xff0c;pdo联结比adodb快3倍左右&#xff0c;和直接联结相差很小。测试工具&#xff1a;AB测试条件Apache/2.0.54 (Debian GNU/Linux) mo…

Leetcode--238. 除自身以外数组的乘积

给定长度为 n 的整数数组 nums&#xff0c;其中 n > 1&#xff0c;返回输出数组 output &#xff0c;其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] 说明: 请不要使用除法&#xff0c;且在 O(n) 时间复杂度内完…

百度研究院发布2021年十大科技趋势预测

来源&#xff1a;百度智能云作者&#xff1a;刘瑾疫情加速 AI 融合落地AI 将更加深入大众生活2020年&#xff0c;全球抗疫促使 AI 与 5G、大数据、物联网等新一代信息技术相互融合&#xff0c;AI 测温、AI 问诊、智能外呼、服务机器人等创新应用开始大规模普及&#xff0c;从生…

oracle的删除的row如何,Oracle 删除大表中部分数据

需求&#xff1a;项目中有一张表大概有7000多万条数据&#xff0c;造成表空间已满&#xff0c;需要清理部分数据&#xff0c;打算清理3000万。2B 做法&#xff1a;delete from table_name where ID > 40000000;备注&#xff1a;select count(1) from table_name where ID &g…

promise请求数据用法

promise请求数据用法 Promise简介 Promise 是异步编程的一种解决方案&#xff0c;比传统的解决方案–回调函数和事件&#xff0d;&#xff0d;更合理和更强大。ES6将其写进了语言标准&#xff0c;统一了语法&#xff0c;里面保存着某个未来才回结束的事件(通常是一个异步操作&a…

jsp出现The import Xxx type is not resolved...

尝试解决步骤&#xff1a; 1.可能是jdk&#xff0c;tomcat版本问题 方法&#xff1a;右键项目&#xff0c;build path->Configure Build Path java bulid path中的libraries若报错&#xff0c;出现红色x&#xff0c;点击它&#xff0c;remove&#xff0c;之后点击Add lib…

欧阳自远:有个性的嫦娥12345,如何不重复美国探月路?

来源&#xff1a;澎湃新闻 作者&#xff1a;虞涵棋“很多事情人家都做过了&#xff0c;中国也不得不做&#xff0c;唯一的要求就是一定要比别人做的好。但总有一两样没人没干过的事&#xff0c;中国一定要干。”1月13日&#xff0c;中国月球探测工程首席科学家、中科院院士欧阳…

linux安装DNS服务命令,Linux下的安装和配置DNS服务器

Linux下的安装和配置DNS服务器发布时间&#xff1a;2008-09-08 17:03:00 作者&#xff1a;佚名 我要评论在Linux操作系统中使用BIND (Berkeley Internet Name Daemon)作为DNS服务器&#xff0c;以下以Linux 的Redhat 7.3发行版本为例&#xff0c;介绍BIND安装、启动和停止…

【转】java反射--注解

【译】8. Java反射——注解 原博地址&#xff1a;https://www.cnblogs.com/penghongwei/p/3300087.html翻译原文地址&#xff1a;http://tutorials.jenkov.com/java-reflection/annotations.html 使用Java反射机制&#xff0c;在运行时你可以访问到Java类中所附属的一些注解。…

多核之后,CPU 的发展方向是什么?中科院计算所包云岗详细解读

来源&#xff1a;知乎作者&#xff1a;包云岗包云岗&#xff0c;中国科学院计算技术研究所研究员、博士生导师、中国科学院大学教授&#xff0c;中国开放指令生态&#xff08;RISC-V&#xff09;联盟秘书长&#xff0c;从事计算机体系结构和开源芯片方向前沿研究&#xff0c;主…