Mysql教程

19.4本章实例

本节将使用Java语言访问MySQL数据库。本节要求的操作如下。

1.编写DB.java类

(1)通过DB.java类连接MySQL数据库。然后操作test数据库下的score表。

(2)在DB.java类中查询score表中的所有记录。SELECT语句如下:

SELECT * FROM score;

(3)向score表中插入一条新记录,INSERT语句如下:

INSERT INTO score VALUES(25, 905,'English',95);

(4)更新id为25的记录,将grade字段的值设置为80.UPDATE语句如下:

UPDATE score SET grade=80 WHERE id=25;

(5)关闭打开的所有数据库对象。

2.编写DB_back_load类

(1)该类中定义backup()方法,通过backup()方法备份test数据库。


(2)该类中定义load()方法,通过load()方法还原test数据库。

本实例的执行步骤如下:

1. DB.java类的代码

使用executeQuery()函数来执行SELECT语句,使用executeUpdate()函数来执行INSERT语句和UPDATE语句。下面是DB.java的代码:

import java.sql.Connection;//添加 Connection 类
import java.sql.DriverManager;//添加 0〜6^3阳96「类
import java.sql.ResultSet;//添加只651^361类
import java.sql.SQLException;//添加 SQLException 类
import java.sql.Statement;//添加 Statement 类
//下面是DB类的内容,下面将执行SELECT语句.INSERT语句和UPDATE语句.
public class DB {
public static void main(String argsQ){//下面是mian()函数的内容
//将JDBC的协议、主机名、端口号、需要连接的数据库等信息赋值给字符串变量url
String url="jdbc:mysql://localhost:3306/test";
String user="root";	//登录MySQL数据库的用户名
String passwd="huang";//登录密码
String sql1="SELECT * FROM score";//获取 SELECT 语句
String sql2="INSERT INTO score VALUES(25,905,'English',95)";//获取INSERT语句
String sql3="UPDATE score SET grade=80 WHERE id=25"; //获取UPDATE语句
try{
Class.forName("com.mysql.jdbc.Driver");	//指定 MySQL 驱动
//使用JDBC协议信息、数据库用户名、用户密码连接MySQL数据库
Connection con = DriverManager.getConnection(url, user, passwd);
System.out.print("连接数据库服务器成功");	//输出连接成功的信息
Statement stat=con.createStatement();//创建 Statement 对象
ResultSet rs=stat.executeQuery(sql1);//执行 SELECT 语句
//SELECT语句的查询结果存储在rs中,按顺序读取rs中的每一条记录
while(rs.next()){
int id=rs.getlnt("id");	//读取 id 字段的数据
int stu_id=rs.getlnt("stu_id");	//读取stu_id字段的数据
String course=rs.getString("c_name");//读取c_name字段的数据
int grade=rs.getlnt("grade");//读取grade字段的数据
System.out.println(i d+" "+stu_id+" "+course+" "+grade);
}
//下面通过executeUpdate()方法执行INSERT语句,执行完成后返回插入的记录数
int i=stat.executeUpdate(sql2);	//返回插入的记录数
if(i!=0){
System.out.println("INSERT语句执行成功");//输出插入成功的信息
}
//下面通过executeUpdate()方法执行UPDATE语句,执行完成后返回更新的记录数
int j=stat.executeUpdate(sql3);	//返回更新的记录数
System.out.println("UPDATE语句执行成功");	//输出更新成功的信息
}
//如果ResultSet对象不为空,那么调用close()方法关闭ResultSet对象
if(rs!=null){
rs.close();
rs=null;
}
//如果Statement对象不为空,那么调用close()方法关闭Statement对象
if(stat!=null){
stat.close();
stat=null;
}
//如果Connection对象不为空,那么调用close()方法关闭Connection对象
if(con!=null){
con.close();
con=null;
}
} catch (ClassNotFoundException e) {	//捕获没有找到驱动的异常
System.out.println("没有找到MySQL驱动");
} catch (SQLException e) {	//捕获连接失败的异常
System.out.println("连接数据库服务器失败");

代码执行完后,使用close()函数关闭了所有的对象。同时,还抛出了两个异常。forName()函数需要抛出ClassNotFoundException异常。Connection对象滞要抛出SQLException异常。

(2)DB_backup_load.java类

使用exec()方法来执行mysqldump命令和mysql命令。下面足DB_deal.java的代码:

import java.io.IOException;	//添加 IOException 类
public class DB_backup_load {
private static String str=null;	//定义字符串变量 str
//下面的backup()方法用来备份test数据库
public static void backup(){
//Java中通过调用mysqldump命令来备份MySQL数据库
//格式为"mysqldump -u usemame -pPassword -opt database_name > dir/backup_name.sql"
str="mysqldump -u root -phuang --opt test > c:/test.sql";
try{
//使用exce()函数来执行mysqldump命令
//因为该代码是在Windows操作系统下运行,因此需要加上"cmd \c"
Runtime rt=Runtime.getRuntime();//创建 Runtime 对象
rt.exec("cmd/c"+str);//使用exce()方法调用外部命令
System.out.println("备份成功");
}
catch (IOException e) {//捕获异常信息
e.printStackTrace();
System.out.println("备份失败");
}
//下面的load方法用来还原MySQL数据库
public static void load(//Java中通过调用mysql命令来还原MySQL数据库
//格式为"mysql-u usemame -pPassword database_name < dir/backup_name.sql"
str="mysql -u root -phuang test < c:/test.sql";
try{
//使用exce()函数来执行mysqldump命令
//因为该代码是在Windows操作系统下运行,因此需要加上”cmd \c"
Runtime ri=Runtime.getRuntime();
rt.exec("cmd /c"+sfr);
System.out.println("还原成功");
} catch (IOException e) {
e.printStackT race();
System.out.println("还原失败");
}
}
//下面是main()函数
public static void main(String args[]{
//创建DB_back_load()类的对象
DB_backup_load db=new DB_backup_load();
//调用backup()函数来备份数据库
db.backup();
//调用load()函数来还原数据库
db.load();

通过上面的代码可以备份和还原test数据库

关注微信获取最新动态