java mysql 操作_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文件夹

d2a2be5e8f10eac5115f3bf01f3babb7.png

2)把刚才下载的驱动放到这个文件里

3)点项目右键选择Build  Path 点Configure Build Path

10db1e34db74c223b13175e8007e71e0.png

选择Libraries   然后Add JARs  把lib文件下的驱动放进去.

下面就可以编写代码了;

首先创建一个DBHerpel类:代码如下:

packagecom.gr.DBHerpel;import java.sql.*; //导包

/*** ClassName: DBHerpel

* @Description: TODO 数据库辅助类

*@author情绪i*/

public classDBHerpel {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*@returnConnection 连接数据的对象

*@author情绪i*/

public staticConnection 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("连接数据库成功!!!");//返回连接对象

returnConn;

}catch(SQLException e) {//TODO: handle exception

e.printStackTrace();return null;

}

}

}

这里连接的是我MySchool的数据库   数据库的表结构如下:

67bc75ee7473c7f98f51b1656b21833a.png

数据表里有user pwd 两个字段;下面通过一个案例实现查询:

"查"

代码如下:

packagecom.gr.visitServer;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importcom.gr.DBHerpel.DBHerpel;public classVisitMySql {//连接对象

privateConnection conn;//传递sql语句

privateStatement stt;//结果集

privateResultSet set;//查询

public voidSelect() {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 classTest {public static voidmain(String[] args){//实例化对象

VisitMySql vs = newVisitMySql();//调用查询方法

vs.Select();}

}

上面的代码是查询数据库Login表里的用户的账号和密码,用Connection接口的createStatement()方法获得Statement对象传递Sql语句,用它的ExecuteQuery()方法获取单个ResultSet对象.

下面向数据库添加数据:

"增"

在VisitMySql类中添加Add方法:代码如下:

// 使用Statement接口的executeUpdate()方法向数据库添加数据

public voidAdd(){try{//获取连接

conn =DBHerpel.getConnection();if(conn==null)return;//获取用户输入的账号和密码

Scanner input = newScanner(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 voidAdd2() {try{//获取连接

conn =DBHerpel.getConnection();if (conn == null)return;//获取用户输入

System.out.print("请输入用户名:");

Scanner input= newScanner(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 voidDelete(){try{//获取连接

conn =DBHerpel.getConnection();if(conn==null)return;//提示用户输入要删除的用户

System.out.print("请输入删除的用户:");

Scanner input= newScanner(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 voidUpdate(){try{//获取连接

conn =DBHerpel.getConnection();if(conn==null)return;//用户输入要修改的账户

System.out.print("请输入用户名:");

Scanner input= newScanner(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数据库的"增删改查"功能的具体实现,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值