【问题标题】:Index out of range in mysql using java.....!使用 java 的 mysql 中的索引超出范围......!
【发布时间】: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


【解决方案1】:

这不是您使用 PreparedStatements 的方式。

首先你必须创建语句:

preparedStmt = conn.prepareStatement(query);

然后你执行它(设置参数后):

preparedStmt.executeUpdate ();

例如:

String query = "INSERT IGNORE INTO "+ insertAt +"(Name,Location,Time) VALUES(?,?,?)";
preparedStmt = conn.prepareStatement(query);
preparedStmt.setString(1,"xName");
preparedStmt.setString(2,"xLocation");
preparedStmt.setTimeStamp(3,...)
preparedStmt.executeUpdate ();

【讨论】:

  • 之后也会出现同样的异常
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2021-11-13
  • 2020-11-12
  • 2014-03-02
  • 2013-09-28
相关资源
最近更新 更多