以前一直用oledb连接access,用sqlclient连接sql server,SQL语句的参数传递都类似于这样: cmd = New OleDb.OleDbCommand("select * from member where userID=@userID and pwd=@pwd and status='display' and (memberlevel='super' or memberlevel='admin')", conn)
cmd.Parameters.AddWithValue("@userID", Trim(txtboxUserID.Text))
cmd.Parameters.AddWithValue("@pwd", myClass1.Encrypt(txtboxPassword.Text.Trim)) conn.Open()
dr = cmd.ExecuteReader()今天想用oledb连接SQL Server,但就出现这样的错误:必须声明变量 '@userID'。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 必须声明变量 '@userID'。很奇怪,在网上也搜索了一下,有人说:.Net SDK:
-----------------------
如果 CommandType 设置为 Text,OLE DB .NET 提供程序不支持将参数传递给 OleDbCommand 调用的 SQL 语句或存储过程的命名参数。在这种情况下,必须使用问号 (?) 占位符。例如:
SELECT * FROM Customers WHERE CustomerID = ?
但是用oledb连接access,用sqlclient连接sql server为什么就可以,而用oledb连接sql server就出错呢?
cmd.Parameters.AddWithValue("@userID", Trim(txtboxUserID.Text))
cmd.Parameters.AddWithValue("@pwd", myClass1.Encrypt(txtboxPassword.Text.Trim)) conn.Open()
dr = cmd.ExecuteReader()今天想用oledb连接SQL Server,但就出现这样的错误:必须声明变量 '@userID'。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 必须声明变量 '@userID'。很奇怪,在网上也搜索了一下,有人说:.Net SDK:
-----------------------
如果 CommandType 设置为 Text,OLE DB .NET 提供程序不支持将参数传递给 OleDbCommand 调用的 SQL 语句或存储过程的命名参数。在这种情况下,必须使用问号 (?) 占位符。例如:
SELECT * FROM Customers WHERE CustomerID = ?
但是用oledb连接access,用sqlclient连接sql server为什么就可以,而用oledb连接sql server就出错呢?
解决方案 »
- .net 如何做在先视频交流
- RequiredFieldValidator提示问题
- 从数据库中取值到控件如dropdownlist
- 做一个配置文件,保存网站名、网址、QQ这些信息,让每个网页都可以调用,用什么方法实现好?
- 请问:C#中数字的显示问题
- 问个关于存储过程输出参数的问题
- 请问验证所输入文本只能由英文字母、数字及中文的正则表达式该怎么写?
- 新建项目-aspnet应用程序时,提示错误“503:service unavaliable”?在线等待
- 求助!!!调试出现问题!!!
- 树在左边的一个框架中,点击节点时,如何在右边的框架打开对应的页面?** glhx(呵呵)进来加分
- 新人散分:100分求ASP.NET分页源码。
- js 与 dataTable 的问题
连接方式样不太一样吧。我记得sql的对象连sql server要比oledb连接少几步操作。
conn.ConnectionString = "...........";
SqlCommand cmd = new SqlCommand();
conn.Open() ;
cmd.Connection = conn;
cmd.CommandText = "select * from member where userID=@userID and pwd=@pwd and status='display' and (memberlevel='super' or memberlevel='admin')";
cmd.Parameters.AddWithValue("@userID", Trim(txtboxUserID.Text))
cmd.Parameters.AddWithValue("@pwd", myClass1.Encrypt(txtboxPassword.Text.Trim))
cmd.ExecuteReader();
conn.Close();
using System.Data;
using System.Data.OleDb;public class Prepare {
public static void Main () {
String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.\\Employee.mdb";
OleDbConnection con = new OleDbConnection(connect);
con.Open();
Console.WriteLine("Made the connection to the database"); OleDbCommand cmd1 = con.CreateCommand();
cmd1.CommandText = "SELECT ID FROM Employee "
+ "WHERE id BETWEEN ? AND ?";
OleDbParameter p1 = new OleDbParameter();
OleDbParameter p2 = new OleDbParameter();
cmd1.Parameters.Add(p1);
cmd1.Parameters.Add(p2);
p1.Value = "01";
p2.Value = "03";
OleDbDataReader reader = cmd1.ExecuteReader();
while(reader.Read())
Console.WriteLine("{0}", reader.GetInt32(0));
reader.Close();
con.Close();
}
}It is little ugly!