Java-jdbc操作数据库
如果需要访问数据库,首先要加载数据库驱动,数据库驱动只需在第一次访问数据库时加载一次。然后在每次访问数据库时创建一个Connection实例,获取数据连接,这样就可以执行操作数据库的SQL语句。最后在完成数据库操作时,释放与数据库的连接。
一、配置程序——让我们程序能找到数据库的驱动jar包
1.把.jar文件复制到项目中去。
2.在eclipse项目右击“构建路径”--“配置构建路径”--“库”--“添加外部jar”--找到数据库的驱动jar包--点击确定。会在左侧包资源管理器中出现“引用的库”,在里面就能找到我们刚才导入的jar包。这个包在这里使用的是Mysql的,这里分享一个下载地址https://pan.baidu.com/s/1bSEBIQ。




二、做个数据库和表

三、写我们的程序来调用驱动包的类,对数据进行操作。
//1.加载数据访问驱动
Class.forName("com.mysql.jdbc.Driver");
Mysql中的加载驱动位置是在引用的库中的com.mysql.jdbc下的Driver。

//2.连接到数据"库"上去
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK","root","");
这里的jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK是代表Mysql的Url地址。
//3.构建执行SQL命令.....
Statement state = conn.createStatement();
state.executeUpdate("增删改的sql语句");
state.executeQuery("查询的sql语句");
conn.close();
JDBC的常用类和接口:
1.DriverManager类
DriverManager类用来管理数据库中的所有驱动程序,是JDBC的管理层。作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。
| 方法 | 说明 |
| getConnection(String url, String user, String password) | 指定三个入口参数,一次是连接数据库的URL、用户名、密码,来获取与数据库的连接。 |
2.Connection接口
Connection接口代表与特定的数据库的连接。要对数据表中的数据进行操作。首先要获取数据库连接。Connection实例就像在用用程序和数据库之间开辟的一条通道。
| 方法 | 说明 |
| creatStatement() | 创建Statement对象 |
| prepareStatement() | 创建预处理的prepareStatement对象 |
| commit() | 使所有上一次提交、回滚后进行的更改成为持久更改,并释放Connection对象当前持有的所有数据库锁 |
| roolback() | 取消在当前事务中进行的所有更改,并释放此Connection对象当前持有的所有数据库锁 |
| close() | 立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放 |
3.Statement接口
Statement接口用于创建向数据库中传递SQL语句的对象,该接口提供了一些方法可以实现对数据库的常用操作。
| 方法 | 说明 |
| executeQuery() | 执行给定的SQL语句,该语句返回单个ResultSet对象 |
| executeUpdate() | 执行给定的SQL语句, 该语句为insert into,update或delete语句 |
| close() | 释放Statement实例占用的数据库和JDBC资源 |
4.PreparedStatement接口
PreparedStatement接口继承Statement,用于执行动态的SQL语句,通过PreparedStatement实例执行的SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复地执行该SQL语句。
| 方法 | 说明 |
| executeQuery() | 在此PreparedStatement对象中执行SQL查询语句,返回结果为查询结果集ResultSet对象 |
| executeUpdate() | 在此PreparedStatement对象中执行SQL语句,该SQl语句必须是一个insert、update或者delete语句,或者是没有返回值的DDl语句 |
| setObject(int pIndex,Object o) | 将参数pIndex位置上设置为给定的Object型参数值 |
| setString(int pIndex,String str) |
将参数pIndex位置上设置为给定的String型参数值 |
5.ResultSet接口
ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。
| 方法 | 说明 |
| getString() | 以String形式获取ResultSet对象的当前行的指定列值。如列值是null,则返回null。 |
| next() | 将指针向下移一行 |
| updateString() | 用指定的String值更新列 |
在这里,常用方法没有列举全,getInt(),getFloat(),getDate(),getBoolean(),getObject()都类似于getString()。同理,updateInt(),updateFloat(),updateObject(),updateNull,updateDate(),updateDouble()也是类似于updateString()。也同样适用与4.preparedStatement中的setString这一类。
举个增加数据的栗子:
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
System.out.print("学号:");
String xh =sc.nextLine();
System.out.print("姓名:");
String xm =sc.nextLine();
System.out.print("学校: ");
String xx =sc.nextLine();
// 加载数据访问驱动
Class.forName("com.mysql.jdbc.Driver");
// 连接到数据“库”上去
java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK", "root", "");
//构建SQL命令
Statement state =conn.createStatement();
String sql = "insert into xs values('"+xh+"','"+xm+"','"+xx+"')";
state.executeUpdate(sql);
//state.executeUpdate(sql); //增删改
//state.executeQuery(sql); //查询
conn.close();
}
输入为:
学号:110
姓名:王十
学校: 一中
显示为:

