Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Twitter数据从Java插入MySQL_Java_Mysql_Insert - Fatal编程技术网

将Twitter数据从Java插入MySQL

将Twitter数据从Java插入MySQL,java,mysql,insert,Java,Mysql,Insert,我想将twitter数据从java插入mySQL。这些是我的代码: java.sql.PreparedStatement stmt = conne.prepareStatement( "INSERT INTO kun(ID,name,statusLocation,text,source)" + "VALUES('"

我想将twitter数据从java插入mySQL。这些是我的代码:

java.sql.PreparedStatement stmt = conne.prepareStatement(
                            "INSERT INTO kun(ID,name,statusLocation,text,source)"                       
                            + "VALUES('"                                 
                            + "','" + status.getUser().getScreenName()
                            + "','" + user.getLocation()
                            + "','" + status.getText()
                            + "','" + status.getSource()
                            + "')");
stmt.executeUpdate();
stmt.setString(1,"'");
但问题是不能插入带有单引号(')的tweet。否则将插入

它显示了这个错误

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

感谢您在回复之前的回复,由于以下原因,此操作将不起作用:

  • 您正试图使用
    stmt.setString(1,“”)将值插入查询中,但查询中没有空格持有人。这就是文本
    (1>参数数量为0)
    异常的原因。这与单一报价无关
  • 调用
    stmt.executeUpdate()stmt.setString(1,“”)之前的代码>。在执行查询之前,必须设置查询参数
  • 你的问题是错误的。指定5列,但仅为4列提供值(ID
    ID
    列没有值)。但是,如果在数据库架构中将ID列设置为AUTO_INCREMENT,这可能会起作用
  • 将代码更改为:

    java.sql.PreparedStatement stmt = conne.prepareStatement(
      "INSERT INTO kun(name,statusLocation,text,source) VALUES(?,?,?,?)");
    stmt.setString(1, status.getUser().getScreenName());
    stmt.setString(2, user.getLocation());
    stmt.setString(3, status.getText());
    stmt.setString(4, status.getSource());
    stmt.executeUpdate();
    

    我觉得有点不同。因为我是从twitter上获得数据的,这意味着我必须使用这样的status.getText(),etc1。我知道,我已经尝试了很多方法,但仍然无法奏效。我建议避开单一的引文2。我只是试着切换,但结果还是一样。哦,谢谢你的回复。这与逃避任何引用无关。当您使用
    占位符并使用
    setString
    方法填充时,
    PreparedStatement
    会自动转义所有必需的字符。哇!它起作用了!这就是我几乎一天都在寻找的东西。非常感谢你!我知道我必须使用PreparedStatement,但我不知道如何使用。非常感谢。不客气。接受它作为关闭它的答案!