随笔JDBC
jdbc 概述和作用

jdbc 概述和作用JDBC(Java Database Connectivity)是Java语言访问关系型数据库的标准API。
通过JDBC,Java程序可以连接、查询和操作各种数据库,如Oracle、MySQL、SQL Server等。
本文将对JDBC 的概述和作用进行详细介绍。
一、概述JDBC是Java平台上与数据库交互的重要组件,它提供了一套标准的接口和方法,使得Java程序能够通过统一的方式与不同的数据库进行通信。
JDBC是一种面向关系型数据库的API,为Java程序员提供了一种方便、安全和高效的方式来处理数据库操作。
JDBC的核心组件包括驱动程序管理器、数据库驱动程序、连接管理器和语句执行器等。
驱动程序管理器负责加载并管理数据库驱动程序,数据库驱动程序是具体数据库厂商提供的实现JDBC接口的类库,连接管理器负责管理数据库连接,语句执行器则用于执行SQL语句并获取结果。
二、作用1. 数据库连接JDBC提供了一种与数据库建立连接的方式,它允许Java程序通过指定数据库的URL、用户名和密码等信息来连接数据库。
通过JDBC连接数据库,Java程序可以执行各种数据库操作,如查询数据、更新数据、插入数据等。
数据库连接是JDBC的基础,也是Java程序与数据库进行交互的起点。
2. 数据库查询JDBC提供了一套统一的接口和方法来执行SQL查询语句,Java程序可以通过JDBC接口向数据库发送查询请求,并获取查询结果。
查询结果可以是一个ResultSet对象,其中包含了查询返回的数据。
Java程序可以通过ResultSet对象来遍历查询结果,并对结果进行处理和展示。
3. 数据库更新除了查询,JDBC还提供了一套接口和方法来执行数据库的更新操作,如插入、更新和删除数据。
Java程序可以使用JDBC接口构建SQL语句,并通过JDBC执行器来执行SQL语句,并获取更新结果。
数据库更新是JDBC的重要功能之一,它使得Java程序能够方便地对数据库进行增删改操作。
黑马程序员小鲁哥哥白话笔记-JDBC(一)

小鲁哥哥白话笔记-JDBC(API详解)前边我们讲过SQL的一些基本操作,大家都是通过图形化工具对数据本身进行操作,今天我们讲一讲如何通过java代码去操作数据库,java中定义了一种规范,叫做JDBC.JDBC:JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL 语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
是Java访问数据库的标准规范JDBC的使用是有标准的步骤的,大家根据固定的模式去写自己的JDBC代码就可以。
JDBC一共6个步骤:1.注册驱动.2.获得连接.3.获得语句执行平台4.执行sql语句5.处理结果6.释放资源.下边给大家聊一聊JDBC里API的使用:一、注册驱动:代码:Class.forName("com.mysql.jdbc.Driver");JDBC规范定义驱动接口:java.sql.Driver,MySql驱动包提供了实现类:com.mysql.jdbc.DriverDriverManager工具类,提供注册驱动的方法registerDriver(),方法的参数是java.sql.Driver,所以我们可以通过如下语句进行注册:DriverManager.registerDriver(new com.mysql.jdbc.Driver());以上代码不推荐使用,存在两方面不足1.硬编码,后期不易于程序扩展和维护2.驱动被注册两次。
通常开发我们使用Class.forName() 加载一个使用字符串描述的驱动类。
如果使用Class.forName()将类加载到内存,该类的静态代码将自动执行。
通过查询com.mysql.jdbc.Driver源码,我们发现Driver类“主动”将自己进行注册public class Driver extends NonRegisteringDriver implements java.sql.Driver { static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}……}二、获得链接代码:Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);获取连接需要方法DriverManager.getConnection(url,username,password),三个参数分别表示,url需要连接数据库的位置(网址)user用户名password 密码url比较复杂,下面是mysql的url:jdbc:mysql://localhost:3306/mydbJDBC规定url的格式由三部分组成,每个部分中间使用冒号分隔。
jdbc实训报告总结

