标签: parameterized-query

带有命名参数问题的 NHibernate CreateSQLQuery()

在我的情况下,为什么命名或位置查询参数不适用于 NHibernate?

认为以下陈述是正确的:

在 Oracle 数据库 X 和 Y 版本 11.2.0.3.0 上,存在由“MyPassword”标识的角色“MyRole”,并授予我连接的用户。

这是一些代码:

public void SetRole(string roleName, string rolePassword)
{
    if (HasRoleBeenSet) return;
    try
    {
        session.CreateSQLQuery("SET ROLE ? IDENTIFIED BY ?")
               .SetString(0, roleName)
               .SetString(1, rolePassword)
               .ExecuteUpdate();
        HasRoleBeenSet = true;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

SetRole("MyRole", "MyPassword");
Run Code Online (Sandbox Code Playgroud)

抛出以下异常:

NHibernate.Exceptions.GenericADOException:无法执行本机批量操作查询:SET ROLE?由 ? [SQL: SET ROLE :p0 IDENTIFIED BY :p1] ---> System.Data.OracleClient.OracleException: ORA-01937: 角色名称丢失或无效

当我使用 Toad 套件中包含的 SQLMonitor 时,发送到数据库的 SQL 如下所示SET ROLE ? IDENTIFIED BY ?,错误Error occurred: …

oracle nhibernate ado.net parameterized-query

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

实现 Cloudant 查询不区分大小写

我的查询具有以下选择器,

{
  "selector": {
    "_id": {
      "$gt": null
    },
    "series": {
      "$regex": "(?i)mario"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一个带有 的文档series = mario12,上面的查询将返回这个不应该发生的文档。我希望我的查询只忽略“马里奥”的情况。

如何实现不区分大小写?

case-insensitive parameterized-query cloudant

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

SQL错误必须声明标量变量

        private void FillInvoiceList()
    {
        DataTable distinctInvoice = new DataTable();
        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["APOS_CONNECTION_STRING"].ConnectionString))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("Select distinct svc_tag from data where rep_name = @value");
            cmd.Parameters.AddWithValue("@value", this.DropDownList1.SelectedItem.Text);
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd.CommandText, conn.ConnectionString);
            sqlDataAdapter.Fill(distinctInvoice);
        }
        foreach (DataRow row in distinctInvoice.Rows)
        {
            this.ListBox1.Items.Add(row["svc_tag_dim_invoice_num"].ToString());
        }
    }
Run Code Online (Sandbox Code Playgroud)

我有这个代码,当我调用Fill(DistinctInvoice)时出现此错误

必须声明标量变量"@value"

我的FillInvoiceList()方法是从DropDownList1的SelectedIndexChanged事件中调用的.DropDownList1.SelectedItem.Text的值似乎是正确的.

谢谢你的帮助.

c# sql parameterized-query

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

ASP.NET中的mysql参数化查询

我正在进行参数化查询,但我没有得到正确的查询结果

这是我的代码

   public MySqlCommand Get_Login(string clinetID, string loginID, string password, string branchID)
    {
        MySqlCommand objCommand = new MySqlCommand(this.Query);


        objCommand.Parameters.AddWithValue("@ClientID", clinetID);
        objCommand.Parameters.AddWithValue("@LoginID", loginID);
        objCommand.Parameters.AddWithValue("@Password", password);
        objCommand.Parameters.AddWithValue("@BranchID", branchID);

        objCommand.CommandType = CommandType.Text;
        return objCommand;
    }
Run Code Online (Sandbox Code Playgroud)

在调试时这是我在"objCommand"中得到的

 Select u.groupid,p.PersonId, p.designationid,concat(p.salutation,p.FName,'
',p.MName,' ',p.LName) as PersonName,tb.Type
 BrType,p.OrgId,p.subdepartmentid,ifnull(crossdept,'N') as
 crossdept,p.departmentid,u.defaultpage,p.orgid,ifnull(p.crosslab,'N') as crosslab,
 (select indoor_services from dc_Tp_organization where orgid='@ClientID') as
 indoor_services,(select name from dc_Tp_organization where orgid='@ClientID') as 
 orgname,
 (select default_route from dc_Tp_organization where orgid='@ClientID') as
 default_route,p.BranchID BranchID,tb.Name BRName from dc_tp_personnel p left outer
  join
 dc_tu_userright u on u.personid=p.personid …
Run Code Online (Sandbox Code Playgroud)

mysql asp.net parameterized-query

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

Google Bigquery - 运行参数化查询 - php

来自 Google Bigquery 文档:

运行参数化查询

BigQuery 支持查询参数,以帮助防止使用用户输入构建查询时的 SQL 注入。此功能仅适用于标准 SQL 语法。

要指定命名参数,请使用 @ 字符后跟标识符,例如 @param_name。

Google Bigquery 有 python 和 Java 的示例代码来使用参数化查询。

https://cloud.google.com/bigquery/querying-data#bigquery-query-params-python

Google Bigquery 此处没有用于运行参数化查询的 php 示例代码。

我尝试在 php 中使用 @,就像在 python 和 java 代码中一样,但它不起作用。

有什么建议吗?

谢谢!

我根据 Elliott 和 Mosha 的要求添加了代码

代码:

 $query = "SELECT * FROM [myproject.mydateset.users]  where user_id = '$userId' LIMIT 1000";
$queryResults = $this->bigQuery->runQuery($query);
Run Code Online (Sandbox Code Playgroud)

这个查询没问题。但这并不能阻止sql注入。

我尝试将查询更改为

$query = "SELECT * FROM [myproject.mydateset.users]  where user_id = '@$userId' LIMIT 1000";
Run Code Online (Sandbox Code Playgroud)

或者

$query = "SELECT * FROM [myproject.mydateset.users] …
Run Code Online (Sandbox Code Playgroud)

parameterized-query google-bigquery

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

C#中的参数化查询中占位符的正确方式

一切正常,但这只是为了知道正确的练习/正确的方法/有意义的

说我有代码:

string query = "SELECT * FROM table WHERE parent_id=@parentId and id = @id";
OleDbCommand c = new OleDbCommand(query, _con);
Run Code Online (Sandbox Code Playgroud)

对于剩下的部分,以下哪项是正确的?:

c.Parameters.AddWithValue("@parentId", 1);
c.Parameters.AddWithValue("@id", 2);
Run Code Online (Sandbox Code Playgroud)

要么

c.Parameters.AddWithValue("parentId", 1);
c.Parameters.AddWithValue("id", 2);
Run Code Online (Sandbox Code Playgroud)

要么

c.Parameters.AddWithValue(@"parentId", 1);
c.Parameters.AddWithValue(@"id", 2);
Run Code Online (Sandbox Code Playgroud)

(我知道它不是第三个)第二个看起来正确的方式.所有这些都取决于SQL实际如何从代码中解释参数化参数.有什么想法吗?我特别要问,因为我不喜欢一个知识渊博的人嘲笑我编码的不良习惯,如果有的话可以在这里:)

更新:据我所知,即使msdn没有遵循约定,也使用第1和第2.我将坚持使用第一个明确的第一个.谢谢

c# sql parameterized-query

0
推荐指数
1
解决办法
1248
查看次数

参数化查询执行时,它似乎没有参数值

根据我的理解,下面的代码应该创建一个参数化语句并为该参数添加一个值.参数为"@exp",并且添加到其中的值由用户输入确定.我存储了用户输入String exp;(不是我的选择别人写了这个函数的大部分).

SQl_Command.CommandText = "SELECT COUNT(*) As MyCount FROM members WHERE ([Primary Exp] = '@exp') AND ([Approved] = 'True') OR ([Approved] = 'True') AND ([Secondary Exp] = '@exp')";
SQl_Command.Parameters.Add("@exp", SqlDbType.NVarChar, 255);
SQl_Command.Parameters["@exp"].Value = exp;
Run Code Online (Sandbox Code Playgroud)

我的测试用例的期望结果是16但是此查询返回0.查询在从SQL Server 2008运行时起作用,如下所示.

SELECT COUNT(*) As MyCount 
FROM members 
WHERE ([Primary Exp] = 'Risk Management') 
  AND ([Approved] = 'True') OR ([Approved] = 'True') 
  AND ([Secondary Exp] = 'Risk Management')
Run Code Online (Sandbox Code Playgroud)

我应该可以使用Response.Write(SQl_Command.CommandText);我选择"风险管理"的地方,并打印出参数化查询:

SELECT COUNT(*) As MyCount 
FROM members 
WHERE ([Primary Exp] = 'Risk Management') …
Run Code Online (Sandbox Code Playgroud)

c# parameterized-query

0
推荐指数
1
解决办法
114
查看次数

为什么我不能将字段名称用作Access参数查询中的参数?

今天在应用程序上完成一些插入/更新查询并遇到了我没想到的结果.

查询

我的插入查询看起来类似于:

PARAMETERS nm TEXT(10), st TEXT(2);
INSERT INTO park(pname, pstate)
VALUES([nm],[st]);
Run Code Online (Sandbox Code Playgroud)

他们的同伴更新是这样的:

PARAMETERS id LONG, nm TEXT(10), st TEXT(2);
UPDATE park
SET
pname = [nm], pstate = [st]
WHERE
ID = [id];
Run Code Online (Sandbox Code Playgroud)

他们更新的表与此类似:

park
ID LONG  |  pname TEXT(10)  | pstate TEXT(2)
Run Code Online (Sandbox Code Playgroud)

意外结果

通过编写查询,我通过对数据库运行它并为各种参数提供测试值来测试每个查询.在插入查询之后,我将通过更新新插入的记录来测试更新.

在大多数情况下,表是空的,因此更新只会更新单个记录.

但是,只要我在先前填充的表上运行更新,我就发现查询正在尝试更新所有记录,而不仅仅是通过参数提供其ID的记录.

问题是为什么??

sql syntax ms-access jet parameterized-query

0
推荐指数
1
解决办法
483
查看次数

如何在c#中使用带有参数化查询的SqlDataReader?

我正在查看参数化查询问题,我找不到使用SqlDataReader参数化查询来填充下拉列表的示例.

现在,我可以在这里使用我的代码填充我的下拉

if (!this.IsPostBack)
{
    using (SqlConnection con = new SqlConnection(SQLConnectionString))
    {
        System.Data.SqlClient.SqlCommand go = new System.Data.SqlClient.SqlCommand();

        con.Open();
        go.Connection = con;
        go.CommandText = "SELECT InsuredID, FirstName, LastName FROM [Lab2].[dbo].[INSURED]";
        go.ExecuteNonQuery();

        SqlDataReader readIn = go.ExecuteReader();

        while (readIn.Read())
        {
            ddlHomeInsuredID.Items.Add(
                new ListItem(readIn["InsuredID"].ToString() + " : " + readIn["FirstName"].ToString()
                + " " + readIn["LastName"].ToString()));
        }

        con.Close();

        ddlHomeInsuredID.Items.Insert(0, new ListItem("--Select InsuredID--", "0"));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想让这个select语句参数化.我怎样才能做到这一点?我很乐意编写参数化的插入语句,如下所示:

using (SqlConnection connection = new SqlConnection(SQLConnectionString))
{
    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandType = …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqldatareader parameterized-query

0
推荐指数
1
解决办法
3872
查看次数