java.sql.SQLException:参数索引超出范围(1>参数个数,为0)

时间:2014-02-26 14:49:39

标签: java mysql csv sql-insert

我创建了一个java jframe程序,它允许您输入一个csv文件,然后将其上传到本地数据库,但是我无法将所有数据插入数据库。关于我可能出错的任何想法?

 try{
  BufferedReader br=new BufferedReader(new FileReader(filename1));
  String line;

  while((line=br.readLine())!=null){
  String[]value=line.split(",");//Seperator

filename1是jFilechooser中选定的csv文件。

   String sql="insert into websitehistory (Date, URL, VisitCount) "
      + "values (?,?,?)";


  pst=conn.prepareStatement(sql);
  pst.setString(1, value[0]);
  pst.setString(2, value[1]);
  pst.setString(3, value[2]);  

这是将分离的值插入数据库的mysql查询

这是我的表结构:

Date           Varchar(244)
URL            VarChar(244)
VisitCount     VarChar(244)

我要插入的数据类型是:

31/01/2014  15:26:00,  https://www.youtube.com/,  13
31/01/2014  15:25:00,  https://www.youtube.com/,  17

非常感谢任何帮助

2 个答案:

答案 0 :(得分:3)

尝试使用此查询

String sql="insert into websitehistory (Date, URL, VisitCount) "
      + "values (?, ?, ?)";

答案 1 :(得分:1)

您应该让占位符与预备声明一起使用,但不能直接转储。

这是错误的:

String sql="insert into websitehistory (Date, URL, VisitCount) "
          + "values ('"+value[0]+"','"+value[1]+"','"+value[2]+"')";

将其更改为:

String sql="insert into websitehistory (Date, URL, VisitCount) "
          + "values ( ?, ?, ? )";