java.sql包中存在DriverManager类,Connection接口,Statement接口和ResultSet接口。类和接口作用如下:

DriverManager:主要用于管理驱动程序和连接数据库;

Connection接口:主要用于管理建立好的数据库连接;

Statement接口:主要用于执行SQL语句;

ResultSet接口:主要用于存储数据库返回的记录。

  1. 1.      连接MYSQL数据库

 

首先使用java.lang.Class类中forName( )方法指定JDBC驱动的类型。forname()方法指定MYSQL驱动的语句如下:

Class.forName(“com.mysql.jdbc.Driver”);

使用forName()方法需要抛出ClassNotFountException异常。

 

指定了MYSQL驱动程序后,就可以使用DriverManager类和Connection接口来连接数据库。在DriverManager类中提供了getConnection()方法,此方法有三参数,分别为:url,user,password。

 

url:指定JDBC的数据源。基本形式是“jdbc:mysql:数据源”。数据源中包括了IP或主机名,端口号和数据库名。例:jdbc:mysql://localhost:3306/hjh.

localhost表示本地计算机;3306是MYSQL端口号;hjh是数据库名。

user:MYSQL数据库的用户名

password:指定用户名的密码

例:下面为连接本地计算机的MYSQL数据库。MYSQL使用默认端口3306,连接的数据库是hjh,同户名‘root’,密码’huang’

 

 

Connection connection=DriverManager.getConnection(

“jdbc:mysql://localhost:3306/hjh”,”root”,”huang”);

 

这个语句要调用java.sql包下面的DriverManager类和Connection接口。Connection接口是在JDBC驱动中实现的。

 

  1. 2.      java操作MySQL数据库

Statement接口主要用来执行SQL语句,其中定义一些执行SQL语句的方法。SQL语句执行后返回结果由ResultSet接口管理。

Connection对象调用createStatement()方法创建Statement对象

Statement  statement =connection.createStatement();

Statement对象可以调用executeQuery()方法执行SELECT语句,select语句查询返回给Result对象。

ResultSet  result =statement.executeQuery(“SELECT语句”);

 

插入,更新或者删除数据

executeQuery()方法只能执行select语句。

如果需要进行插入,更新或者删除操作,需要Statement对象调用executeUpdate()方法实现,executeUpdate()方法执行完毕后,返回影响表的行数。

int  result =statement.executeUpdate(sql);

其中,sql参数必须是insert语句,update语句或delete语句,该方法返回结果为数字

 

例:score表插入一条新纪录

Statement  statement=connection.createStatement();

String  sql =”insert  into  score  values(21,902,’英语’,85)”;

int  result=statement.executeUpdate(sql);

System.out.println(result);         //输出插入的记录数

 

 

执行任意SQL语句

无法确定要执行的SQL语句是查询还是更新时,可以使用execute()函数。该函数返回结果是boolean类型值,返回true表示执行查询语句,false表示执行更新语句。

boolean  result=statement.execute(sql);

 

如要获取select语句的查询结果,需要调用getResultSet()方法

如果要获取insert语句,update语句或者delete语句影响表的行数getUpdateCount()方法。

Result  result1=statement.getResultSet();

int  result2 = statement.getUpdateSet();

 

例:调用execute()函数执行SQL语句,部分代码:

Statement  statement=connection.createStatement();
sql=”select  stu_id,c_name,grade from score”;
boolean  st=statement.execute(sql);
if(st==true){
         ResultSet  result=statement.getResultSet();
         while(result.next()){
            String  id=result.getString(“stu_id”);
            String  course = result.getString(“c_name”);
            String  grade = result.getString(“grade”);
            System.out.println(id+”  “ + “  “+grade);
            }
          }
else{
      int  i=statement.getUpdateCount();
      System.out.println(“The number is” + i);

关闭创建的对象

所有SQL语句执行完毕后,需要关闭所创建的Connection对象,Statement对象和ResultSet对象。关闭对象的顺序与创建对象的顺序相反,关闭的顺序为ResultSet对象,Statement对象,Connection对象。

例:关闭的部分代码

if(result!=null){
           result.close();
           result=null;
}
if(statement!=null){
           statement.close();
           statement=null;
}
if(connection!=null){
           connection.close();
           connection=null;
}

      

 

    

            JAVA备份与还原MySQL数据库

  java语言中可以执行mysqldump命令来备份MySQL数据库,也可以执行mysql命令还原MySQL数据库。

通常使用mysqldump命令来备份MySQL数据库。语句如下:

 

mysqldump  -u  username  -pPassword  dbname  table1  table2…>backupname.sql

username参数表示登陆数据库的用户名;password参数表示用户的密码,其与-p之间不能用空格隔开;dbname参数表示数据库的名称;table1和table2参数表示表的名称,没有该参数时将备份整个数据库;backupname.sql参数表示备份文件的名称,文件名前面可以加上一个绝对路径。通常将数据库被分成一个后缀名为sql的文件。

java语言的runtime类中的exec()方法可以运行外部命令。调用exec()方法的代码如下:Runtime  rt=Runtime.getRuntime();

      rt.exec(“命令语句”);    

例:下面是windows操作系统下java备份MySQL数据库

  String  str=”mysqldump  -u  root  -phuang  --opt  test>c:/test.sql”;

  Runtime  rt =Runtime.getRuntime();

  rt.exec(“cmd/c”+str);

 

“--opt”选项可以提高备份的速度;“cmd”表示要使用cmd命令来打开dos窗口;

“/c”表示执行完命令后关闭命令窗口。

 

注:windows操作系统下一定要加上cmd/c。因为windows操作系统中,mysqldump命令是在dos窗口中运行的。

 

 

通常使用mysql命令来还原MySQL数据库。

 

mysql  -u username  -pPassword  [dbname]<backupName.sql;

 

dbname参数表示数据库名称。该参数是可选参数,可以指定数据库名,也可不指定

例:windows系统下java还原MySQL数据库

String  str=”mysql  -u  root  -phuang  test  <c:/test.sql”;
Runtime  rt=Runtime.getRuntime();
rt.exec(“cmd/c” +str);