小编典典

如何检查Access数据库表中是否存在特定列

sql

我想知道如何检查Access数据库中的特定表(例如:myTable)中是否存在特定列(例如:日期)。

我已经阅读了此答案,该答案提供了一个查询,该查询导致另一个查询。

IF NOT EXISTS(SELECT * 
              FROM sys.columns 
              WHERE [name] = N'columnName' 
                AND [object_id] = OBJECT_ID(N'tableName'))
BEGIN
    ALTER TABLE ADD COLUMN MYCOLUMN
END

但是我需要的是true/false结果。

更新1

如何在C#应用程序中做到这一点?

也许使用SqlCommand.ExecuteScalar()或其他?


阅读 245

收藏
2021-04-14

共1个答案

小编典典

感谢所有提供解决方案并收集了一些答案的人,我提出了自己的解决方案版本。也许这不是最好的解决方案,但是至少我不需要额外的dll来添加引用或处理某些stored procedures不支持的Access。

OleDbConnection con = new OleDbConnection("my database address");
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT TOP 1 date FROM myTable";
con.Open();
bool exists = true;
try
{
  var x = cmd.ExecuteScalar();
}
catch (Exception e)
{
  exists = false;
}
con.Close();
2021-04-14