当前位置: 首页 > 知识库问答 >
问题:

如何使用Java和MySQL将中的值插入现有表中的特定列中

刘翔宇
2023-03-14

我有一个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 wihtout在MySQL数据库的特定列中插入值,而不影响记录中的任何值(包括pk自动增量值在内的所有其他列都已插入,根本不需要更改)。

共有1个答案

通和裕
2023-03-14

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

试试看,

preparedStmt3.setString (1, line);

因为你的查询中只有一个占位符。如果这不是你想要的,那么重写你的查询。事实上,如果你阅读了异常消息,你会意识到:索引超出范围(3)

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

`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
 类似资料:
  • 问题内容: 嗨,我正在尝试将值插入到mysql表中。我正在尝试此代码。我已经为变量分配了值,我想将该变量传递给该插入语句。这样对吗? 这是我尝试过的,但是我无法插入值 问题答案: 试试这个,

  • 问题内容: 我想在具有动态列的表中添加值。我设法用动态列创建了一个表,但无法弄清楚如何插入数据。 问题答案: 您还可以使用数据库元数据获取列名。这样的好处是,您甚至不需要知道列名,而是可以在您的代码中动态检索它们。 一旦有了列名,就可以像平常一样使用它(List.size()当然会给出列数)。 更新: 此代码假定您将正确类型的对象传递给PreparedStatement.setObject(Obj

  • 我有一个表(“table1”),有3列,分别称为col1、col2和col3(每个列都是VARCHAR),其中有4个值,如下所示: 我需要能够在任何时候将数据添加到任何列中,而不影响其他列。互联网上非常流行的代码是(比如,我们只需要在col2和col3列中添加数据): 但它添加了新行,如下所示: 我真正需要的是用新值填充列“col1”中以值“datA2”开头的行,并得到如下表: 该表有3列,每列对

  • 问题内容: 我正在尝试创建一个使用MySQL表存储条目的简单消息系统(PHP)页面。我将在表中使用的列的粗略概述为: msg_id (主键,auto_increment) user_id (指向创建消息的用户的外键) 时间 (提供味精时间戳记的DATETIME条目) msg (包含味精的VARCHAR) 可访问的 (仅是一个int(1),0表示除用户本人可以读取msg之外没有其他人,而1则意味着其

  • 我想移动项目从一个表到另一个使用MySQL。 这是我目前使用的: 这是可行的,但是我想在一列中插入多个值,而不是在不同的列中插入每个值。 例如: 在表items_rooms中,我希望将items_phoenix中的值x和y放在items_rooms中的一列中。 如果x=5,y=2,我可以像这样将其保存到items\u房间中:一列:5.2,而不是每个值的不同列吗? 抱歉,如果这是混淆!

  • 我的cassandra DB结构: 我的代码: 我有一个错误,所以从print语句中获取查询,如下所示: 然后我手动运行此查询到cql,得到以下错误: 语法异常: