java中连接数据库
- JDBC连接数据库
- •创建一个以JDBC连接数据库的程序,包含7个步骤:
- 1、加载JDBC驱动程序:
- 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
- 这通过java.lang.Class类的静态方法forName(String className)实现。
- 例如:
- try{
- //加载MySql的驱动类
- Class.forName("com.mysql.jdbc.Driver") ;
- }catch(ClassNotFoundException e){
- System.out.println("找不到驱动程序类 ,加载驱动失败!");
- e.printStackTrace() ;
- }
- catch(Exception e){
e.printStackTrace() ;
} - 成功加载后,会将Driver类的实例注册到DriverManager类中。
当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例 化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() .printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。(这是白话解释,比较容易理解) - 2、提供JDBC连接的URL
- •连接URL定义了连接数据库时的协议、子协议、数据源标识。
- •书写形式:协议:子协议:数据源标识
- 协议:在JDBC中总是以jdbc开始
- 子协议:是桥连接的驱动程序或是数据库管理系统名称。
- 数据源标识:标记找到数据库来源的地址与连接端口。
- 例如:(MySql的连接URL)
- jdbc:mysql:
- //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
- useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
- gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
- 3、创建数据库的连接
- •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
- 该对象就代表一个数据库的连接。
- •使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
- 密码来获得。
- 例如:
- //连接MySql数据库,用户名和密码都是root
- String url = "jdbc:mysql://localhost:3306/test" ;
- String username = "root" ;
- String password = "root" ;
- try{
- Connection con = DriverManager.getConnection(url , username , password ) ;
- }catch(SQLException se){
- System.out.println("数据库连接失败!");
- se.printStackTrace() ;
- }
- 4、创建一个Statement
- •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
- 种类型:
- 1、执行静态SQL语句。通常通过Statement实例实现。
- 2、执行动态SQL语句。通常通过PreparedStatement实例实现。
- 3、执行数据库存储过程。通常通过CallableStatement实例实现。
- 具体的实现方式:
- Statement stmt = con.createStatement() ;
- PreparedStatement pstmt = con.prepareStatement(sql) ;
- CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
- 5、执行SQL语句
- Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute
- 1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。
- 2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等 3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 语句。
- 具体实现的代码:
- ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
- int rows = stmt.executeUpdate("INSERT INTO ...") ;
- boolean flag = stmt.execute(String sql) ;
- 6、处理结果
- 两种情况:
- 1、执行更新返回的是本次操作影响到的记录数。
- 2、执行查询返回的结果是一个ResultSet对象。
- • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
- • 使用结果集(ResultSet)对象的访问方法获取数据:
- while(rs.next()){
- String name = rs.getString("name") ;
- String pass = rs.getString(1) ; // 此方法比较高效
- } (列是从左到右编号的,并且从列1开始)
- 7、关闭JDBC对象
- 操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
- 明顺序相反:
- 1、关闭记录集
- 2、关闭声明
- 3、关闭连接对象
- if(rs != null){ // 关闭记录集
- try{
- rs.close() ;
- }catch(SQLException e){
- e.printStackTrace() ;
- }
- }
- if(stmt != null){ // 关闭声明
- try{
- stmt.close() ;
- }catch(SQLException e){
- e.printStackTrace() ;
- }
- }
- if(conn != null){ // 关闭连接对象
- try{
- conn.close() ;
- }catch(SQLException e){
- e.printStackTrace() ;
- }
- }
java中连接数据库相关推荐
- java中连接数据库失败,提示:Acc?¨s refus?? pour l'utilisateur: 'root'@'@localhost' (mot de passe: OUI)
java中连接数据库失败,提示:Acc?¨s refus?? pour l'utilisateur: 'root'@'@localhost' (mot de passe: OUI) 这是由于连接数据库 ...
- jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题
jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题 参考文章: (1)jsp项目中连接数据库解决java.l ...
- Java中JDBC连接数据库详解
今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...
- Redis在Java中的使用及连接数据库(附源码)
Redis在Java中的使用及连接数据库(附源码) 引言: 本文主要分享了Redis如何在IDEA中部署,运行:模拟加入Redis的操作: 文章目录 Redis在Java中的使用及连接数据库(附源码) ...
- [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
- 在java中下列描述错误的是_在 JAVA 中 , 关于类的方法 , 下列描述错误的是 ()._学小易找答案...
[多选题]价值的特性是 [简答题]输入任一字符串,统计其中数字,字母及其它字符个数 .(25分) [填空题]1.产品整体包括哪五个基本层次 2核心层次产品最基本的层次,是产品的_____ [单选题]纸 ...
- java中处理字符编码(网页与数据库)(转)
首先声明一下,此文章时从网上转载的.如下的某些方法是确实管用,但是从中发现了有一点不足,就是原文笔者没考虑使用不同Web Server时出现的情况,比如文章里我用红色字体画出来的部分代码在Tomcat ...
- java中class.forname连接mysql数据库_数据库链接与 Class.forName()用法详解
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 ...
- stmt在java中的应用_JDBC技术基础总结转载,非原创
JDBC的全称是Java DataBase Connectivity,即Java数据库连接.它是一套行业标准的API,可以在Java应用程序中与关系型数据库建立连接,并执行相关操作,例如Oracle, ...
- Java中几个主流的数据库连接池
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...
最新文章
- DNS子域委派配置案例[转载]
- html中如何屏蔽一段代码,html中如何使用python屏蔽一些基本功能(示例代码)
- 微软等数据结构+算法面试100题全部答案集锦
- 【NLP】从0梳理1场NLP赛事!
- int指令01 - 零基础入门学习汇编语言64
- feign接口调用出现连接超时
- 怎么用计算机算立方数,计算器的使用方法
- (组合数学笔记)Pólya计数理论_Part.10_Pólya定理的推广——De Bruijn定理的母函数形式
- JAVA if语句快捷键_java编程基础 第一、第二章
- 算法89---图的最小生成树
- python中怎么调用sort_python中sort()方法的cmp参数
- 【雕虫小技第10篇】scratch编程技巧之源码素材快速导出为png或者svg格式
- iOS模拟器发送通知和UI测试
- 北京政协:电子垃圾回收是亟待破解的难题
- Elasticsearch学习4《Elasticsearch的各种查询》
- python字典生成器
- 【WinHex篇】WinHex制作特定区域镜像教程
- GB/T 20984-2022《信息安全技术 信息安全风险评估方法》解读
- [干货] 一文看懂numpy.nonzero() 与 numpy.argwhere()非零元素处理
- 计算机怎样禁止再添加新用户,Win10如何添加新用户?