下面再是一个查询数据的例子:
现有一个info表和nation表


现要把info表中的内容都输出出来,性别以男女区分,民族以nation表中的name显示,birthday用年月日显示:
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK","root","");
String sql ="select * from info";
Statement state = conn.createStatement();
ResultSet rs = state.executeQuery(sql);
while(rs.next()){
System.out.print(rs.getString(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getBoolean(3)?"男\t":"女\t");
System.out.print(MinZu(rs.getString(4))+"\t");
System.out.print(RiQi(rs.getDate(5))+"\n");
}
conn.close();
}
public static String MinZu(String mz) throws Exception{
String mzmc="";
Class.forName("com.mysql.jdbc.Driver");
Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=gbk","root","");
String sql = "select * from nation where code='"+mz+"'";
Statement state = conn.createStatement();
ResultSet rs = state.executeQuery(sql);
while(rs.next()){
mzmc=rs.getString(2);
}
conn.close();
return mzmc;
}
public static String RiQi(Date date){
SimpleDateFormat simple =new SimpleDateFormat("yyyy年MM月dd日");
return simple.format(date);
}
输出结果为:
p001 胡军 男 满族 1985年08月09日
p002 周丹 女 汉族 1984年04月17日
p003 吴倩 女 苗族 1981年10月29日
p004 唐墨 男 汉族 1983年02月25日
Java-jdbc操作数据库的更多相关文章
- java jdbc操作数据库通用代码
1.准备工作 1> 新建一个配置文件,名为jdbc.properties将其放入src中 2>在项目中导入jdbc驱动,注意连接不同的数据库,所用到的驱动是不一样的,这些在网上都能找到 具 ...
- Java jdbc 操作数据库详解
原文地址https://www.cnblogs.com/huguodong/p/5910859.html JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
- Java基础之原生JDBC操作数据库
前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- JDBC操作数据库的三种方式比较
JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- Spring入门(十五):使用Spring JDBC操作数据库
在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...
随机推荐
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- ASP.NET Core 之 Identity 入门(三)
前言 在上一篇文章中,我们学习了 CookieAuthentication 中间件,本篇的话主要看一下 Identity 本身. 最早2005年 ASP.NET 2.0 的时候开始, Web 应用程序 ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
- app开发外包注意事项,2017最新资讯
我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...
- ExtJS 4.2 业务开发(一)主页搭建
本篇开始搭建一个ExtJS 4.2单页面应用, 这里先介绍主页的搭建,内容包括:主页结构说明.扩展功能等方面. 目录 1. 主页结构说明 2. 扩展功能 3. 在线演示 1. 主页结构说明 1.1 主 ...
- 【原】AFNetworking源码阅读(一)
[原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...
- 在你的ASP.NET MVC中使用查找功能
在程序中,使用查找功能是少之不了.今天在ASP.NET环境下演示一回. 在cshtml视图中,有三个文本框,让用户输入关键词,然后点击最右连的“搜索”铵钮,如果有结果将显示于下面. Html: 表格放 ...
- 【架构设计】分布式文件系统 FastDFS的原理和安装使用
本文地址 分享提纲: 1.概述 2. 原理 3. 安装 4. 使用 5. 参考文档 1. 概述 1.1)[常见文件系统] Google了一下,流行的开源分布式文件系统有很多,介绍如下: -- mo ...
- arcgis api for js入门开发系列七图层控制(含源代码)
上一篇实现了demo的地图分屏对比模块,本篇新增图层控制模块,截图如下(源代码见文章底部): 图层控制模块实现的思路如下: 1.在地图配置文件map.config.js里面配置图层目录树节点信息,作为 ...