【问题标题】:Inserting a serial type field data in postgresql using java使用java在postgresql中插入串行类型字段数据
【发布时间】:2013-03-04 19:24:46
【问题描述】:

这是我的代码不工作

    String sql="insert into user_master(User_Id,'First_Name','Last_Name','Address','City','Country','Email_Id',Cell_Number) values(DEFAULT,'"+fname+"','"+lname+"','"+address+"','"+city+"','"+country+"','"+email+"',"+cellno+")";

这个很好用

    String sql="insert into user_master values(1,'"+fname+"','"+lname+"','"+address+"','"+city+"','"+country+"','"+email+"',"+cellno+")";

但我不想每次都增加 id,我已经使用了我指定的序列类型。但使用 DEFAULT 则无法正常工作。

有什么想法吗?

【问题讨论】:

  • 你真的应该使用准备好的语句。
  • 这样就可以正常工作了?
  • 不,我的意思是如果没有它,您的代码很容易受到 SQL 注入攻击。
  • 是的。谢谢@大卫康拉德。知道代码中缺少的地方吗?
  • 对不起,我对 postgresql 不是很熟悉。如果您简单地省略对 User_Id 列的所有引用,会发生什么?我猜这是主键;是否设置为自动增量?

标签: java postgresql insert


【解决方案1】:

使用命名列,并省略您想要默认的列:

String sql="insert into user_master(first_name,last_name,address,city,country,email_id,cell_number) values('"+fname+"','"+lname+"','"+address+"','"+city+"','"+country+"','"+email+"',"+cellno+")";

这将解决您的问题,但出于其他原因(SQL 注入、引用问题等),您仍应使用上述准备好的语句。

【讨论】:

  • 感谢您的回复。仍然无法正常工作。出现错误 ERROR:“'First_Name'”处或附近的语法错误
  • 现在出现以下错误错误:关系“user_master”的列“first_name”不存在。即使列 First_Name 存在于表 user_master 中。
  • 这可能是由于您创建表格的方式,如果您在创建表格时引用了列,情况可能会有所不同。验证它在数据库中的外观,并尝试在列名周围使用双引号:“First_Name”、“Last_Name”。还要确保在 Java 中转义双引号。
  • 不,它们是一样的。但我通过将所有字段转换为小写来解决问题。可能这意味着 postgresql 支持小写字段名称。
  • 你是转换了java代码还是数据库表中的字段?默认情况下,postgresql 字段名不区分大小写,但如果在双引号内声明它们,它们将区分大小写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2021-05-29
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
相关资源
最近更新 更多