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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

【转】java反射--注解

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

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

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

jsp--JavaBean

Java最好和jsp的代码分开写 但是jsp中会有很多内置对象,例如response 涉及到内置对象的代码在Java中自然是错误的,那么该怎么办? 可以将需要调用的Java方法设置几个参数,jsp将内置对象作为参数传过去 Javabean作用,…

weblogic作为linux服务器,weblogic在linux服务器上部署应用

SSH软件连接服务器:服务器地址:xxx.xxx.xxx.40用户名:xxxx密码:xxxx新建文件夹,用来放新代码版本,后面为代码版本号路径:/home/weblogic命令:mkdir wzgcyth_xxxx部署war包拖拽war到路…

几乎无解的最强加密方法,终于被证实真的存在

来源:数学中国图片来源:Kiel Mutschelknaus for Quanta Magazine2018年,加州大学洛杉矶分校的研究生Ayush Jain前往日本,就他和同事正在开发的强大加密算法进行交流。当他讲述团队正在尝试实现不可区分混淆(indistingu…

css3布局篇(双飞翼)

大家看到好多电商网站都见过经典三列布局,它也叫做圣杯布局 ,是Kevin Cornell在2006年提出的一个布局模型概念,这个在国内最早是由淘宝UED的工程师传播开来,在中国也有叫法是双飞翼布局,它的布局要求有以下的几点&…

Servlet介绍

Servlet: Java类必须符合一定的规范: 1.必须继承javax.servlet.http.HttpServlet 2.重写其中的doGet()或doPost()方法 doGet():接受并处理所有get提交方式的请求 doPost():接受并处理所有Post提交方式的请求 Servlet要想使用,必须配置 …

区块链2021狂想曲:迎接以技术为名的春天

来源: 脑极体另一方面,区块链也作为“核心技术自主创新的重要突破口”,进入了探寻自有价值、进入产业化赋能的全新阶段。站在2021年初始,我们不仅想知道在过去一整年里,区块链实际落地应用的情况究竟怎么样。更想尝试回…

RabbitMQ从初学到精通一

今天来学习一下RabbitMQ,从最起初的安装开始学习: 一、RabbitMQ 安装图1 rabbitMQ下载http://www.rabbitmq.com/download.html下载文件rabbitmq-server-mac-standalone-3.7.4.tar.xz注意,这里的文件是xz压缩文件,需要用xz -d rabbitmq-server…

关于自动驾驶, Mobileye 的 14 个最新观点

来源:新智驾作者 :苏珊珊为了在2025年实现消费级别的自动驾驶,Mobileye都做了什么?Mobileye近日在CES 2021展会上进一步分享了其在ADAS及全自动驾驶领域的战略规划,并详细介绍了Mobileye为实现消费级别的全自动驾驶和“…

linux ps进程管理命令,Linux 进程管理命令之ps

这个命令会显示某一时刻系统的进程状态。ps是通过/proc接口,让管理员查看内核进程状态信息。为了响应一切皆文件,进程参数模拟成文件系统类型(文件),参数路径模拟成目录/proc/# 每个进程都有一个进程ID号这个目录里存放的各种进程的状态信息启…

2020年中国智慧城市发展值得关注的技术

文章来源:Gartner图片来源:网络每年Gartner发布的技术成熟度曲线(The Hype Cycle)报告都备受市场瞩目,也成为政府及企业做出重大投资决策的风向标。其原因在于,它不仅能够让CIO了解到年度最备受瞩目和极具商…

腾讯研究院发布《2021数字科技前沿应用趋势》

来源 :腾讯研究院编辑: 陈近梅2021年1月9日,在腾讯研究院举办的“腾讯科技向善暨数字未来大会2021”上,《变量:2021数字科技前沿应用趋势》报告正式发布。该报告由腾讯研究院发起,先后访谈业界权威专家&…

linux导入pgsql日志目录,Centos下PostgreSQL安装及修改数据目录

记录下在Centos7.6 安装PostgreSQL数据库,版本10.12的过程,第一次装,遇到的坑太多了,网上教程坑也多,有的版本不一样方法不一样。花了半天时间…背景:内网服务器,搭了个sonarqube代码审计系统&a…