jdbc实训报告总结实训报告:JDBC(Java Database Connectivity)一、实训目标本次JDBC实训的目标是掌握Java语言如何通过JDBC API与关系型数据库进行交互,包括数据库的连接、查询、更新和断开连接等操作。
二、实训内容1. 了解JDBC的基本概念和用途。
2. 掌握JDBC驱动的安装与配置。
3. 掌握使用JDBC API进行数据库连接、查询、更新和断开连接的步骤。
4. 了解事务处理和批处理的概念及实现方法。
5. 掌握使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
6. 了解JDBC的异常处理机制。
7. 掌握使用连接池管理数据库连接。
三、实训过程1. 在实验环境中安装和配置JDBC驱动。
2. 编写Java程序,实现数据库的连接、查询、更新和断开连接等操作。
3. 编写Java程序,实现事务处理和批处理。
4. 编写Java程序,使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
5. 编写Java程序,实现异常处理。
6. 编写Java程序,使用连接池管理数据库连接。
四、实训总结通过本次实训,我深入了解了JDBC API的使用方法,掌握了Java语言与关系型数据库的交互方式。
在实训过程中,我学会了如何安装和配置JDBC驱动,如何使用JDBC API进行数据库连接、查询、更新和断开连接等操作,以及如何使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
此外,我还了解了事务处理和批处理的概念及实现方法,以及JDBC的异常处理机制和连接池的使用方法。
这些知识和技能将对我今后的学习和工作产生积极的影响。
对jdbc的理解

对jdbc的理解
JDBC(Java Database Connectivity)是Java编程语言用于连接和操作数据库的API。
它提供了一种标准的方式来访问各种不同类型的数据库,使得开发人员可以通过统一的接口来处理数据库操作。
JDBC的设计目标是简单、易用和可扩展。
JDBC的主要作用是连接数据库。
开发人员可以使用JDBC提供的连接器来建立与数据库的连接,并且可以通过连接器执行SQL语句。
这样,开发人员可以使用Java程序来操作数据库,从而实现数据的增删改查等操作。
JDBC还提供了一套API来处理数据库事务。
事务是指一系列的数据库操作,要么全部成功,要么全部失败。
JDBC提供了事务管理器来处理事务的提交和回滚等操作,确保数据库的数据一致性和完整性。
JDBC还提供了一套异常处理机制。
开发人员可以使用try-catch语句来捕获和处理异常,以便在出现错误时进行适当的处理。
这样可以增加程序的健壮性和可靠性。
JDBC还支持批处理操作,开发人员可以一次性执行多个SQL语句,从而提高数据库操作的效率。
另外,JDBC还提供了元数据(Metadata)的支持,开发人员可以通过元数据获取数据库的结构和信息,从而更方便地进行数据库操作。
总的来说,JDBC是Java程序连接和操作数据库的重要工具。
它提
供了一种简单、易用和可扩展的方式来进行数据库操作,使得开发人员能够更加高效地开发和管理数据库。
通过JDBC,我们可以轻松地连接各种类型的数据库,并实现对数据库的增删改查等操作。
JDBC在Java开发中扮演着重要的角色,是实现数据持久化的关键技术之一。
jdbc从入门到精通,特别适合初学者

