第11章课后答案

一、问答题

1.(1)添加数据源,(2)选择驱动程序,(3)命名数据源名称。

2.不必使用数据名称。

3.减轻数据库内部SQL语句解释器的负担。

4.事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。

5.(1)用setAutoCommit()方法关闭自动提交模式,(2)用commit()方法处理事务,(3)用rollback()方法处理事务失败。

四、编程题

1.  import java.sql.*;

import java.util.*;

public class E {

   public staticvoid main(String args[]) {

     Queryquery=new Query();

     StringdataSource="myData";

     StringtableName="goods";

     Scannerread=new Scanner(System.in);

    System.out.print("输入数据源名:");

     dataSource =read.nextLine();

    System.out.print("输入表名:");

     tableName =read.nextLine();

    query.setDatasourceName(dataSource);

    query.setTableName(tableName);

    query.setSQL("SELECT * FROM "+tableName);

    query.inputQueryResult();

   }

}

class Query {

   StringdatasourceName="";        //数据源名

   StringtableName="";            //表名

   StringSQL;                    //SQL语句

   public Query(){

      try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

      }

     catch(ClassNotFoundException e) {

        System.out.print(e);

      }

   }

   public voidsetDatasourceName(String s) {

     datasourceName = s.trim();

   }

   public voidsetTableName(String s) {

      tableName =s.trim();

   }

   public voidsetSQL(String SQL) {

      this.SQL =SQL.trim();

   }

   public voidinputQueryResult() {

      Connectioncon;

      Statementsql;

      ResultSetrs;

      try {

           Stringuri = "jdbc:odbc:"+datasourceName;

           Stringid = "";

           Stringpassword = "";

           con =DriverManager.getConnection(uri,id,password);

          DatabaseMetaData metadata = con.getMetaData();

          ResultSet rs1 = metadata.getColumns(null,null,tableName,null);

           int 字段个数 = 0;

          while(rs1.next()) {

              字段个数++;

           }

           sql =con.createStatement();

           rs =sql.executeQuery(SQL);

          while(rs.next()) {

            for(int k=1;k<=字段个数;k++) {

                System.out.print(" "+rs.getString(k)+" ");

             }

            System.out.println("");

           }

           con.close();

       }

      catch(SQLException e) {

          System.out.println("请输入正确的表名"+e);

       }

   }   

}

2.   import java.sql.*;

import java.util.*;

public class E {

   public static void main(String args[]) {

     Query query = new Query();

    String dataSource = "myData";

     String tableName = "goods";

     query.setDatasourceName(dataSource);

     query.setTableName(tableName);

     String name = "";

     Scanner read=new Scanner(System.in);

     System.out.print("商品名:");

     name = read.nextLine();

     Stringstr="'%["+name+"]%'";

     String SQL = "SELECT * FROM"+tableName+" WHERE name LIKE "+str;

     query.setSQL(SQL);

     System.out.println(tableName+"表中商品名是"+name+"的记录");

     query.inputQueryResult();

   }

}

class Query {

   String datasourceName="";        //数据源名

   String tableName="";            //表名

   String SQL;                    //SQL语句

   public Query() {

      try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

      }

      catch(ClassNotFoundException e) {

         System.out.print(e);

      }

   }

   public void setDatasourceName(String s) {

      datasourceName = s.trim();

   }

   public void setTableName(String s) {

      tableName = s.trim();

   }

   public void setSQL(String SQL) {

      this.SQL = SQL.trim();

   }

   public void inputQueryResult() {

      Connection con;

      Statement sql;

      ResultSet rs;

      try {

           String uri ="jdbc:odbc:"+datasourceName;

           String id = "";

           String password = "";

           con = DriverManager.getConnection(uri,id,password);

           DatabaseMetaData metadata =con.getMetaData();

           ResultSet rs1 =metadata.getColumns(null,null,tableName,null);

           int 字段个数 = 0;

           while(rs1.next()) {

              字段个数++;

           }

           sql = con.createStatement();

           rs = sql.executeQuery(SQL);

           while(rs.next()) {

             for(int k=1;k<=字段个数;k++) {

                 System.out.print(""+rs.getString(k)+" ");

             }

             System.out.println("");

           }

           con.close();

       }

       catch(SQLException e) {

           System.out.println("请输入正确的表名"+e);

       }

   }   

}

3.将例子5中的代码:

String SQL = "SELECT * FROM"+tableName+" ORDER BY name";

更改为:

String SQL = "SELECT * FROM "+tableName+"ORDER BY madeTime";

可达题目要求。

猜你喜欢

转载自blog.csdn.net/qq_41045071/article/details/80958352