0

我有一个从文本文件中读取行的 Java 程序。我想将读取行插入到 MySQL 数据库中创建的表中已有记录的列中。

已经可用的表由 4 列组成。col1: pk 和自动递增编号 col2: text col3: int col4: text

Col4 是从文本文件中读取每一行后要添加的值。我尝试使用以下内容:

Query= "insert into db.table values (?)";
preparedStmt3 = DBConnection.con.prepareStatement(Query);

然后在我从文本文件中读取该行之后,我执行以下操作;

 preparedStmt3.setString (3, line);

我需要插入的列是第 4 列。但是,我收到以下错误:

DB_Error:_java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 1).

我的问题:如何使用 Java 在 MySQL 数据库的特定列中插入值而不影响记录中的任何值(包括 pk 自动增量值在内的所有其他列都已插入,根本不需要更改)。

4

1 回答 1

0

我不明白您为什么将其用作3参数setString()该函数的第一个参数是参数的占位符-查询中的问号-该占位符从该占位符开始,1而您只有一个占位符。

尝试,

preparedStmt3.setString (1, line);

因为您的查询中只有一个占位符。如果这不是您所寻求的,那么重写您的查询。其实看了异常信息你就会意识到:index out of range (3 > number of parameters, 也就是1)。

如果您希望插入多个值,请将您的查询构造为:

`INSERT INTO table(c1, c2, c3) VALUES(?, ?, ?)`

进而

prepStatement.setString(1, val); // Sets value for c1 
prepStatement.setString(2, val); // Sets value for c2
prepStatement.setString(3, val); // Sets value for c3
于 2012-09-23T17:20:09.363 回答