上次我们已经谈到如何利用JDBC连接MySQL数据库,详见基于JDBC的mysql数据库连接。今天我们在此基础上讨论对MySQL数据库的增、删、改、查操作。
首先,在MySql数据库中新建一张表studenttable,就建在test数据库下。
建立studenttable的sql指令如下:
CREATE TABLE 'studenttable' (
'UserName' char(12) NOT NULL COMMENT '用户名',
'StudentID' int(12) NOT NULL,
'ClassName' char(12) NOT NULL,
'Score' float NOT NULL,
PRIMARY KEY ('StudentID')
)
可以看到,创建的基本表studenttable包含4条属性,分别是UserName、StudentID、ClassName和Score。这是一个最基本的学生成绩表。在这张表中预先添加如下数据,供后续操作使用:
上述建立基本表的工作完成后,在正式编程对数据库操作前,需要先对上述基本表进行建模–用一个类来表示基本表的一些属性,在这里我用的是User类,包含4个属性:UserName、StudentID、ClassName和Score分别与基本表属性相对应。
User类建立如下:
package JDBC_test;
public class User {
private String UserName;//用户名
private String ClassName;//课程名
private float Score;//课程分数
private int StudentID;//学号
public User(String userName, String className, float score, int studentID) {
super();
UserName = userName;
ClassName = className;
Score = score;
StudentID = studentID;
}
public String getUserName() {
return UserName;
}
public String getClassName() {
return ClassName;
}
public float getScore() {
return Score;
}
public int getStudentID() {
return StudentID;
}
public void printf() {
System.out.println("序号为"+this.StudentID+"的学生"+this.UserName+"的"+this.ClassName+"成绩是:"+this.Score);
}
}
上述准备工作都完成后,就可已进行编程对基本表进行操作了。
1.数据增加的sql结构化语言如下:
INSERT INTO studenttable (UserName,StudentID,ClassName,Score)
VALUES('user.getUserName()','user.getStudentID()','user.getClassName()','user.getScore()')
2.数据删除的sql结构化语言如下:
DELETE FROM studenttable WHERE UserName = 'username'
3.数据修改的sql结构化语言如下:
UPDATE studenttable SET Score = 30, ClassName = '英语1'
WHERE UserName = 'username'
4.数据查询的sql结构化语言如下:
SELECT * FROM studenttable WHERE UserName ='username'
利用上述sql结构化查询语句,将其内嵌到java程序中即可完成对数据库的操作。
具体代码实现如下所示:
package JDBC_test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Operate_DB {
/**
* 查询功能(按名字查找)
* @param con
* @param username
* @throws Exception
*/
public void ReadData(Connection con, String username)throws Exception {
User user = null;
boolean flag = true;
Statement stmt = con.createStatement();
String sql = "SELECT * FROM studenttable WHERE UserName ='"+username+"'";
ResultSet rst = stmt.executeQuery(sql);
while(rst.next()) {
flag = false;
user = new User(rst.getString("UserName"), rst.getString("ClassName"),
rst.getFloat("Score"),rst.getInt("StudentID"));
user.printf();
}
if(flag)
System.out.println("此表中不存在名称为"+username+"的记录!");
stmt.close();
rst.close();
}
/**
* 查询功能(按学号查找)
* @param con
* @param studentid
* @throws Exception
*/
public void ReadData(Connection con, int studentid)throws Exception {
User user = null;
boolean flag = true;
Statement stmt = con.createStatement();
String sql = "SELECT * FROM studenttable WHERE StudentID ='"+studentid+"'";
ResultSet rst = stmt.executeQuery(sql);
while(rst.next()) {
flag = false;
user = new User(rst.getString("UserName"), rst.getString("ClassName"),
rst.getFloat("Score"),rst.getInt("StudentID"));
user.printf();
}
if(flag)
System.out.println("此表中不存在学号为"+studentid+"的记录!");
stmt.close();
rst.close();
}
/**
* 添加功能
* @param con
* @param user
* @throws Exception
*/
public void InertData(Connection con, User user)throws Exception {
Statement stmt = con.createStatement();
String sql = "INSERT INTO studenttable (UserName,StudentID,ClassName,Score)"
+ "VALUES('"+user.getUserName()+"','"+user.getStudentID()+"','"+user.getClassName()+"','"
+user.getScore()+"')";
stmt.executeUpdate(sql);
System.out.println("新增的一条记录为:");
user.printf();
stmt.close();
}
/**
* 删除功能(按名称删除)
* @param con
* @param user
*/
public void DeleteData(Connection con, String username)throws Exception {
Statement stmt = con.createStatement();
String sql = "DELETE FROM studenttable WHERE UserName = '"+username+"'";
int cout = stmt.executeUpdate(sql);
if(cout == 0)
System.out.println("此表中不存在名称为"+username+"的记录!删除失败!");
stmt.close();
}
/**
* 删除功能(按学号删除)
* @param con
* @param studentid
* @throws Exception
*/
public void DeleteData(Connection con,int studentid)throws Exception {
Statement stmt = con.createStatement();
String sql = "DELETE FROM studenttable WHERE StudentID = '"+studentid+"'";
int cout = stmt.executeUpdate(sql);
if(cout == 0)
System.out.println("此表中不存在学号为"+studentid+"的记录!删除失败!");
else
System.out.println("删除成功!");
stmt.close();
}
/**
* 修改功能(按学号修改)
* @param con
* @param studentid
* @throws Exception
*/
public void UpdateData(Connection con,int studentid)throws Exception {
Statement stmt = con.createStatement();
String sql = "UPDATE studenttable SET Score = 100, ClassName = '英语' "
+ "WHERE StudentID = '"+studentid+"'";
int cout = stmt.executeUpdate(sql);
if(cout == 0)
System.out.println("此表中不存在学号为"+studentid+"的记录!修改失败!");
else
System.out.println("修改成功!");
stmt.close();
}
/**
* 修改功能(按名称修改)
* @param con
* @param studentid
* @throws Exception
*/
public void UpdateData(Connection con,String username)throws Exception {
Statement stmt = con.createStatement();
String sql = "UPDATE studenttable SET Score = 30, ClassName = '英语1' "
+ "WHERE UserName = '"+username+"'";
int cout = stmt.executeUpdate(sql);
if(cout == 0)
System.out.println("此表中不存在名称为"+username+"的记录!修改失败!");
else
System.out.println("修改成功!");
stmt.close();
}
public static void main(String[] args)throws Exception {
DbUtil dbutil = new DbUtil();
Connection con = dbutil.getcon();//获取数据库连接
Operate_DB test = new Operate_DB();
System.out.println("数据库操作--数据增加");
test.InertData(con, new User("brooke", "爱情心理学", 99, 10));
System.out.println("数据库操作--数据删除");
test.DeleteData(con, 10);
System.out.println("数据库操作--数据修改");
test.UpdateData(con, "小华");
System.out.println("数据库操作--数据查询");
test.ReadData(con, "小华");
}
}
上述代码运行结果如下:
对于数据库的操作还有更加深入的,欢迎大家给小编推荐新的数据库使用技巧,也欢迎大家对程序提出疑问或者建议。