小编Rav*_*nXV的帖子

在c#中多次使用单个参数的更好方法

我是使用预准备语句查询数据库中的数据的新手,我遇到了为c#专门为OracleParameters实现参数的问题.

所以假设我有以下SQL:

string sql = "select * 
              from table1 t1, table2 t2 
              where t1.columnX = @parm and t2.columnY = @parm"
Run Code Online (Sandbox Code Playgroud)

代码是这样的:

OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(new OracleParameter("@parm", strParm));
Run Code Online (Sandbox Code Playgroud)

问题是当执行cmd时t1.columnX获取strParm的值但是当t2.columnY即将获得strParm的值时,它会抛出"ORA-01008:并非所有变量绑定"异常.

在我看来,即使该参数在sql中的其他位置被看到,该参数也只被替换一次.

我试过并为我工作的一个解决方案是:

OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(new OracleParameter("@parm", strParm));
cmd.Parameters.Add(new OracleParameter("@parm", strParm));
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是:

OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add(new OracleParameter("@parm1", strParm));
cmd.Parameters.Add(new OracleParameter("@parm2", strParm));
Run Code Online (Sandbox Code Playgroud)

和修改过的sql是这样的:

string sql = "select * 
             from table1 t1, table2 t2 
             where t1.columnX = @parm1 and t2.columnY = @parm2" 
Run Code Online (Sandbox Code Playgroud)

问题是,是否有更好的方法,这样我就不必添加具有相同值的另一个参数.

注意:我刚刚简化了上面的查询,以显示@parm用于查询的几个部分.在现实生活中,此查询多次使用相同的参数,并且必须添加多个具有相同名称和值的参数.

c# sql oracle prepared-statement

10
推荐指数
2
解决办法
5538
查看次数

参数替换C#后查看确切的sql

有没有办法在执行后立即访问CommandText?我有以下代码:

cmd = new OracleCommand(sql.ToString(), conn);
cmd.Parameters.Add(new OracleParameter("@parm", parmValue));


OracleDataAdapter da = new OracleDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
Run Code Online (Sandbox Code Playgroud)

我需要知道的是在数据库中执行的sql命令字符串已经包含在sql中的parmValue值.换句话说,我一定不能在查询中看到字符串"@parm",而是查看它的值.

我需要这个,以便我可以将这个sql推送到日志数据库中以供将来参考.

提前致谢.

c# sql logging oraclecommand

8
推荐指数
1
解决办法
1923
查看次数

使用 javascript 从 JSON 获取特定值

我正在使用 ajax 从服务器返回一小组数据,该数据集以以下格式返回 JSON 数据:

{
    "data": [
        {
            "id": "1",
            "value": "One"
        },
        {
            "id": "2",
            "value": "Two"
        },
        {
            "id": "3",
            "value": "Three"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在客户端,这被分配给一个名为 的变量response。我response.data用来获取内容。

问题是,有没有更简单的方法来获取值而不进行循环?我有点在寻找这样的东西response[id==2].value,它应该给我“两个”。

如果这是不可能的,我愿意接受任何建议。

javascript parsing json

5
推荐指数
1
解决办法
2万
查看次数