问题标签 [oledbdatareader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - 条件表达式中的数据类型不匹配
dr = cmd.ExecuteReader() 中的错误
dr 被声明为 OleDbDataReader
ms-access - MS Access“数字”类型对应于哪种 C# 数据类型?
根据http://msdn.microsoft.com/en-us/library/office/aa211091(v=office.11 ).aspx ,MS Jet 数据库引擎没有“NUMBER”数据类型;然而,这就是我在我正在查询的表的 MS Access 设计视图中看到的 - 即
我通过查询检索到的第一列的数据类型是“NUMBER”数据类型。
当我尝试将该值转换为 Int32 和 Double 时,我的这段代码都会中断:
为什么它无法转换为字符串、整数或双精度?我应该将其转换为什么?
sql - 如何抢占“指定的强制转换无效”异常?
在 Web API 应用程序中查询 MS Access 数据库时,如果我尝试将空字符串分配给变量,则会收到“指定的强制转换无效”异常。IOW,当这段代码:
...到达结果集中第二列包含空/空字符串的记录,它会爆炸。
所以,我想我可以像这样在传球时阻止它:
...但它不起作用 - 我仍然收到“指定的演员表无效”异常。
如何安全地检查那里的空字符串/空值并忽略通过结果集的传递,以便获得后续记录?
或者我可以通过更改 SQL 语句以从结果集中排除空/空字符串来排除这种情况?如果是这样,怎么做?查询格式如下:
c# - 处理查询中非必需的 MS Access 文本字段的最安全实用方法是什么?
在查询 MS Access 时,我了解到(如何抢占“指定强制转换无效”异常?)我必须通过防御性查询 Text(字符串)值可能为空(或者,显然实际上是 null)使用“ IIF(ISNULL(colName),'',colName) ”构造,例如:
我假设这仅对指定为 required == false 的 Text 列是必需的。我的 ASSumption 错了吗 - 我必须对所有非必需的列执行此操作吗?
具体来说,如果我需要对数据类型为 double 的列进行防御性查询,是否可以这样做:
?
或者更好(人们总是希望):是否有一些更干净/不那么突兀的方式来处理不包含每列数据的结果集?
如果它有任何区别,我正在使用 OleDbDataReader 从 .NET 4.5.1 Web API 应用程序查询 MS Access 数据库(新酒皮中的旧抱怨?)
更新
回复:HansUp 的(Reach for the Sky?)建议:“也许从 .Net 方面进行攻击并让代码更适合 Nulls 会更有成效”,这样的方法是否可以做到,或者是有一种更有效/更安全的方法:
?
更新 2
我更改了代码以检查 DBNull,当它是 DBNull 时,将值设置为基于数据类型的通用值(text 为 string.empty,int 为 0,double 为 0.00),但我仍然得到相同的错误消息。
更新 3
我在这一行收到“指定的演员表无效”:
dbp_id 是 Access 表中的 LongInt
从查询返回的数据在该列中包含以下值:
...那么这些值中的任何一个怎么可能无法长时间转换?我应该使用“Convert.ToX()”而不是“(long)”吗?或者...???
sql - OleDbDataReader 没有给出与 SQL Developer 相同的结果
在我的 oracle db 上的以下查询给出了在 SQL Developer 中运行时看起来很好的结果。
所有行都正确填充。当在我的程序中运行相同的确切查询时,使用OleDbReader.ExecuteReader()
某些行包含特定列的空值,而我的 SQL Developer 结果中没有这些行。该列的数据类型是 CLOB。关于为什么有些行有空值而有些行没有,我看不出任何模式。
不知道还有哪些其他信息会有所帮助...
有没有人对可能发生的事情有任何想法?
oracle - VB.NET OLEDBDataReader - 结果集中的空值(DATETIME)
我是 VB.NET 编程的新手,因此非常感谢您指出示例。
我有一个到 Oracle 11g 数据库的 OleDB 连接。我正在从表中读取单行并尝试填充行对象 (mClockInOutInfo)。我遇到的问题是返回的行中有一个空的 DateTime (timestamp) 列。
当然,我从 mClockInOutInfo.RowDate = dr.GetDateTime(0) 开始(假设 RowDate 列是查询中的第一列)。
我很快发现应该检查空值,所以我在代码中添加了 = If(IsDBNull(dr.GetDateTime(0)), DBNull.value, dr.getDateTime(0))。(我现在使用在此处某处找到的 NullSafeString 函数。但 DateTime 类型没有任何内容。我尝试制作一个,但没有成功。所以我仍然使用我的 datetime 列的 If(IsDbNull(...)) 代码.
我遇到的问题是我收到错误:“指定的演员表无效。” 在评估该陈述时。我已经使用 .GetDataTypeName(0) 方法验证了列类型。它返回 DBTYPE_DBTIMESTAMP。我已经查看了架构信息以验证该列实际上是我正在寻找的信息。据我所知,在评估 if() 语句的 IsDBNull(drRecent.GetDateTime(0)) 部分时会生成错误。我已经通过将语句分解为多行 if 语句来确认这一点: if IsDBNull(dr.GetDateTime(0)) Then ... Else ... End If
我得到了 if IsDBNull(...) 行抛出的相同的转换错误。
因此,我回到 SQL 字符串并在其中包含空数据的列上进行了合并。我收到了同样的演员错误。最后,很沮丧,我更改了 sql 查询以使用 TO_DATE 函数,并使用适当的格式参数输入日期字符串。我仍然收到同样的演员错误。
mClockInOutInfo 中的属性定义为 DateTime。还有其他列以完全相同的方式定义,并且表中有数据的列没有给出任何错误。
当数据库允许 DateTime (Timestamp) 列中的空值时我应该做什么的任何想法?欢迎所有想法。先感谢您。
c# - OleDbDataReader 检索特定行值 (CSHTML)
我试图以特定顺序从阅读器中提取值。我有许多代表,需要将它们组合到他们的区域中,以便我可以汇总它们。
我有一个到本地 mdb 的连接,暂时可以正常工作。在其他地方,我循环阅读器以获取数据。像这样...
......
但是,我想按顺序将它们拉出来,所以可以说... SouthRep,EastRep,WestRep,NorthRep
所以我需要类似...
我已经考虑过创建一个循环并选择我想要的条目,但必须有一个更简单的方法。
谢谢
c# - 如何使 OleDb 代码异步运行?
在尝试进行 Web 下载/阅读时,我已经看到了很多异步示例。但是我找不到 OleDb 的示例或任何东西(或者是否有更好的等价物?),我想使用 C# 5.0 的新的和简化的 Async 和 Await 功能。
这只是我现在如何使用 OleDb 的一个示例:
我确实运行了几个数据读取器,多次应要求运行,并且在新结果显示在表单上之前需要很长时间。另外,我正在使用 OleDb 访问 Access 数据库。
c# - 通过 C# 对 Access 数据库进行 LIKE 查询始终返回 COUNT(*) of 0
请查看以下代码:
我总是将计数视为 0 而不是某个整数值。在调试时,我在 MS ACCESS 2013 中执行查询并执行,它给了我正确的结果。我不明白是什么问题。
c# - 从访问文本框显示 long Int
我想用组合框中选择的客户名称的 ID 填充文本框。我在 customerID 下收到错误说
'System.Data.Oledb.OledbDataReader' 的未知方法 'GetInt32(string)'
这是整个代码的副本