一、问答题
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";
可达题目要求。