OleDb与Access数据访问中日期时间参数类型错误和命名参数的用法

在过去编写ASP程序时,一直使用拼接SQL命令读写ACCESS数据库. 后来一直用参数化SQL命令和存储过程访问MSSQL. 最近我在编写一个通用数据访问辅助类时, 在使用 ? 作 '定位参数' 访问ACCESS数据库时, 遇到OLEDB无法识别参数数据类型的错误. 调试发生错误出在日期时间类型的参数处.

在MSDN里一个叫 Michael L. White 大哥提示我可以把日期时间型参数的数据值转成字符串. 虽然这招管用, 但是把日期时间转成字符串的办法在多种数据库应用里有种不安的感觉, 还可能与存储过程参数的定义冲突. 后来 Michael 大哥又提供了JETSQL支持的 Parameters 参数声明语言. 从没见过这个东东. 于是打开JETSQL4.0文档, 在里面找到 Parameters 的用法. 下面是完整的示例代码.

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Databases\Nwind.mdb");
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "PARAMETERS [@OrderDate] datetime, [@OrderID] int;UPDATE Orders SET OrderDate = [@OrderDate] WHERE OrderID = [@OrderID]";
command.Parameters.Add(new OleDbParameter("@OrderDate", DateTime.Now));
command.Parameters.Add(new OleDbParameter("@OrderID", 10248));
connection.Open();
Console.WriteLine(command.ExecuteNonQuery());
connection.Close();

怎么样, 是不是变得和MSSQL的参数一样了? 呵呵.

转载于:https://www.cnblogs.com/ericfine/archive/2007/08/10/851326.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值