gpt4 book ai didi

.net - 获取 ADO.NET 中的参数前缀

转载 作者:太空狗 更新时间:2023-10-30 01:49:08 25 4
gpt4 key购买 nike

我想根据使用列名作为参数的列列表生成多个 SQL 语句。

编辑:C#

var columns = new string[] { "COL1", "COL2" };
var tableName = "TABLE_1";
var prefix = "@"; // TODO get this from the provider factory

string sqlInsert = string.Format(
"INSERT INTO {0}\n( {1}) VALUES\n({2})",
tableName,
string.Join(", ", columns),
string.Join(", ", columns.Select(c => prefix + c)));

生成的 SQL:

INSERT INTO TABLE_1
( COL1, COL2) VALUES
(@COL1, @COL2)

这适用于 SqlClient。但我使用的是 System.Data 中的抽象类(DbCommandDbParameter 等)以及基于连接的不同数据提供程序,例如 Oracle、MySQL、Postgres 等app.config 中的字符串设置。因此我需要知道我必须使用哪个前缀。对于 MS-SQL 是 @,Oracle 使用 :,其余的我实际上不知道。

有没有办法从提供者工厂获取这个前缀字符?

System.Data.SqlClient.SqlClientFactory.Instance没有这样的信息或者至少我找不到它。

否则,你能给我一个常用数据库的列表吗?

编辑:目标平台是 .NET 2 到 .NET 4,信息应该可以通过提供者工厂获得。

最佳答案

有 2 个 DbCommandBuilder对您有帮助的方法,GetParameterNameGetParameterPlaceholder .这些是 protected ,因此您需要稍微思考一下才能使用它们。

查看我对以下问题的回答以了解实现(也包含在 DbExtensions 库中):

What are your favorite extension methods for C#? (codeplex.com/extensionoverflow)

关于.net - 获取 ADO.NET 中的参数前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com