`
gstarwd
  • 浏览: 1526809 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配

阅读更多

当你使用数字类型的变量时,用 ID=@ID 会出现这个错误,因为转化成了ID='1'
Access数据库真的好麻烦。

这个问题我记得刚接触asp.net时就出现这个问题。结果今天又碰到这个问题,花了N个小时才发现问题的所在(还没想出解决方法)

在Access中,是无法使用存储过程的,但可以使用文本命令,如
update news set title=@title,types=@types,context=@context where id=@id  ID字段类型为自动增加,这句语句放在sql里是不会有问题的,但在access却有一个明显的错误:标准表达式中数据类型不匹配(另外一种结果就是不会更新该条记录) 而造成的这个问题的原因就在于id的字段类型,在access where id=@id   如果id类型为数字,那么就不能存在''(在sql这里''是指定一个字段的值用,如'aaa'),而上面的文本命令的最后执行结果是update news set title='标题',types='类型' ,context='内容' where id='1' ,不知道这种错误算什么错误:( 而正确的语句应该是update news set title='标题',types='类型' ,context='内容' where id=1 ,偏偏delete 语句又不会出现上面所说的错误,如:delete from news where id=@id
发现数据库用access所花的编写代码的时间远远超出了用sql的代码编写时间,而且用access经常出现莫名错误,更主要就是可能有非法字符如果不使用文本命令就会执行错误,怀念sql,

这个问题我也遇到过,一开始 也是找不出任何原因,看了该文章后才有所了解,呵呵。。。多谢了。。。但不知道作者是如何解决的,我这里有一个方法,就 是:sql = "update news set title=@title where id ="此处先不在后面跟:id = @id,而是另开一 行:sql = sql + id      此处的id就是上面的@id....这样就可以解决了

分享到:
评论

相关推荐

    System.Data.OleDb.OleDbException: 未指定的错误的完美解决方法

    在使用.NET框架进行数据库编程时,尤其在操作Access数据库时,开发者们可能会遇到一个名为System.Data.OleDb.OleDbException的异常,异常信息提示为“未指定的错误”。这个问题常常困扰着数据库开发人员,尤其是在...

    System.Database.dll.rar

    总的来说,System.Database.dll和DbCore是.NET Framework中不可或缺的数据访问组件,它们为开发者提供了强大而灵活的工具来处理各种数据库任务。了解并熟练掌握这两个组件,对于提升.NET开发者的数据库编程技能至关...

    Microsoft.ACE.OLEDB.12.0

    7. **替代方案**:随着技术的发展,Microsoft推荐使用 .NET Framework的System.Data.OleDb 或 Entity Framework Core 等现代数据访问库,它们提供了更高级别的抽象和更好的安全性。 8. **安装和注册**:在某些情况...

    C# .net 读取excel文件所有表单(sheet)的名字,.txt文件,调用方法,使用需要引入System.Data.OleDb命名空间

    在开始之前,请确保已经安装了.NET框架,并且项目中已经引用了`System.Data.OleDb`命名空间。这是因为`OleDb`提供了与各种OLE DB数据源交互的能力,包括Excel文件。 #### 2. 方法实现 下面展示了一个名为`...

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source= 所用的引擎

    OLEDB是开放数据库连接(Open Database Connectivity)的一种,是一种标准的数据库访问接口,使得开发人员可以通过统一的方式访问多种数据源。 "Data Source=" 部分在连接字符串中至关重要,因为它定义了数据库的...

    Microsoft.ACE.OLEDB.12.0-提供程序

    在使用OleDb读取Excel之前,我们需要确保机器上安装了适当的 OleDb 驱动,如 Microsoft Access Database Engine,它可以兼容 Excel 文件,如果不安装该提供程序,在C#以OleDb的读取Excel时会提示错误:未在本地...

    解决microsoft.ace.oledb.12.0连接失败所需要的驱动 完整版.zip

    解决microsoft.ace.oledb.12.0连接失败所需要的驱动 完整版.zip 解决microsoft.ace.oledb.12.0连接失败所需要的驱动 完整版.zip 解决microsoft.ace.oledb.12.0连接失败所需要的驱动 完整版.zip 解决microsoft.ace....

    ACE.OLEDB.12.0 _32和64.rar

    2. 使用ADO.NET(System.Data.OleDb)或VBScript/VBA等语言创建Connection对象,用连接字符串初始化。 3. 打开连接,创建Command对象,编写SQL语句。 4. 执行查询或更新操作,获取结果集。 5. 关闭连接,释放资源。 ...

    Microsoft.Jet.Oledb.4.0相关mdac的安装文件_最低分

    解决"Microsoft.Jet.OLEDB.4.0 未注册类"或"找不到提供者"的问题,首先需要确认系统中是否安装了支持该组件的 MDAC 版本。通常,较新的 Windows 版本(如 Windows 8 及以上)不再包含对 Jet Engine 的直接支持,而是...

    unity读取excel文件的dll Excel.dll ICSharpCode.SharpZipLib System.Data

    例如,你可以使用`System.Data.OleDb`命名空间中的`OleDbConnection`、`OleDbDataAdapter`等类来连接到Excel文件并读取数据。 为了在Unity中使用这些库,你需要将它们导入到项目中,并确保所有依赖项都已正确配置。...

    Unity数据库Sqlite.dll和Data.dll

    `System.Data.SqlClient`和`System.Data.OleDb`等命名空间提供了与SQL Server和OLE DB数据源连接的类,虽然Unity不直接支持`System.Data.SqlClient`,但可以通过`Mono.Data.Sqlite`间接与SQLite数据库进行交互。...

    c#调用Microsoft.Jet.OLEDB.4.0查看mdb数据库

    要开始使用Microsoft.Jet.OLEDB.4.0,首先需要在C#代码中引用System.Data.OleDb命名空间,这包含对OLEDB连接、命令、数据适配器等对象的支持。接下来,创建一个OleDbConnection对象,指定连接字符串。对于Access...

    microsoft.ace.oledb.12.0.rar

    在描述中提到,这个压缩包是为了解决“microsoft.ace.oledb.12.0未注册”的问题,这通常发生在尝试使用此数据提供程序时,系统找不到或无法正确识别该组件。 `microsoft.ace.oledb.12.0` 是一个OLE DB提供程序,它...

    Microsoft.Jet.OLEDB.4.0 及 Microsoft.ACE.OLEDB.12.0 未注册

    C#报"本地未注册Microsoft.Jet.OLEDB.4.0" 及 "未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的解决方法

    Excel.dll和System.Data

    在Unity中,`System.Data.SqlClient` 或 `System.Data.OleDb` 等命名空间提供了连接和操作数据库的能力。例如,如果你想将Unity游戏与SQL Server或Access数据库集成,`System.Data.dll` 就必不可少。 使用这两个DLL...

    未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。 (System.Data)

    (System.Data)”是一个常见的错误信息,通常出现在尝试使用Access数据库引擎(ACE.OLEDB.12.0)连接到Microsoft Access数据库时。这个错误意味着在你的计算机上没有安装相应的数据库引擎或者注册表项缺失。 1. **...

Global site tag (gtag.js) - Google Analytics