JDBC操作步骤及数据库连接操作
2019独角兽企业重金招聘Python工程师标准>>>
一、JDBC操作步骤
1.加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,直接把JDBC操作所需要的开发包(一般为*.jar或*.zip)直接配置到classpath路径即可。
2.连接数据库:根据各个数据库的不同连接的地址也不同,此连接地址将由数据库厂商提供,一般在使用JDBC连接数据库的时候都要求用户输入数据库连接的用户名和密码,用户在取得连接之后才可以对数据库进行查询或更新的操作。
3.使用语句进行数据库操作:数据库操作分为更新和查询两种操作,除了可以使用标准的SQL语句之外,对于各个数据库也可以使用其自己提供的各种命令。
4.关闭数据库连接:数据库操作完毕之后需要关闭连接以释放资源。
二、配置数据库的驱动程序
1.下载驱动:http://www.mysql.com/downloads/connector/j/
2.配置环境变量:在classpath中添加驱动路径(例如我的路径是D:\mysql-connector-java-5.1.21-bin.jar;);
三、加载驱动
[java] view plain copy
- public class connector {
- public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; //定义MySQL数据库驱动程序
- public static void main(String[] args) {
- try {
- Class.forName(DBDRIVER); //加载驱动程序
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
四、连接及关闭数据库
1.使用DriverManager类进行连接操作,DriverManager类的常用方法:
(1)通过连接地址连接数据库
public static Connection getConnection(String url) throws SQLException
(2)通过连接地址连接数据库同时输入用户名和密码
public static Connection getConnection(String url, String user, String password) throws SQLException
2.DriverManager说明:
(1)在DriverManager中,提供的主要操作是得到一个数据库的连接,getConnection()方法就是取得连接对象,此方法返回的类型是Connection对象,不管使用那种方式连接,都必须提供一个数据库的连接地址,如果在连接数据库的时候需要用户名和密码,则还需要将用户名和密码设置上。MySQL数据库的连接地址格式如下:jdbc:mysql://IP地址:端口号/数据库名称
(2)数据库连接地址的形式由三部分组成:
a.jdbc协议:JDBC URL中的协议总是jdbc;
b.子协议:驱动程序名和数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称,例如:mysql;
c.子名称:一种标识数据库的方法。必须遵循"/主机名:端口/子协议"的标准URL命名约定,例如://localhost:3306/Joywy.
3.Connection
通过DriverManager取得Connection对象之后,实际上就表示数据库连接上了,连接上数据库之后就可以进行数据库的更新及查询操作,但是操作的最后数据库的连接必须关闭。
连接数据库代码如下:
[java] view plain copy
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class ConnectionDemo{
- //定义MySQL驱动程序
- public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
- //定义MySQL数据库的连接地址
- public static final String DBURL = "jdbc:mysql://localhost:3306/xiaowei";
- //MySQL数据库的连接用户名
- public static final String DBUSER = "root";
- //MySQL数据库的连接密码
- public static final String DBPASS = "android";
- public static void main(String[] args){
- //数据库连接
- Connection con = null;
- try{
- //加载驱动
- Class.forName(DBDRIVER);
- }catch(ClassNotFoundException e){
- e.printStackTrace();
- }
- try{
- con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
- }catch(SQLException e){
- e.printStackTrace();
- }
- System.out.println(con);
- try{
- //数据库关闭
- con.close();
- }catch(SQLException e){
- e.printStackTrace();
- }
- }
- }
五、数据库操作
1.Statement接口
此接口通过使用Connection接口中的createStatement()方法实例化,此接口定义了一下方法:
No. |
方法 |
类型 |
描述 |
1 |
Int executeUpdate(String sql)throws SQLException |
普通 |
执行数据库更新的SQL语句,例如:INSERT、UPDATE、DELETE等语句,返回更新的记录数 |
2 |
ResultSet executeQuery(String sql)throws SQLException |
普通 |
执行数据库查询操作,返回一个结果集对象 |
3 |
void addBatch(String sql)throws SQLException |
普通 |
增加一个待执行的SQL语句 |
4 |
int[] executeBatch()throws SQLException |
普通 |
批量执行SQL语句 |
5 |
void close()throws SQLException |
普通 |
关闭Statement操作 |
6 |
Boolean execute(String sql)throws SQLException |
普通 |
执行SQL语句 |
2.ResultSet接口
使用SQL中的SELECT语句可以将数据库的全部结果查询出来,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容。
3.PreparedStatement接口
PreparedStatement接口是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表之中准备好一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置,以插入数据为例,使用PreparedStatement插入数据时,数据表中的指针首先指向最后一条数据之后,但是里面的内容是不知道的,而是等待用户分别设置的。
注意:设置日期格式的问题,在PreparedStatement中定义了setData(),此方法可以设置日期内容,但是此方法使用时,后面的Data类型变量是java.sql.Data,而不是java.util.Data,所以如果要想将一个java.util.Data类型的内容变为java.sql.Date类型的内容应该使用如下的语句形式:
[java] view plain copy
- String birthday = "2007-08-27" //生日
- java.util.Date temp = null; //声明一个Date对象
- //通过SimpleDataFormat类将一个字符串变为java.util.Date类型
- temp = new SimpleDataFormat("yyyy-MM-dd").parse(birthday);
- //通过java.util.Data取出具体的日期数,并将其变为java.sql.Data类型
- java.sql.Data bir = new java.sql.Data(temp.getTime());
代码如下:
DBHelper.java
[java] view plain copy
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- public class DBHelper {
- public static final String DBDRIVER = "com.mysql.jdbc.Driver";
- public static final String DBURL = "jdbc:mysql://localhost:3306/test";
- public static final String DBUSER = "root";
- public static final String DBPASS = "1111";
- public static Connection getConnection(){
- Connection conn = null;
- try {
- Class.forName(DBDRIVER);
- conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return conn;
- }
- public static void save(){
- Connection con = getConnection();
- String sql = "insert into Info values(?, ?, ?)";
- PreparedStatement psmt = null;
- try {
- psmt = con.prepareStatement(sql);
- psmt.setString(1, "123");
- psmt.setString(2, "12");
- psmt.setInt(3, 3);
- int count = psmt.executeUpdate();
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(psmt != null){
- try {
- psmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if(con != null){
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- public static void delete(){
- Connection con = getConnection();
- String sql = "delete from Info where id=?";
- PreparedStatement psmt = null;
- try {
- psmt = con.prepareStatement(sql);
- psmt.setString(1, "10330070");
- int count = psmt.executeUpdate();
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(psmt != null){
- try {
- psmt.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- if(con != null){
- try {
- con.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- public static void update(){
- Connection con = getConnection();
- String sql = "update Info set age = ? where id = ?";
- PreparedStatement psmt = null;
- try {
- psmt = con.prepareStatement(sql);
- psmt.setInt(1, 22);
- psmt.setString(2, "111313");
- int count = psmt.executeUpdate();
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(psmt != null){
- try {
- psmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if(con != null){
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- public static List<Info> query(){
- List<Info> list = new ArrayList<Info>();
- Connection con = getConnection();
- String sql = "select * from Info";
- PreparedStatement psmt = null;
- ResultSet rs = null;
- try {
- psmt = con.prepareStatement(sql);
- rs = psmt.executeQuery();
- while(rs.next()){ //依次取出数据
- Info info = new Info();
- info.setId(rs.getString("id"));
- info.setPass(rs.getString("pass"));
- info.setAge(rs.getInt("age"));
- System.out.println(info.getId() +"\t" + info.getPass() + "\t" + info.getAge());
- list.add(info);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(rs != null){
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if(psmt != null){
- try {
- psmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if(con != null){
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- return list;
- }
- public static void main(String[] args){
- System.out.println(query().get(0).getAge());
- }
- }
Info.java
[java] view plain copy
- public class Info {
- private String id;
- private String pass;
- private int age;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getPass() {
- return pass;
- }
- public void setPass(String pass) {
- this.pass = pass;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
注:
(1)一般来说,我会习惯使用PreparedStatement对数据库进行操作。PreparedStatement是预编译方式的,在执行SQL语句的时候效率就要高一些,还有就是PreparedStatement可以更好地避免SQL注入问题;在拼接sql语句时,采用PreparedStatement可以有效地减少出错的几率;PreparedStatement是Statement的一个子类,理所当然地PreparedStatement对Statement有一定的扩展,在性能方面有一定的提高。
(2)在开发中是不能直接使用"SELECT * FROM user",因为这样在查询的时候并不能明确的表示要取的内容是什么,所以开发中查询时肯定要明确地写出需要查找的列。
转载于:https://my.oschina.net/u/3787897/blog/1628403
JDBC操作步骤及数据库连接操作相关推荐
- 计算机二级考试有截图工具吗,计算机二级等级考试上机考试操作步骤(带详细操作截图).docx...
计算机等级考试上机考试操作步骤(二级为例) 一.进入考试系统 单击桌面上的"考试系统"图标,进入考试启动界面."考试启动界面"如图1 所示. 图1 二.输入考生 ...
- 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理
Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...
- c语言文件操作步骤是,文件操作的正确流程,C语言文件操作的函数
引言 操作文件的正确操作流程为: 打开文件->读写文件->关闭文件 在对文件进行读写操作之前,需要先打开文件,操作完成之后就要关闭文件!所谓的打开文件,就是需要获取文件的信息,例如文件名. ...
- 三菱M80操作介绍_共享屋:三菱M70 PLC 转M80操作步骤
坚持学习与健身,是对自己最大的投资 文字 | 配图 | 排版 | 共享屋 网站:www.cncshare.com 自15年下半年开始,三菱M80系统将陆续开始贩卖,今天发给大家M80连接PLC 操作. ...
- 网络本科计算机统考操作题,计算机本科统考复习操作题操作步骤.doc
WORD格式 整理分享 范文范例 参考指导 计算机本科统考复习操作题操作步骤 操作题一 1.在考生文件夹中,有一个"testfile.rar"压缩文件,其中包括"test ...
- JDBC简单操作步骤总结
JDBC 操作步骤 1:加载数据库驱动 2:建立与数据库之间的连接 3:发送SQL语句 4:获取查询结果 5:使用完之后,应进行断开连接,减少服务器负担. frist 提前下载相关jar包,添加相应依 ...
- Mybatis框架的操作步骤和细节处理
mybatis.xml的写法: 与spring整合后,数据库连接池,配置别名,mapper文件扫描等都可以直接配置在spring的配置文件中 <?xml version="1.0&qu ...
- 认识JDBC以及数据库增删查操作
1.什么是JDBC 概念:Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序 如何来访问数据库的应用程序接口,提供了诸如查询和 ...
- 快速上手JDBC——Java如何在底层操作数据库
我们为什么学习这个,用一句话概括,JDBC就是用Java语言操作关系型数据库 原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句 同理,以后学习用J ...
最新文章
- 【怎样写代码】工厂三兄弟之抽象工厂模式(三):产品等级结构与产品族
- SpringBatch适配器详解
- debian 安装 php 遇到的问题解决
- 【WebRTC---进阶篇】(五)mediasoup的信令系统
- 紧急不代表重要:管理时间的六个秘密
- openoffice 安装 linux环境
- jsoup爬虫技术精通_精通业务的同时保持技术的3种方法
- C3P0连接池的使用
- 毕业设计 - 基于JAVA的小区/园区停车管理系统(简便易上手)
- 董明珠的“三个谜团”
- 基于51单片机的火灾报警系统仿真
- vivado2020报错:error when launching …vivao.bat…launcher time out“
- 槃星—第1天任务—植物大战僵尸游戏数据修改(Hex Editor Neo)
- Android中绘制圆角矩形图片及任意形状图片
- 人工智能对生活的影响
- 如何使用ChatGPT做一份五一出游攻略?
- 手机里竟然有这么多传感器!终于都搞懂了
- ubuntu安装好matlab后键盘复制粘贴快捷键不能使用 解决办法
- 最详细的App自动化常用的元素审查器
- 欢迎来到WebGPU的世界
热门文章
- java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型
- mysql数据库存储数据的过程_[数据库]MySql存储过程总结
- python debug工具_常用的 Python 调试工具,Python开发必读-乾颐堂
- 小米云能导入到华为云吗_小米11值得买吗?小米11和华为Mate40、iPhone 12相比,哪款性价比最高?...
- mysql有那么多存储引擎_MySQL的多存储引擎架构
- 百练OJ:2964:日历问题
- 2020-08-29
- 2021年7月份学习总结,多套WebFuture的系统部署(简易版)
- 信息系统项目管理师-项目采购管理核心知识点思维脑图
- Input中onbeforepaste的作用