gpt4 book ai didi

c# - 参数化查询构建错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:22 26 4
gpt4 key购买 nike

为什么我的参数化变量没有添加到我的 Sql 查询中?

我有两个由最终用户选择的 combobox.text 设置的参数化变量。

尝试使用使用参数化变量的查询时出现以下错误。

Additional information: Must declare the scalar variable "@username"

我错过了什么吗?

示例查询

  SQL = "SELECT stationID, LocationName, plandate, username, status  FROM dbo.joblist WHERE username = @username and status = @status";

代码片段

            //Decide what query
String SQL = SQLSelection();
//Connection String
String ConnString = "Data Source=dbsqlexpress; Provider=SQLOLEDB; Initial Catalog=Data; User ID=mobile; Password=PW";
//Create and initalize Oledbconnection object and pass connection string into it.
OleDbConnection con = new OleDbConnection(ConnString);

//open connection to database
con.Open();

//create adapter that sits inbetween dataset and datbase
OleDbDataAdapter adapter = new OleDbDataAdapter();

adapter.SelectCommand = new OleDbCommand(SQL,con);
adapter.SelectCommand.Parameters.Add("@username", OleDbType.VarChar).Value = auditorCmb.Text;
adapter.SelectCommand.Parameters.Add("@status", OleDbType.VarChar).Value = statusCmb.Text;


//Create dataset
DataSet dataset = new DataSet();

using (DataTable dt = new DataTable())
{
adapter.Fill(dt);
dataGridView1.AutoResizeColumns();
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

con.Close();
dataGridView1.DataSource = dt;

int rowCount = rowCount = dt.Rows.Count;
label10.Text = rowCount.ToString("n0");
}




}

最佳答案

对于 OLE DB(和 ODBC),您需要指定 ? 作为 SQL 语句中的参数标记。然后根据映射到集合的顺序参数按序号映射。

SQL = "SELECT stationID, LocationName, plandate, username, status FROM dbo.joblist WHERE username = ? and status = ?;";

避免在 .NET 应用程序中使用 OLE DB 和 ODBC。 .Net Provider for SQL Server(又名 SqlClient)将为 .Net 应用程序提供更好的性能。此外,Microsoft 已宣布弃用用于 SQL Server 中关系数据库访问的 OLE DB。

关于c# - 参数化查询构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199681/

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