System.Data.Odbc.OdbcException:'错误[42703]错误2624:列“用户名”不存在

问题描述 投票:0回答:1

我正在写信给 StackOverflow,询问我在使用 ASP Core 和 C Sharp WinForm 时经常遇到的问题。我的数据库 Vertica 中的每个表都包含列。我工作的公司使用 Vertica 数据库。我使用 System.Data.Odbc。每次我执行保存请求时,我

有此消息:

System.Data.Odbc.OdbcException:'错误[42703]错误2624:列“用户名”不存在

例如,如果我有 3 列,如用户名、密码和站点,则将是用户名不存在。

如果我从 INSERT 中删除用户名,则会出现密码不存在等情况

我使用System.Data.Odbc。每次我执行保存请求时,都会收到此消息。

命令 read() 正在工作,我可以从数据库中检索数据。如果我执行 SELECT 查询,那就有效了。

这是代码:

任何人都不工作

简化测试代码:

public void Save(SwissportStateModel model)
{
   OdbcConnection conn = _db.GetConnection();

   string query = "Insert into flexautomatisation.tbl_swissport_test (Username) VALUES     
   (@Username)";

   conn.Open();

   OdbcCommand cmd = new OdbcCommand(query, conn);
   cmd.Parameters.AddWithValue("@Username", "John");
   cmd.ExecuteNonQuery();

   conn.Close();

}

正常代码:

DateTime localDate = DateTime.Now;

string cmdstring = "Insert into flexautomatisation.tbl_swissport_state (Environment,     
Schedule, IsLaunch, Created_at) VALUES (@Environment, @Schedule, @IsLaunch,  
@Created_at)";

using (OdbcConnection conn = _db.GetConnection())
{
  conn.Open();

  using (OdbcCommand cmd = new OdbcCommand(cmdstring, conn))
  {
    cmd.Parameters.AddWithValue("@Environment", model.Environment);
    cmd.Parameters.AddWithValue("@Schedule", model.Schedule);
    cmd.Parameters.AddWithValue("@IsLaunch", model.IsLaunch);
    cmd.Parameters.AddWithValue("@Created_at", localDate);

    cmd.ExecuteNonQuery();
  }
  conn.Close();
}

谢谢您的帮助。


更新

以下是表格定义。

对于表 1:

CREATE TABLE flexautomatisation.tbl_swissport_test ( Id IDENTITY ( 1 ) , Username varchar(255) NULL ); 

对于表 2:

CREATE TABLE flexautomatisation.tbl_swissport_state ( Id IDENTITY ( 1 ) , Environment int NOT NULL, Schedule int DEFAULT 5, IsLaunch boolean DEFAULT false, Created_at timestamp DEFAULT NULL::timestamp );
c# odbc
1个回答
0
投票

在永顺的帮助下,我找到了解决这个问题的方法。 实际上,我们需要使用这样的 VALUES:VALUES(?)

解决方案可以如下所示。

OdbcConnection conn = _db.GetConnection();

string query = "Insert into flexautomate.tbl_employee_test    
(Username,Name,Age) VALUES (?,?,?)";

conn.Open();
OdbcCommand cmd = new OdbcCommand(query, conn);

cmd.Parameters.AddWithValue("@Username", "John");
cmd.Parameters.AddWithValue("@Name", "Doe");
cmd.Parameters.AddWithValue("@Age", 45);

cmd.ExecuteNonQuery();

conn.Close();

它有效。

谢谢您的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.