jdbc从入门到精通,特别适合初学者如果你有翻阅java API文档的习惯的话,你就会发现,jdbc API中接口占了大多数。
不同的jdbc驱动开发者提供了实现必要接口的类。
开发商之间的不断竞争就为我们提供了多种jdbc驱动。
点击这里你会方便的获得很多公司提供的jdbc驱动。
从编程的角度出发,有两个主要的类负责建立与数据库的连接。
第一个类是 DriverManager,它是在 JDBC API 中提供的为数不多的实际类之一。
DriverManager 负责管理已注册驱动程序的集合,实质上就是提取使用驱动程序的细节,这样程序员就不必直接处理它们。
第二个类是实际的 JDBC Driver 类。
这些是由独立厂商提供的。
JDBC Driver 类负责建立数据库连接和处理所有与数据库的通讯。
在所有java程序与数据库之间创建连接的过程的第一步是在jvm中注册jdbc驱动。
在传统的连接机制(相对于后面讨论的 DataSource 连接机制)中,连接和所有数据库通讯是由 DriverManager 对象控制的。
要建立一个连接,必须用 DriverManager 对象注册针对目标数据库的适当的 JDBC 驱动程序。
JDBC 规范规定了 JDBC 驱动程序在装入 JVM 时应该自动用 DriverManager 对象注册自身。
例如,下面的代码段使用一个静态的初始化程序来首先创建一个 persistentjava JDBC 驱动程序的实例,然后用 DriverManager 将其注册。
static {java.sql.DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ;}注册驱动程序就是将驱动程序类装入 JVM 的工作,它可以用几种不同的方法完成。
一种方法就是使用类调用器(ClassLoader)Class.forName(yourDriver);。
jdbc实验心得

