java jdbc连接 代码块_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() ;

}

成功加载后,会将Driver类的实例注册到DriverManager类中。

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连接Mysql数据库的代码块package package1;import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;public class Test {    public static void main(String[] args) {

//声明Connection对象

Connection con;

//驱动程序名

String driver = "com.mysql.jdbc.Driver";

//URL指向要访问的数据库名mydata

String url2="jdbc:mysql://localhost:3306/studentin?useUnicode=true&characterEncoding=utf-8&useSSL=false";

//MySQL配置时的用户名

String user = "root";

//MySQL配置时的密码

String password = "12305";

//遍历查询结果集

try {

//加载驱动程序

Class.forName(driver);

//1.getConnection()方法,连接MySQL数据库!!

con = DriverManager.getConnection(url2,user,password);

if(!con.isClosed())

System.out.println("Succeeded connecting to the Database!");

//2.创建statement类对象,用来执行SQL语句!!

Statement statement = con.createStatement();

//要执行的SQL语句

String sql = "select name,age from student";

//3.ResultSet类,用来存放获取的结果集!!

ResultSet rs = statement.executeQuery(sql);

System.out.println("-----------------");

System.out.println("执行结果如下所示:");

System.out.println("-----------------");

System.out.println("name" + "\t" + "age");

System.out.println("-----------------");

String name = null;

int age;

while(rs.next()){

//获取stuname这列数据

name = rs.getString("name");

//获取stuid这列数据

//age = rs.getString("age");

age = rs.getInt("age");

//输出结果

System.out.println(name + "\t" +age);

}

rs.close();

con.close();

} catch(ClassNotFoundException e) {

//数据库驱动类异常处理

System.out.println("Sorry,can`t find the Driver!");

e.printStackTrace();

} catch(SQLException e) {

//数据库连接失败异常处理

e.printStackTrace();

}catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

System.out.println("数据库数据成功获取!!");

}

}}我的数据库名称为studentin,表名为student,下图分别是表和程序结果的截图

a01d2e05aee26aa387cf8a76a912de2c.png

3dfc452c68feda07db76692232560390.png

参考:http://www.aspku.com/kaifa/java/236248.html

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

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

相关文章

java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)

一、JDBC简介JDBC是连接java应用程序和数据库之间的桥梁。什么是JDBC?Java语言访问数据库的一种规范,是一套API。JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类&#xff…

java ssm 系统的搭建_SSM框架下的javaweb学生管理系统--搭建系统结构

业务需求:一个登录页面,一个学生展示页面,添加、修改、删除三个功能目的是给大家了解一个初级系统的构造,不写那么复杂的需求了。从第一步开始:创建项目打开eclipse,点击右上角的File-->New-->Dynami…

opencv 高通滤波和低通滤波_滤波电路合集(低通滤波,CLCП滤波,DLC滤波,CRC П滤波)...

常见低通滤波电路L 一阶滤波C 一阶滤波CL 二阶滤波RC 二阶滤波LC 二阶滤波RCR T型三阶滤波LCL T型三阶滤波CRC π三阶滤波CLC π三阶滤波开关电源 单级低通滤波回路DLC 型二阶滤波器开关电源 双级串联式低通滤波回路CLC П型滤波器1、工作原理介绍a.输入正脉冲时,先给C1充电,充…

matlab语音信号处理实验_现代通信综合实验系统平台

现代通信综合实验系统平台近30年来,随着我国电信行业的迅猛发展,该行业的发展水平已成为衡量一个国家实力的一大关键因子。行业的发展同时,为当代相关专业大学生创造了极大的就业市场,市场对通信类人才有着极大的需求。培养一代全面型通信类人…

iphone储存空间系统怎么清理_教你快速清理 iPhone 系统缓存垃圾,拒绝卡顿!

「 改变能改变的一切,接受不能改变的一切!」▼“iPhone存储空间”里的系统为何占用了几十G的甚至上百G的内存,如何清理?当我们使用 iPhone 一段时间之后,系统或应用中会出现一些多余的缓存数据,如果长时间不…

倒N字形排列java_Java排序8大算法实现

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复…

cross_val_score 如何对孤立森林_【收藏】森林防火手抄报素材汇总!

森林防火手抄报模板参考【文字素材参考】01森林防火根据森林火灾燃烧中央地点,蔓延速度,受害部位和程度,大致可把森林火灾分为三大类:一.地表火 二.树冠火 三.地下火。以受害森林面积大小为标准,森林火灾分为以下四类:1.森林火警:…

