Java操作数据库实现"增删改查"
本文主要讲解JDBC操作数据库 主要实现对MySql数据库的"增删改查"
综合概述:
JDBC的常用类和接口
一 DriverManager类
DriverManage类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动之间建立连接,DriverManager类中的方法都是静态方法,下列是DriverManager的常用方法:
getConnection(String URL,String user,String PassWord) 指定3个参数,分别是连接地址,用户名 和密码 类连接数据库
setLoginTimeout() 获取驱动程序视图登陆到某一数据库可以等待的最长时间,以秒为单位,
Println(String message) 将一条信息打印到当前JDBC日志流中
二 Connection 接口
COnnection 接口代表与特定的数据库的连接,要对数据库中的数据进行操作,首先要获取数据库连接,Connection实就像在应用程序与数据库之间开通了一条通道.可以通过DriverManager类的getConnection()方法获取Connection的实例.Connection接口的常用方法如下:
createStatement() 创建Statement对象 PrepareStatement() 创建预处理对象PrepareStatement isReadOnly() 查看当前Connection对象的读取模式是否是只读形式 SetReadOnly() 设置当前Connection对象的读写模式,默认是非只读模式 close() 立即释放此Connection对象的数据库和JDBC资源,而不是自动释放
三 Statement 接口
Statement接口用于创建向数据库中传递SQL语句的对象, 常用方法如下:
execute(String sql) 执行静态的SELECT语句 可能返回多个数据集
executeQuery(String sql) 执行给定的Sql语句 返回单个ResultSet对象
clearBatch() 清空此Statement对象的当前SQL命令列表
executeUpdate() 执行指定的SQL语句 该语句可以为INSERT UPDATE DELETE语句
close() 释放Statement实例占用的数据库和JDBC资源
四 PreparedStatement 接口
PreparedStatement接口继承Statement,用于执行动态的SQL语句 ,通过PreparedStatement实例执行的SQL语句,将被编译并保存到PreparedStatement实例中,从而可以重复的执行该SQL语句 . preparedStatement接口的常用方法:
execute( ) 在此PreparedStatement对象执行SQL语句,该语句可以是任何类型的SQL语句
executeQuery( ) 在此preparedStatement对象中执行Sql查询语句,返回为查询数据集的对象
executeUpdate() 在此preparedStatement对象执行Sql语句,该SQL语句必须是一个INSERT UPDATE DELETE语句,或者是没有返回值得DLL语句
setbyte(int Pindex byte by) 将参数Pindex位置上设置为给定的byte参数by
setString(int Pindex String str)将参数Pindex位置上设置为给定的String参数值str
setDouble(int pindex Double dou)将参数Pindex位置上设置为给定的Double参数值dou
setInt(int Pindex int i) 将参数Pindex位置上设置为给定的int参数值i
setObject(int PIndex Ocject obj)将参数Pindex位置上设置为给定的Object参数值Obj
五 ResultSet 接口
ResultSet接口类似于一个临时的数据表,用来暂时存放数据库查询操作获取到的数据集 它的常用方法如下:
getint() 以int形式获取当前行指定的列
getFloat() 以Float形式获取当前行指定的列
getDate() 以Date形式获取当前行指定的列
getBoolean() 以Boolean形式获取当前行指定的列
getString() 以String形式获取当前行指定的列
getObject() 以Object形式获取当前行指定的列
next( ) 将指针向下移一行
updateInt() 用int值更新指定列
updateFloat()用float值更新指定列
updateLong() 用指定的long值更新指定的列
updateString()用指定的"String"值更新指定列
updateObejct() 用object值更新指定的列
updatenull() 将指定的列值修改为null
updateDate() 用指定的Date值更新指定的列
updateDouble() 用指定的DOuble值更新指定的列
通过JDBC操作数据库
如果需要访问数据库,就必须加载数据库驱动,这个驱动只是在程序第一次运行的时候加载一次,下面将我们的连接Mysql数据库的连接器下载:链接:http://pan.baidu.com/s/1dE42McT 密码:emqo
1):新建一个项目,创建lib文件夹
2)把刚才下载的驱动放到这个文件里
3)点项目右键选择Build Path 点Configure Build Path
选择Libraries 然后Add JARs 把lib文件下的驱动放进去.
下面就可以编写代码了;
首先创建一个DBHerpel类:代码如下:
package com.gr.DBHerpel; import java.sql.*; //导包 /**
* ClassName: DBHerpel
* @Description: TODO 数据库辅助类
* @author 情绪i
*/
public class DBHerpel { private static Connection Conn; // 数据库连接对象 // 数据库连接地址
private static String URL = "jdbc:mysql://localhost:3306/myschool?characterEncoding=utf8&useSSL=true"; // 数据库的用户名
private static String UserName = "root";
// 数据库的密码
private static String Password = "1234"; /**
* * @Description: TODO 获取访问数据库的Connection对象
* @param @return
* @return Connection 连接数据的对象
* @author 情绪i
*/
public static Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); // 加载驱动 System.out.println("加载驱动成功!!!");
} catch (ClassNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
} try { //通过DriverManager类的getConenction方法指定三个参数,连接数据库
Conn = DriverManager.getConnection(URL, UserName, Password);
System.out.println("连接数据库成功!!!"); //返回连接对象
return Conn; } catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
} }
这里连接的是我MySchool的数据库 数据库的表结构如下:
数据表里有user pwd 两个字段;下面通过一个案例实现查询:
"查"
代码如下:
package com.gr.visitServer; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement; import com.gr.DBHerpel.DBHerpel; public class VisitMySql { // 连接对象
private Connection conn;
// 传递sql语句
private Statement stt;
// 结果集
private ResultSet set; // 查询
public void Select() {
try {
// 获取连接
conn = DBHerpel.getConnection();
if (conn == null)
return;
// 定义sql语句
String Sql = "select * from login";
// 执行sql语句
stt = conn.createStatement();
// 返回结果集
set = stt.executeQuery(Sql);
// 获取数据
while (set.next()) { System.out.println("用户名:" + set.getString(1) + "\t密码:"
+ set.getString(2)); } } catch (Exception e) {
e.printStackTrace();
} finally { // 释放资源
try {
set.close();
conn.close();
} catch (Exception e2) {
// TODO: handle exception
} }
} }
然后新建一个包Test编写Test类代码如下:
package com.gr.Test; import com.gr.visitServer.VisitMySql; public class Test {
public static void main(String[] args){ //实例化对象
VisitMySql vs = new VisitMySql();
//调用查询方法
vs.Select(); } }
上面的代码是查询数据库Login表里的用户的账号和密码,用Connection接口的createStatement()方法获得Statement对象传递Sql语句,用它的ExecuteQuery()方法获取单个ResultSet对象.
下面向数据库添加数据:
"增"
在VisitMySql类中添加Add方法:代码如下:
// 使用Statement接口的executeUpdate()方法向数据库添加数据
public void Add(){ try {
//获取连接
conn = DBHerpel.getConnection();
if(conn==null)
return;
//获取用户输入的账号和密码
Scanner input = new Scanner(System.in);
System.out.print("请输入用户名:");
int user = input.nextInt();
System.out.print("请输入密码:");
String pwd = input.next();
//定义sql语句
String sql = "insert into login values("+user+" , '"+pwd+"');";
//获取Statement对象
stt = conn.createStatement();
//执行sql语句
stt.executeUpdate(sql); } catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源
try { conn.close(); } catch (Exception e2) {} } }
同样也是获取Connection接口的createStatement()方法获取Statement的对象,用Statement对象的executeUpdate()方法来执行INSERT语句,最后在Test类调用Add()方法
下面使用PreparedStatement接口中的executeUpdate()方法来执行INSERT语句,
// 使用PreparedStatement接口的executeUpdate()方法向数据库添加一条数据
public void Add2() { try {
// 获取连接
conn = DBHerpel.getConnection();
if (conn == null)
return; // 获取用户输入
System.out.print("请输入用户名:");
Scanner input = new Scanner(System.in);
int user = input.nextInt();
System.out.print("请输入密码:");
String pwd = input.next(); // 定义sql语句
String AddSQL = "INSERT INTO login VALUES (?,?);"; // 创建一个Statement对象
PreparedStatement ps = conn.prepareStatement(AddSQL); //向sql语句的第一个问号添加数据
ps.setInt(1, user);
//向sql语句的第二个问号添加数据
ps.setString(2,pwd);
// 执行sql语句
ps.executeUpdate(); } catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close(); } catch (Exception e2) {
// TODO: handle exception
} }
}
最后在Test类测试Add2()方法,,这里Sql语句中用两个问号代表要添加的用户名和密码,根据上面PreparedStatement接口的常用方法,setint() setString() 方法来指定添加的数据.
"删"
删除数据也是很常用的技术,同样可以使用Statement接口中的executeUpdate()方法来实现 代码如下:
//使用Statement接口的executeUpdate()方法实现从数据库删除数据
public void Delete(){
try { //获取连接
conn = DBHerpel.getConnection();
if(conn==null)
return; //提示用户输入要删除的用户
System.out.print("请输入删除的用户:");
Scanner input = new Scanner(System.in);
int user = input.nextInt(); //定义sql语句
String deleteSql = "DELETE FROM login WHERE user="+user+";";
//获取Statement对象
stt = conn.createStatement();
//执行sql语句
stt.executeUpdate(deleteSql); } catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源
try {
conn.close(); } catch (Exception e2) {} }
}
"改"
对数据的修改也是日常代码中常见的技术. 可以使用Statement接口中executeUpdate()方法来实现,也可以用PreparedStatement接口的executeUpdate()方法来实现 具体代码如下:
//使用PreparedStatement接口中的executeUpdate()方法实现修改数据
public void Update(){ try {
//获取连接
conn = DBHerpel.getConnection();
if(conn==null)
return; //用户输入要修改的账户
System.out.print("请输入用户名:");
Scanner input = new Scanner(System.in);
int user = input.nextInt();
//提示用户输入新的密码
System.out.print("请输入新的密码:");
String NewPwd = input.next();
//定义Sql语句
String UpdateSql = "UPDATE login SET pwd = '"+NewPwd+"' WHERE user = "+user+";";
//创建Statement对象
PreparedStatement ps = conn.prepareStatement(UpdateSql);
//执行sql语句
ps.executeUpdate();
} catch (SQLException e) { e.printStackTrace();
}finally{
//释放资源
try {
conn.close();
} catch (Exception e2) {} }
}
以上是对Mysql数据库的"增删改查"功能的具体实现,
Java操作数据库实现"增删改查"的更多相关文章
- java操作数据库:增删改查
不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...
- 9.5Django操作数据库的增删改查
2018-9-5 18:10:52 先贴上笔记 day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n ...
- java web数据库的增删改查详细
本次课上实验是完成数据库的增删改查. 包括增加用户信息.删除用户信息.多条件查找用户信息.修改用户信息(主要是复选框单选框等的相关操作.) 下面下看一下各个界面的样子. 总页面:显示全部页面:增加页面 ...
- python测试开发django-13.操作数据库(增删改查)
前言 django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢? 本篇详细讲解django操作mysql数 ...
- Java数据库连接——JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- c#操作数据库的增删改查语句及DataGridView简单使用
下面是要用户名和密码连接数据库的操作: 一.定义连接字符串,用来链接SQL Server string str_con = "server=.(服务器名称一般为 . );database=W ...
- C#通过窗体应用程序操作数据库(增删改查)
为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...
- datagridview数据绑定操作数据库实现增删改查
DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...
随机推荐
- C#中DateTime的各种操作
C#时间戳与日期互转 /// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name="timeSta ...
- Windows c++程序的基本结构
Windows c++程序的基本结构 1.一个完整的Windows应用程序通常由五种类型的文件组成 C语言源程序文件 头文件 模块定义文件 资源描述文件 项目文件 2.Windows应用程序构成基本框 ...
- Linux下删除文件系统空间不释放的问题
删除了Linux下的一个文件,但是系统空间并没有被释放. 如下:/home/hadmin/data/hadoop 使用了1.3T的空间,但是实际只使用了600多G 原因是我删除了一个600多G的文件, ...
- RabbitMQ的一些说明
下载安装包后,运行会提示你下再ErLang环境,根据提示下载安装就可以了 RabbitMQ 自己的插件包中带一 个WebUI的管理工具,在RabbitMQ安装目录(bin)下运行 rabbitmq-p ...
- 8 求s=a+aa+aaa+aaaa+aa...a的值
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. * 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制.程序分析:关键是计算出每一项的 ...
- 解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网
最近在VMware虚拟机里玩Centos,装好后发现上不了网.经过一番艰辛的折腾,终于找到出解决问题的方法了.最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通.方法四步走: ...
- [转]分布式中使用Redis实现Session共享(二)
本文转自:http://www.cnblogs.com/yanweidie/p/4678095.html 上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见 ...
- Struts+Spring+Hibernate整合
这段笔记三两年前写的,一直因为一些琐事,或者搞忘记了,没有发.今天偶然翻出了它,就和大家一起分享下吧. 1.导入jar包 Struts的jar包: Spring的jar包: Hibernate的jar ...
- C#学习(1):类型约束
where T : class泛型类型约束 类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型 where T : class T必须是一 ...
- 毕业回馈—89C51之GPIO使用
STC89C51系列单片机共有如下几类GPIO口: (1)P0.0-P0.7: 对应DIP40封装的39-32号引脚:P0口既可以作为输入/输出GPIO口,也可以作为地址/数据复用总线使用. a)P0 ...