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数据库