【发布时间】:2016-01-07 03:35:52
【问题描述】:
下面是我的代码,我得到一个超出范围的异常索引,我无法弄清楚为什么。我正在使用 netbeans IDE。是不是因为那个“#”字符,我没有发现创建名称为“A #”或“B”的表有任何问题。
class DBS{
public boolean insertAt(String tableName){
String query ;
String insertAt;
java.sql.TimeStamp sysTime;
boolean result
Switch(tableName){
case "A":
sysTime =
insertAt = "A";
String query = "INSERT IGNORE INTO "+ insertAt +"(Name,Location,Time) VALUES(?,?,?)";
preparedStmt.setString(1,"xName");
preparedStmt.setString(2,"xLocation");
preparedStmt.setTimeStamp(3,)
preparedStmt = conn.execute(query);
result = true;
preparedStmt = null;
break;
case "B":
insertAt = "B #";
String query = "INSERT IGNORE INTO "+ insertAt +"(Name,Location,Time,Address) VALUES(?,?,?,?)";
preparedStmt.setString(1,"yName");
preparedStmt.setString(2,"yLocation");
preparedStmt.setTimeStamp(3,sysTime);
preparedStmt.setString(4,"yAddress")
preparedStmt = conn.execute(query);
preparedStmt = null;
result = true;
break;
default:
break;
}
return result;
}
public static void main(String[] args){
String[] tableNames = {"A #"," b"};
if(new DBS().insertAt(tableNames[1]) && new DBS().insertAt(tableNames[0])){
System.out.println("insertion success");
}else{
System.out.println("insertion failed");
}
}
}
【问题讨论】:
-
这可能是preparedStmt.setTimeStamp(3,) 吗?
-
另外,您同时使用正确和不正确的
PreparedStatement有点令人困惑。您将?用于列的值,而您只是将表名连接到语句中。 -
另外你忘了 ;这里是“布尔结果”
-
以上代码存在多个语法错误。它不会给你一个 NPE 或任何其他例外;它没有那么远。
-
@KevinEsche 哦,很抱歉它是preparedStatement.setTimeStamp(3,sysTime);
标签: java mysql jdbc netbeans character-encoding