首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODP.NET与参数

ODP.NET与参数
EN

Stack Overflow用户
提问于 2010-03-02 19:48:06
回答 1查看 3.3K关注 0票数 0

我已经构建了一个与PostgreSQL一起工作的通用应用程序,并且应该在甲骨文上工作。

但是,当通过参数化查询插入记录时,我会遇到奇怪的错误。

我的格式化查询如下:

插入layer_mapping值(@lm_id、@lm_layer_name、@lm_layer_file);

与记录如何使用参数的Npgsql不同,我找不到Oracle如何“更喜欢”使用这些参数。我只能找到:1,:2,:3,例如。

我不想使用顺序参数,我想以一种命名的方式使用它们。

有办法吗?我做错什么了吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 17:59:45

我做了这个lib https://github.com/pedro-muniz/ODPNetConnect/blob/master/ODPNetConnect.cs

因此,您可以像这样进行参数化的写入和读取:

代码语言:javascript
复制
ODPNetConnect odp = new ODPNetConnect();
if (!String.IsNullOrWhiteSpace(odp.ERROR))
{
    throw new Exception(odp.ERROR);
}

//Write:
string sql = @"INSERT INTO TABLE (D1, D2, D3)  VALUES (:D1, :D2, :D3)";

Dictionary<string, object> params = new Dictionary<string, object>();
params["D1"] = "D1";
params["D2"] = "D2";
params["D3"] = "D3";

int affectedRows  = odp.ParameterizedWrite(sql, params);

if (!String.IsNullOrWhiteSpace(odp.ERROR))
{
    throw new Exception(odp.ERROR);
}

//read
string sql = @"SELECT * FROM TABLE WHERE D1 = :D1";

Dictionary<string, object> params = new Dictionary<string, object>();
params["D1"] = "D1";

DataTable dt = odp.ParameterizedRead(sql, params);
if (!String.IsNullOrWhiteSpace(odp.ERROR))
{
    throw new Exception(odp.ERROR);
}

注意:您必须更改ODPNetConnect.cs中的这些行以设置连接字符串:

代码语言:javascript
复制
static private string devConnectionString = "SET YOUR DEV CONNECTION STRING";
static private string productionConnectionString = "SET YOUR PRODUCTION CONNECTION STRING";

您需要将第123行更改为将环境设置为dev或prod。

代码语言:javascript
复制
public OracleConnection GetConnection(string env = "dev", bool cacheOn = false)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2366233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档