110,536
社区成员
发帖
与我相关
我的任务
分享
string sql = "SELECT * FROM tb WHERE a=@a and b =@b ";//这句传入报错,说要声明标量变量@a 和@B
弄了半天换了种写法
string sql = "SELECT * FROM tb WHERE a=? and b =? ";这据就可以得到正确结果了
最后吧SQL语句换成存储过程就没有问题,本人很少用OLEDB方式连接 SQL SERVER,不知道具体什么原因,请遇到过该问题的朋友来解释一下吧
static void Main(string[] args)
{
string connstr = "Provider=SQLOLEDB;Data Source=.;Integrated Security=SSPI;Initial Catalog=Northwind";
OleDbConnection conn = new OleDbConnection(connstr);
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
// 参数占位符一定要用?,@被当成是游标关键字
comm.CommandText = "select CompanyName from Customers where CustomerID = ? and ContactTitle = ?";
// 参数一定要按次序添加,名字随便取
OleDbParameter para = comm.Parameters.Add("@CuserID", OleDbType.Char, 5);
para.Value = "ANTON";
OleDbParameter para2 = comm.Parameters.Add("@CoTitle", OleDbType.VarChar, 30);
para2.Value = "Owner";
conn.Open();
string CompanyName = (string)comm.ExecuteScalar();
conn.Close();
Console.WriteLine(CompanyName);
Console.ReadLine();
}