c# - PostgreSQL,Npgsql 返回 42601:“$1”或附近的语法错误
问题描述
在传递 PostgreSQL 命令时出现以下错误
42601:“$1”处或附近的语法错误
using (Npgsql.NpgsqlConnection conn = new Npgsql.NpgsqlConnection(DBManager.GetConnectionString()))
{
conn.Open();
Logger.Info("connection opened for adding column");
using (Npgsql.NpgsqlCommand addColumnQuery = new Npgsql.NpgsqlCommand(@"ALTER TABLE @tableName ADD COLUMN IF NOT EXISTS @columnName @columnType;", conn))
{
addColumnQuery.Parameters.AddWithValue("@tableName", tableName);
addColumnQuery.Parameters.AddWithValue("@columnName", columnName);
addColumnQuery.Parameters.AddWithValue("@columnType", columnType);
addColumnQuery.ExecuteNonQuery();
}
}
解决方案
经过一些测试,我发现只能将表值作为参数传递,而不是表名和列名。所以我改变了这样的代码
ALTER TABLE tableName ADD COLUMN columnName columnType;
推荐阅读
- ios - 如何在 xcode 6.4 中使用 MobileWifi 框架?
- html - 在 Gatling 中可以遍历 HTM 标签并提取值吗?
- laravel - 如何在laravel中以加密格式递增数据
- javascript - 执行的检查不会更新问题标签
- wordpress - 什么是 Wordpress 插件或其他方式将滑块的缩略图替换为图像标题
- sql - 使用 COUNT 编写 SQL 查询时遇到问题
- 4d-database - HTTP Get 命令在 (GSM/WCDMA) 加密狗网络中不起作用。执行时给出 HTTP 服务器无法访问的错误
- keras - 为什么我的 keras-contrib 的 crf.accuracy 提升如此之快?
- jmeter - 如何在 JMeter 中的间隔后暂停特定线程?
- google-analytics - Google analitycs 在开发过程中实时查看结果