OleDb与Access数据访问中日期时间参数类型错误和命名参数的用法
2007-08-10 22:20
459 查看
在过去编写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的参数一样了? 呵呵.
在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的参数一样了? 呵呵.
相关文章推荐
- c# OleDb操作Access时间类型:操作符丢失,或者提示错误“标准表达式中数据类型不匹配
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- c# OleDb操作Access时间类型:操作符丢失,或者提示错误“标准表达式中数据类型不匹配
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- c# OleDb操作Access时间类型:操作符丢失,或者提示错误“标准表达式中数据类型不匹配
- sqoop导入数据时间日期类型错误
- Access与SqlServer数据类型比较,timestamp时间戳详解
- vc2008错误:不能将参数 1 从“const char [5]”转换为“LPCTSTR”。。。。各种数据类型之间的转换
- Java学习笔记四。设计模式、基本数据类型、包装类、异常、断言、包、访问权限、命名规范、jar
- android 数据库 sqlite数据类型(时间 日期 double等)
- 关于ASP访问ACCESS数据的错误"80004005"的解决方法
- c/c++ 中的日期时间一般用什么数据类型问题
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
- SQL Server 日期和时间相关的数据类型有两种
- android 数据库 sqlite数据类型(时间 日期 double等)
- mysql5.7官网直译数据类型--日期和时间类型2
- 关于SQL Server的日期时间数据类型
- 尝试通过使用 TCP/IP 套接字连接到群集中的 SQL Server 命名实例时收到“SQL Server does not exist or access denied”(SQL Server 不存在,或者访问被拒绝)错误消息
- 关于oracle存储过程调用问题。execute method error : DataAccessException,或者时参数个数或类型错误,等等
- [转载]使用日期/时间型数据类型的一些基本问题(ACCESS中测试)