Java操作数据库实现"增删改查"(JDBC)
本文主要讲解JDBC操作数据库-实现对MySql数据库的"增删改查"的具体操作步骤
如果需要访问数据库,就必须加载数据库驱动,这个驱动只是在程序第一次运行的时候加载一次,百度连接Mysql数据库的连接器进行下载。
1.新建一个项目,创建lib文件夹
2.把刚才下载的驱动放到这个文件里
3.直接右键lib点add to liblriary
下面就可以编写代码了;
首先创建一个DBHerpel类:代码如下:
import java.sql.*; //导包
/**
* ClassName: DBHerpel
* @Description: TODO 数据库辅助类
* @author 强国
*/
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 两个字段;下面通过一个案例实现查询:
"查"
代码如下:
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类代码如下:
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方法:代码如下:
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语句,
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数据库的"增删改查"功能的具体实现,