JDBC实验心得1. 介绍JDBC(Java Database Connectivity)是Java语言访问数据库的标准API。
通过JDBC,可以实现Java程序与各种关系型数据库的连接与交互。
在本次实验中,我深入学习了JDBC的使用方法,并通过实际操作,对JDBC在开发中的重要性有了更深刻的认识。
本文将从以下几个方面详细探讨我在实验中的心得体会:•JDBC的基本概念及原理•JDBC连接数据库的步骤•实际操作中遇到的问题及解决方法•JDBC在开发中的应用场景•实验的收获和不足之处2. JDBC的基本概念及原理2.1 JDBC的作用和优势JDBC是Java语言连接数据库的标准接口。
它使得Java程序能够通过标准的数据库操作语句与数据库进行交互,实现数据的存储和查询等功能。
JDBC的优势在于它能够提供跨平台的数据库访问能力,而不依赖于特定的数据库或操作系统。
2.2 JDBC的工作原理JDBC的工作原理可以分为以下几个步骤:1.加载数据库驱动程序:在使用JDBC之前,需要先加载相应数据库的驱动程序。
通过Class.forName()方法加载驱动类,这个类实现了Java SQL接口规范。
2.建立数据库连接:通过DriverManager类的getConnection()方法,传入数据库URL、用户名和密码等参数,来建立与数据库的连接。
连接成功后,将返回一个Connection对象。
3.创建执行SQL语句的Statement对象:通过Connection对象的createStatement()方法,可以创建一个用于执行SQL语句的Statement对象。
4.执行SQL语句:使用Statement对象的executeQuery()或executeUpdate()方法,可以执行查询或更新操作。
5.处理查询结果或更新结果:当执行查询语句后,可以使用ResultSet对象来遍历查询结果集;当执行更新语句后,可以使用int值表示受影响的行数。
JDBC学习总结--JDBC快速入门教程
JDBC学习总结--JDBC快速⼊门教程先感谢前⼈的劳动成果,本教程中含有多处指路,请注意筛选.前置知识:基本SQL 语句,JAVA SE基础JDBC ⽬录:1.JDBC概念2.JDBC处理SQL语句的过程(建表,查表)建⽴与数据库的连接创建 statement执⾏ Query处理结果集(ResultSets)3.专题介绍ResultSet 与 Statement 中的 Prestatement,CallableStatement 详细介绍批处理的使⽤ + 删除表格DataSource 与连接池,事务 (DBCP,简易连接池)4.结尾ORMDAO封装⾃⼰的JDBC1. JDBC的概念JDBC(Java DataBase Connectivity)是⼀种数据库连接技术,能实现Java程序对各种数据库的访问。
由⼀组使⽤Java语⾔编写的类和接⼝(JDBC API)组成,他们位于java.sql以及javax.sql中。
中的 (⼆.JDBC是什么)作⽤:1. 与数据库建⽴联系.2. 将编写好的SQL语句发送⾄数据库执⾏3. 对数据库返回的结果进⾏操作JDBC APIjava.sql.*javax.sql.*连接数据库相关的:DriverManager: ⽤URL连接数据库, 在4.0版本之前要进⾏加载. 即⽤映射加载驱动 Class.forName("com.mysql.jdbc.Driver"); 相对于DriverManager类,DataSource更适合⽤于获取操作数据的Connection对象, 它相对灵活,并且⽀持 JNDI ,可以为servlet容器提供连接池 (可以去找DBCP的资料,这⾥涉及到了 .) ,后续会解释DataSource的使⽤.Connection接⼝: 负责连接数据库并担任传送数据的任务。
数据库SQL相关的:Statement接⼝: 负责执⾏SQL语句。
标日初级总结笔记JDBC学习总结笔记
疯狂代码 / ĵ:http://DataBase/Article17391.html l.连接到数据库思路方法 答:1)ODBC(OpenDatabaseConnectivity) 个以C语言为基础访问SQL为基础数据库引擎接口它提供了致接口用于和数据库沟通以及访问数据 2)JDBC Java版本ODBC 2.JDBC应用编程接口 答:JDBC应用编程接口是: 1)标准数据访问接口可以连到区别数据库; 2)JAVA编程语言组类和接口 JDBC应用编程接口能够: 1)连接到数据库; 2)发SQL查询串到数据库; 3)处理结果 JDBC应用编程接口有 2个主要部分: 1)JAVA应用开发接口面向JAVA应用开发者; 2)JDBC驱动开发接口 3.JDBCDriver 答:1)大堆实现了JDBC类和接口类; 2)提供了个实现java.sql.Driver接口类 4.JDBCDriver 4种类型 答:1)JDBC-ODBC桥 由ODBC驱动提供JDBC访问 2)本地API 部分Javadriver把JDBC转化成本地客户端API 3)JDBC-net 纯Javadriver将JDBC转入DBMS和网络协议无关然后通过服务器将转为DBMS协议 4)本地协议 纯javadriver将JDBC直接转为DBMS使用网络协议 5.JDBC开发者接口
FLOAT(n)double运算精度为n位 2进制数浮点数 REALfloat通常是32位浮点数 DOUBLEdouble通常是64位浮点数 [Page]
CHARACTER(n)或CHAR(n)String长度为n固定长度串 VARCHAR(n)String最大长度为n可变长度串 BOOLEANboolean布尔值 DATEJava.sql.Date根据具体设备而实现日历日期 TIMEJava.sql.Time根据具体设备而实现时戳 TIMESTAMPJava.sql.Timestamp根据具体设备而实现当日日期和时间 BLOBJava.sql.Blob 2进制大型对象 CLOBJava.sql.Clob大型对象 ARRAYJava.sql.Array
达内学习心得:JDBC总结:系列笔记之四
达内学习心得:JDBC总结:系列笔记之四参赛学员:常彦博获奖奖项:二等奖说明:(又花了几个小时把JDBC笔记转成了word版!笔记内容真实,都是课上及TTS上内容,不是从网上复制粘贴来的!同时也不会去刷点击率!不想评分的按F5刷新页面即可!不用选择分数,一旦选择就不能改了!也可以拿到电子版后再来评分!Q在下)1)此笔记为本人系列笔记之一:Java、Oracle、PL/SQL、JDBC、XML、HTML、CSS、JavaScript、Servlet……2)笔记内容整理了:JDBC(范传奇老师主讲,占笔记内容100%)。
3)此笔记已打印出成品,一共19页!(不包括目录)。
排版格式大部分按照毕业论文做的!有目录、章节、页眉、页脚、缩进、一二三级标题等。
同时排版格式也照顾到了双面打印,所以电子版可直接双面打印,不需要调格式。
因此,本人的系列笔记平均花费20个小时以上(笔记纯手工输入)!每天的总结、排版很辛苦!之前有很多朋友拿到了我分享的笔记,因此还望各位尊重他人劳动成果(你懂得~~)。
4)评选系统由于不能上传word版,所以格式、布局上不太好看,如文中的注意事项有特殊项目符号,这里显示的是字母u和字母v,有的图片也不能显示!内容太长,老是提交失败!只能一点一点发!5)希望大家多多支持,评选结束后,我会找时间统一分享给大家所有的笔记!之前拿到过的朋友,也可以再要,因为修改、更新了很多内容。
———————————————————————————————————————————————————————————————————目录一、JDBC概述11.1 什么是JDBC 11.2什么是驱动11.3 SQL lite 11.4如何使用Java连接某种数据库11.5连接数据库并操作11.6连接数据库时常见的错误1二、JDBC核心API 22.1 Connection 22.2 Statement 22.3 ResultSet 22.4 DriverManager 22.5 UUID32.6案例:使用JDBC连接数据库,并操作SQL语句32.7案例:通过JDBC创建表42.8案例:使用JDBC向表中插入数据42.9遍历Student_chang表5三、JDBC核心API:PreparedStatement 63.1Statement的缺点63.2PreparedStatement的优点63.3案例详见第五章StudentDAO类6四、Connection封装7五、DAO 85.1持久类封装85.2 DAO层85.3 Properties类85.4案例:注册系统8六、批处理126.1批处理的优点126.2 JDBC批处理API 126.3案例:详见8.4案例step7 12七、事务处理137.1事务特性ACID 137.2 JDBC中对事务的支持(API)13八、DAO事务封装148.1ThreadLocal原理148.2原理图148.3ThreadLocal核心API 148.4案例:登录系统(使用ThreadLocal实现连接共享)14九、分页查询179.1分页查询的基本原理179.2为何使用分页查询179.3 Oracle分页查询SQL语句179.4 MySQL分页查询SQL语句179.5“假”分页179.6案例:分页查询18一、JDBC概述1.1 什么是JDBC1)Java的设计者希望使用相同的方式访问不同的数据库。
JDBC课堂笔记
1JDBC1.1JDBC概念1.1.1数据库驱动:数据库厂商提供的用来操作数据库的jar包1.1.2JDBC由于各大数据库厂商提供的数据库驱动各不相同, 导致了开发人员的学习成本十分的高. SUN公司为了简化数据库的操作, 提供了一套规范, 本质上就是一大堆的接口, 要求各大数据库厂商在提供驱动时都要实现JDBC这套接口, 实现之后, 只要学会JDBC这套接口, 所有的数据库驱动就都会使用了!JDBC由两个包组成, 分别是java.sql和javax.sql, 目前已经被集成到javase规范中!需要注意的是: JDBC中包含的就是一段接口, 真实操作数据库的代码都在具体的数据库驱动中. 也就是说在开发数据库程序时, 除了要导入JDBC相关的包之外, 还需要导入具体的数据库驱动包.1.2六个步骤实现JDBC程序 (!!掌握)//1.注册数据库驱动Class.for Name(“com.mysql.jdbc.Driver”);//2.获取数据库连接Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1”, “root”, “root”);//简写形式为:Connection conn = DriverManager.getConnection(“jdbc:mysql:///mydb1”, “root”, “root”);//3.获取传输器Statement stat = conn.createStatement();//4.利用传输器发送sql到数据库执行, 返回执行结果ResultSet rs = stat.executeQuery(“select * from account”);int rows = stat.executeUpdate(“insert into account values(null, ‘y’, 666)”);//5.处理结果略//6.释放资源rs.close();stat.close();conn.close();1.3JDBC的增删改查(略) (!!掌握)1.4PreparedStatement (!!掌握)1.4.1Sql注入攻击//select * from user where username='张三'#'' and password=''//select * from user where username='张三' or '2=2' and password=''由于后台的SQL是拼接而来的, 其中的参数是用户提交的, 如果用户在提交参数时, 参杂了一些SQL关键字或者特殊符号, 就有可能会导致SQL语句语意的改变, 从而造成一些意外的操作!PreparedStatement优点:(1)可以防止sql注入攻击通过PreparedStatement对象发送sql, 是先把sql语句的骨架发送给数据库编译并确定下来, 后面发送的只能是参数的值, 不能影响sql语句的骨架, 即使参数中包含sql关键字或特殊符号, 也只会当成普通的文本来处理!(2)通过方法来设置参数, 省去了拼接SQL语句的麻烦!(3)可以提高程序的效率:通过PreparedStatement对象发送的sql语句(骨架)到数据库编译后会被数据缓存下来, 如果下次执行的sql与缓存中的相匹配, 就不再编译而是直接使用缓存中的语句, 可以减少sql语句编译的次数, 提高程序执行的效率!Statement对象发送的sql语句到数据库之后也会编译, 但是Statement对象是先拼接好再发送sql到数据库, 如果每次参数不同, 整条sql也就不同. 所以每次都需要编译!2批处理 (掌握)2.1批处理概述假设现有一大堆的sql要到数据库执行, 如果一条一条发送, 有多少条就需要发送多少次, 效率低下可以通过批处理提高发送sql语句的效率: 可以将这一大堆的sql添加到一个批中, 一次性将批发送给数据库, 数据库收到后打开批, 依次执行其中sql语句, 这样可以减少sql语句发送的次数, 从而提高程序执行的效率!2.2Statement方式来实现批处理优点:可以在一次批处理中添加结构不同的sql语句缺点:不能防止sql注入攻击没有预编译机制, 效率略低当发送结构相同的sql语句时, sql语句的骨架每次都需要编写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随笔- 52 文章- 6 评论- 39 JDBC什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。
比如建立数据库连接、执行SQL语句进行数据的存取操作。
JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架。
接口包含在java.sql及javax.sql包中,其中java.sql属于JavaSE,javax.sql属于JavaEE。
这些接口的实现类叫做数据库驱动程序,由数据库的厂商或其它的厂商或个人提供。
为了使客户端程序独立于特定的数据库驱动程序,JDBC规范建议开发者使用基于接口的编程方式,即尽量使应用仅依赖java.sql及javax.sql中的接口和类。
JDBC驱动程序:什么是JDBC驱动程序?这些是各个数据库厂家根据JDBC的规范制作的JDBC实现类Connection:这个接口可以制向一个数据库连接对象,那么如何得到这个连接对象呢?是通过DriverManager工厂中的getConnection(String URL)方法得到的Statement:用于执行静态的SQL语句的接口,通过Connection中的createStatement方法得到的Resultset:用于指向结果集对象的接口,结果集对象是通过Statement中的execute等方法得到的JAVA使用JDBC访问数据库的步骤:1.得到数据库驱动程序2.创建数据库连接3.执行SQL语句4.得到结果集5.对结果集做相应的处理(增,删,改,查)6.关闭资源:这里释放的是DB中的资源设置classpath:1.在java文件中起的包名一定要是工程基目录下的子目录,classpath:基目录2..jar包,需要将这个.jar包的路径包括这个文件的全名添加到classpath中来Oracle连接字符串的书写格式:“oracle:jdbc:thin:@ip:1521: 数据库名”,”数据库用户名”,”数据库密码”简单的例子:package moudule1.first;import java.sql.*;public class FirstJdbc{public static void main(String[] args){String sql="select * from yuchen_user";Connection con=null;Statement st=null;ResultSetrs=null;try{Class.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:na me", "scott","tiger");st=con.createStatement();rs=st.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt("id"));System.out.println(rs.getString("name"));}}catch(Exception e){e.printStackTrace();}finally{try{con.close();}catch(Exception e){}try{st.close();}catch(Exception e){}try{rs.close();}catch(Exception e){}}}}常用数据库的驱动程序及JDBC URL:Oracle数据库:驱动程序包名:ojdbc14.jar驱动类的名字:oracle.jdbc.driver.OracleDriverJDBC URL:jdbc:oracle:thin:@dbip:port:databasename说明:驱动程序包名有可能会变JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。
红色字体部分需要根据数据库的安装情况填写。
其中各个部分含义如下:dbip–为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为1521。
databasename–为数据库的SID,通常为全局数据库的名字。
举例如果要访问本地的数据库allandb,端口1521,那么URL写法如下:jdbc:oracle:thin:@localhost:1521:allandb 下载地址如下:/technology/software/tech/java/sqlj_jdbc/index.ht mlSQL Server数据库驱动程序包名:msbase.jar mssqlserver.jar msutil.jar驱动类的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver JDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databa sename说明:驱动程序包名有可能会变JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。
红色字体部需要根据数据库的安装情况填写。
其中各个部分含义如下:dbip–为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为1433。
databasename–数据库的名字。
举例如果要访问本地的数据库allandb,端口1433,那么URL写法如下:jdbc: microsoft: sqlserver:@localhost:1433; DatabaseName =allandb下载地址:/downloads/details.aspx MySQL数据库驱动程序包名:mysql-connector-java-3.1.11-bin.jar驱动类的名字:com.mysql.jdbc.DriverJDBC URL:jdbc:mysql://dbip:port/databasename说明:驱动程序包名有可能会变JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。
红色字体部需要根据数据库的安装情况填写。
其中各个部分含义如下:dbip–为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为3306。
databasename–数据库的名字。
举例如果要访问本地的数据库allandb,端口1433,那么URL写法如下:jdbc:mysql://localhost:3306/allandb下载地址:/downloads/connector/j/ Access数据库驱动程序包名:该驱动程序包含在JavaSE中,不需要额外安装。
驱动类的名字:sun.jdbc.odbc.JdbcOdbcDriverJDBC URL:jdbc:odbc:datasourcename说明:该驱动只能工作在Windows系统中,首先需要在操作系统中建立一个可以访问Access数据库的本地数据源(ODBC),如果名字为allandb,那么URL写法如下:jdbc:odbc:allandbPreparedStatement接口:预编译的sql语句对象作用: 解决了书写sql语句时一些特殊的字符与sql保留字符冲突的问题,非常方便/***知识点:*PreparedStatement接口及方法的使用*程序目标:*java文件:*PreparedInsert.java:连接数据库,插入一条数据*JdbcUtil.java:实现一个工具类,功能:1.连接数据库2.关闭资源*/package moudule1.preparedstatement;import java.sql.*;import .*;public class PreparedInsert{public static void main(String[] args){String sql="insert into yuchen_user (id,name) values (?,?)"; System.out.println(sql);Connection con=null;PreparedStatementps=null;try{con=JdbcUtil.getConnection();ps=con.prepareStatement(sql);ps.setInt(1,2);ps.setString(2,"zhangsan");ps.executeUpdate();ps.setInt(1,3);ps.setString(2,"lisi");ps.executeUpdate();}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,ps);}}}package ;import java.sql.*;public class JdbcUtil{public static Connection getConnection() throws Exception{Class.forName("oracle.jdbc.driver.OracleDriver");returnDriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name", "scott","tiger");}public static void close(Connection con,Statementst){close(con);close(st);}public static void close(Connection con,Statementst,ResultSetrs){close(con,st);close(rs);}public static void close(Connection con){try{con.close();}catch(Exception e){}}public static void close(Statement st){try{st.close();}catch(Exception e){}}public static void close(ResultSetrs){try{rs.close();}catch(Exception e){}}}数据库的增删改查的例子:/***知识点:*JDBC+SQL+ORACLE*程序目标:*UserDao.java:实现了数据库的增删改查*JdbcUtil.java:工具类,有连库和关闭资源的方法*/package moudule1.idus;import java.sql.*;import .*;public class UserDao{private String sql;private Connection con;private Statement st;private ResultSetrs;public UserDao(){sql=null;con=null;st=null;rs=null;}public void insert(){sql="insert into yuchen_user (id,name) values(";sql+="4,'zhouwu')";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void delete(){sql="delete from yuchen_user where id=2";System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void update(){sql="update yuchen_user set name='liumang' where id=1"; System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();st.executeUpdate(sql);}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}public void select(){sql="select * from yuchen_user"; System.out.println(sql);try{con=JdbcUtil.getConnection();st=con.createStatement();rs=st.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt(1)); System.out.println(rs.getString(2)); }}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st,rs);}}public static void main(String[] args){ UserDaoud=new UserDao();ud.select();ud.insert();ud.select();ud.update();ud.select();ud.delete();ud.select();}}一些常用的方法:/***知识点:*execute方法,getResultSet(),getUpdateCount()*程序目标:*JdbcUtil.java:工具类,连接数据库,关闭资源*sqlExecutor.java:命令行参数输入sql语句,并执行该语句*/package moudule1.fangfa;import java.sql.*;import .*;public class sqlExecutor{public static void main(String[] args){Connection con=null;Statement st=null;try{con=JdbcUtil.getConnection();st=con.createStatement();booleanstr=st.execute(args[0]);if(str){ResultSetrs=st.getResultSet();while(rs.next()){System.out.println(rs.getInt("id")+":"+rs.getString("name"));}rs.close();}else{int row=st.getUpdateCount();System.out.println(row);}}catch(Exception e){e.printStackTrace();}finally{JdbcUtil.close(con,st);}}}2. 补充JDBC连接MySQL加载及注册JDBC驱动程序Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.jdbc.Driver").newInstance();JDBC URL 定义驱动程序与数据源之间的连接标准语法:<protocol(主要通讯协议)>:<subprotocol(次要通讯协议,即驱动程序名称)>:<data source identifier(数据源)>MySQL的JDBC URL格式:jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][¶m2=value2]….示例:jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password常见参数:user用户名password密码autoReconnect联机失败,是否重新联机(true/false)maxReconnect尝试重新联机次数initialTimeout尝试重新联机间隔maxRows传回最大行数useUnicode是否使用Unicode字体编码(true/false)characterEncoding何种编码(GB2312/UTF-8/…)relaxAutocommit是否自动提交(true/false)capitalizeTypeNames数据定义的名称以大写表示建立连接对象Stringurl="jdbc:mysql://localhost:3306/sample_db?user=root&password =your_password";Connection con = DriverManager.getConnection(url);建立SQL陈述式对象(Statement Object)Statement stmt = con.createStatement();执行SQL语句executeQuery()String query = "select * from test";ResultSetrs=stmt.executeQuery(query);结果集ResultSetwhile(rs.next()){rs.getString(1);rs.getInt(2);}executeUpdate()String upd="insert into test (id,name)values(1001,xuzhaori)";int con=stmt.executeUpdate(upd);execute()示例:try{}catch(SQLExceptionsqle){}finally{}Java类型和SQL类型技术手册P421PreparedStatement(预编语句)PreparedStatement stmt = conn.prepareStatement("insert intotest(id,name)values(?,?)");stmt.setInt(1,id);stmt.setString(2,name);注:一旦设定语句的参数值后,就可以多次执行改语句,直到调用clearParameters()方法将他清除为止CallableStatement(预储程序)技术手册P430JDBC2.0使用ResultSet对象中的光标上下自由移动Statement stmt= con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSetrs=stmt.executeQuery("select * from test");public StatementcreateStatement(intresultSetType,intresultSetConcuttency) throwsSQLExceptionresultSetTypeTYPE_FORWARD_ONLY 只能使用next()方法。