pb9 调用系统语音_成都电销系统一个月多少钱_选择灵狐传媒_收费透明

灵狐传媒表示:成都电销系统一个月多少钱_选择灵狐传媒_收费透明,在成都想要找一家专业的电销系统,今天小编带您看看该怎么选择吧,和研发实践,融合互联网、云计算及人工智能、通信、大数据等技术,研发推出了以人工智能为…

java thread 线程销毁_手把手带你了解Java线程的实现方式及生命周期原理

前言我们在工作中线程技术很多情况下都能用的到,而且我们在面试的时候,线程技术基本上也是必问的。今天我来从线程的实现方式以及线程的生命周期做一个全面的讲解与分析,帮助大家能更好的去了解线程技术。概念我们先来了解下线程和进程的概念…

python自动化_python自动化测试-Behave框架的用法介绍 - python测试学习

测码学院 Behave框架的用法介绍众所周知:行为驱动开发((behavior-drivendevelopment,BDD)是一种基于敏捷软件开发的方法。它可以鼓励开发人员,业务参与者和QA人员之间的协作。作为另一个Python自动化测试框架,“Behave”允许团队…

diskgeniusv4.4.0_入门TensorFlow2.0

今天老师带领我们入门TensorFlow2.0。至于tensorflow2.0是啥嘛,详细的可以度娘一下。我简述一下,就是一个end-to-end machine-Learning open source plantform(端对端的开源机器学习的平台)。学习tensorflow需要引入tensor这个概念,tensor的汉语意思就是…

php 其他页面获取session_PHP五十个提升执行效率的小技巧,和常见问题

在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centosnginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点仍然是PHPer没有…

java怎么设置404界面_如何使用Spring MVC显示自定义的404 Not Found页面

本篇文章给大家带来的内容是关于如何使用Spring MVC显示自定义的404 Not Found页面,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了?其实通过很简单…

蓝牙解码格式哪个最好_拆解报告:山灵UP2 蓝牙音频接收器

主流手机逐步取消3.5mm接口,不再内置解码芯片,习惯使用有线耳机、对音质有一定要求的朋友只能选择音频转换线或者蓝牙耳机功率放大器这类产品替代。与转换线相比,蓝牙耳机功率放大器采用蓝牙无线连接更加自由,体积一般也比较小巧。…

项目助理这个工作怎么样_分析微信清理僵尸粉这个项目怎么样?

做微信清理僵尸粉做微信清理僵尸粉做微信清理僵尸粉本人利用这个方式一年副业赚了10万01 项目介绍(为什么这个项目受欢迎)现在每个人几乎都会用到微信,但是时间长了,微信好友都是几百上千好友(5000是上限)了。但是你有没有发现,每次跟你微信沟…

java 线程安全list_JAVA并发编程实战-线程安全性

线程安全性:对象的状态是指存储在状态变量(例如实例和静态域)中的数据。对象的状态可能包括其他依赖对象的域。例如:某个HashMap的状态不仅存储在HashMap对象本身,还存储在许多Map.Entry对象中。“共享”意味变量可以由…

日文转换为罗马音_手把手教你掌握韩语40音!入门必备哦

其实学习韩语还是蛮简单的,平时看韩剧也能学会几句比较常用的话~那么接下来我们进入正题,首先你可以根据自己的韩语学习经验和全网搜集,整理出以下能够快速学习韩语40音的方法,希望能帮助到更多面对韩语40音迷茫无措的…

win7一直显示正在启动_win7系统中提高启动速度并且禁用某些软件启动的操作小技巧...

我们在启动系统时,会出现启动速度过慢,甚至达到假死机状态,就是鼠标一直在转圈圈的等待状态。出现这个问题,一般是我们电脑中自启动的软件过多造成的,解决这个问题我们只要进入系统配置工具中,对系统进行相…

站怎么点都是一样_抖音怎么做?这几样一样都不能少,你都做到了吗?

有人说去年是内容爆发年,也有人说今年是内容元年,其实不管哪年都好,反正电商平台是越来越倾向于内容化运营,包括618都对入场商家的内容化运营有要求,特别是短视频内容。下面就给大家分享一下如何去做好一个抖音账号。分…

只能获取fixed语句初始值_因用了Insert into select语句,美女同事被开除了!

点击上方 web项目开发,选择 设为星标优质文章,及时送达--Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网…