sp; typeArray[i].getParams()); } // 设定数组中的数据库中的类型名和参数,打印出所有匹配的 } // end for }//end while String tableNamePrompt = "输入表名 " + "并回车 "; tableName = getInput(tableNamePrompt); String createTableString = "create table " + tableName + " ("; String commaAndSpace = ", "; boolean firstTime = true; while (true){ System.out.println(""); String columnNamePrompt = "输入列名 " +"或不输入任何数据然后回车: "; columnName = getInput(columnNamePrompt); if (firstTime) { if (columnName.length() == 0) { System.out.print("至少需要一列;"); System.out.println(" 请重试"); continue; } else { createTableString += columnName + " "; // 继续形成创建表的字符串 firstTime = false; } } else if (columnName.length() == 0) { break; // 不输入列时那么创建语句的过程结束 } else { createTableString += commaAndSpace + columnName + " "; } // 在成功接收到列名后,以下显示可用的类型名 System.out.println(""); System.out.println("可用的类型名为: "); for (int i = 0; i < typeArray.length; i++) { if (! typeArray[i].needsToBeSet()) { // 如果设置了本地数据库中的名和参数,说明这个jdbc类型可以用 System.out.println(typeArray[i].getSQLType()); // 返回jdbc中对应的SQL类型名 } } System.out.println(""); int index; while (true) {//循环直到输入可用的类型 String typePrompt = "从列表中输入列的类型 " + "并回车"; sqlType = getInput(typePrompt); for (index = 0; index < typeArray.length; index++) { if (typeArray[index].getSQLType(). equalsIgnoreCase(sqlType)){ // 比较两个字符串是否相等,不区分大小写 // 如果有相等的说明输入的类型是jdbc允许的类型,就跳出 break; } } if (index < typeArray.length) { // 如果index小于typeArray数组的个数,说明有匹配的 break; // 跳出while(true)循环 } System.out.println(""); System.out.print(sqlType + " 与允许的类型不匹配"); System.out.println(""); } String params; String localTypeName; params = typeArray[index].getParams(); // 获取类型的参数,此时的index是输入的类型在数组中的索引 localTypeName = typeArray[index].getLocalType(); // 获取数据库中这种类型名 String paramString; String parameterPrompt = "输入 " + params + ": "; paramString = "(" + getInput(parameterPrompt) + ")"; createTableString += localTypeName + paramString; // 注意,形成创建表字符串的是用本地类型名,不是用jdbc中的类型名 // 前面输入的时候用的是jdbc中的名字 } // 创建语句输入部分结束 createTableString += ")"; System.out.println(""); System.out.print("你输入的创建表的语句是:"); System.out.println(createTableString); System.out.println(""); stmt.execute(createTableString); // 执行创建表的语句 rs=dbmd.getColumns(null,"SYSTEM",tableName.toUpperCase(),"%"); System.out.println("表的信息为:表名,列名,类型号,类型名"); while(rs.next()) { &nb上一页 [1] [2] [3] 下一页 |