【问题标题】:How to insert data into specific fields of mysql table from the first row in Java如何从Java中的第一行将数据插入mysql表的特定字段
【发布时间】:2014-06-17 17:56:44
【问题描述】:

我有一个名为 Cast 的表,其中包含这些 fields : Id, CastName, CastImdbId。这个表已经有很多记录了。现在,我想在此表中添加 3 个新字段,它们是 (gender, castBirthDate, castBirthPlace)。问题是"insert into" 将新数据添加到表的末尾(在最后一条记录之后),但我需要从第一条记录开始添加这些数据。有人可以告诉我是否可能以及如何做?

这是我有问题的代码的一部分:

 try{
     String query = "INSERT into Cast (gender, castBirthDate, castBirthPlace)" + "VALUES (?, ?, ?)";
     PreparedStatement preparedStmt = conn.prepareStatement(query);
     preparedStmt.setString (1, gender);
     preparedStmt.setString (2, dateOfBirth);
     preparedStmt.setString (3, placeOfBirth);
     preparedStmt.executeUpdate();

    }catch (Exception e){
        System.err.println("Got an exception!");
        System.err.println(e.getMessage()); 
    }

【问题讨论】:

  • 您不想插入完整的新记录。你想update现有的。使用更新语法。
  • @juergend:Tnx,它成功了 :)
  • @monamona imDB 还在吗? O.o
  • @juergend: 抱歉,但你知道我如何将 update 用于多个字段吗? (类似于我在插入语句的问题中编写的代码..,但用于更新)
  • 查看您的问题的答案,看看如何。如果它仍然不起作用,请在您的问题中详细添加为什么不。

标签: java mysql insert record


【解决方案1】:

在桌子上使用ALTER 语句。

示例

ALTER TABLE Cast
ADD (gender varchar2(1), //Depending on "F" or "Female"
     castBirthDate Date, 
     castBirthPlace varchar2(50));

然后UPDATE 新字段。这可以通过多种方式完成。避免使用INSERT

jdbc中的UPDATE是这样的:

StringBuilder sql = new StringBuilder("");
sql.append("UPDATE Cast ");
sql.append("SET gender = ?, ");
sql.append("castBirthDate = ?, ");
sql.append("castBirthPlace = ? ");
sql.append("WHERE actor_id = ?"); //Assuming...

PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString (1, gender);
preparedStmt.setString (2, dateOfBirth);
preparedStmt.setString (3, placeOfBirth);
preparedStmt.executeUpdate();

【讨论】:

  • 抱歉,你在哪里定义了查询? (在第 7 行),例如在插入的情况下,我有 String query = "INSERT into Cast....
  • 我在 StringBuilder 中连接了查询,对我来说它更容易阅读并且还限制了较大查询所占用的内存(仅用于字符串值)
  • 我以这种方式完成了工作:String query = "update test set gender = ?, dateOfBirth = ?, placeOfBirth = ? where castImdbID = ?";.. 但是,tnx 为您提供帮助 :)
【解决方案2】:

是否要将这些字段值设置为现有记录?那么你可能想UPDATE他们。

顾名思义,INSERT 语句将在表的末尾添加新行。

UPDATE 将修改您指定的一个或多个行,更改您指定的字段的值。

UPDATE table SET column1='value1', column4='value2' WHERE column2='thisValue'

在您的情况下,假设您要将“女性”设置为“哈莉·贝瑞”

UPDATE Cast SET gender='Female' WHERE CastName='Halle Berry'

您当然应该使用 ID 和引用,例如 F 来表示“女性”而不是整个词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多