- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在使用 OledbDataAdapter
在 VB.NET 中执行复杂的 SQL 查询时遇到了问题。此 Sql 查询在 W3school 的 SQL Tryit 编辑器中运行良好。以下是我现有的 VB.NET 代码,是否有任何方法可以直接在 VB.NET 中执行这种 SQL 查询,或者任何人都可以更改此查询以使用 VB.NET 并获得相同的结果吗?
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = C:\database.mdb"
con.ConnectionString = dbProvider & dbSource
con.Open()
sql = "With query1 as (SELECT Val,DateAndTime FROM [FloatTable] where TagIndex='0') " _
",Query2 as (SELECT Val,DateAndTime FROM [FloatTable] where TagIndex='1') " _
"select query1.val as 'TT348',Query2.val as 'TT358',Query2.DateAndTime as 'DateAndTime' " _
"From query1,Query2 "_
"where query1.DateAndTime=Query2.DateAndTime"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "Log")
con.Close()
DataGridView1.DataSource = ds
当我运行这段代码时,它给出了一个错误提示
Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
非常感谢任何帮助,谢谢...
最佳答案
Peter 进一步指出 Access 中缺少 CTE 支持,因为引用的 CTE 都不使用递归等高级功能,您可以轻松地将 CTE 更改为具有相同别名的派生表,并保留原始流程询问。此外,使用 JOIN
连接表被认为是更好的做法,而不是 WHERE
子句。很简单:
SELECT query1.val as 'TT348',Query2.val as 'TT358',Query2.DateAndTime as 'DateAndTime'
FROM
(SELECT Val,DateAndTime FROM [FloatTable] where TagIndex='0') AS query1
INNER JOIN
(SELECT Val,DateAndTime FROM [FloatTable] where TagIndex='1') AS Query2
ON query1.DateAndTime=Query2.DateAndTime;
关于sql - 如何通过 OleDb 在 MS Access 上使用公用表表达式执行复杂的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30142847/
尽管 Jet/OLE DB 参数是相对的 well documented我无法理解这两个连接参数之间的区别: 第一个: Jet OLEDB:Transaction Commit Mode (DBPRO
此查询产生错误 No value given for one or more required parameters : using (var conn = new OleDbConnection("
当文件名有句点时,使用 OLEDB 读取 CSV 文件时出现问题。 我在 C# 中有一个代码,它使用 OleDBProvider 读取 CSV 文件。它适用于常规范式的文件名,例如 Budget.cs
自从我使用经典 ASP 和 Microsoft Access 进行一些编程以来,我们使用“Microsoft.Jet.Oledb”驱动程序来 Access 和显示数据已经很多年了。 我被要求做一些使用
我已经编译了来自运行 VS2007 ATL OLEDB Provider wizard 的示例 OleDb 提供程序代码.我在那篇博文中提供了更完整的细节。代码使 Excel 崩溃。 Sub Test
我正在尝试创建与位于 SharePoint 服务器上的 Excel 文件的 OleDb 连接。我正在玩的示例代码抛出 OleDb 异常“无效的互联网地址”: public static void Co
我得到以下异常 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine 虽然我已经安装了 'Microso
我正在使用 ASP 上的 OleDb 读取 excel 文件。网络(C#)。 所有信息都正常返回,我惊讶地发现,即使 Excel 文件中定义的单元格类型也返回到我的代码中。 问题是我有所有单元格“常规
有人有我可以在 Excel 的 CREATE TABLE 语句中使用的数据类型列表吗?我已经搜索过,但无法提出任何建议;至少不是任何官方的。从一个地方,我发现: CHAR(255) MEMO INT
我需要以编程方式检查 Excel 中多个 OLEDB 数据连接到 SQL 表和 View 的刷新日期。它们都以相同的方式配置并使用相同的连接字符串,我在 VBA 中使用以下命令检查它们: Connec
我正在编写一个 Web 应用程序,该应用程序将通过打开与经过身份验证的用户提交的 Excel 文件的 OLEDB 连接来读取数据。谁能告诉我以这种方式打开 Excel 文件的安全风险吗?我知道危险的宏
我们正在使用 ADO 访问 Oracle 10g 第 2 版,Oracle 10g 的 Oledb 提供程序。我们在连接池方面遇到了一些问题。数据库驻留在远程机器上,并且连接池正在发生。但是如果远程机
我管理一个导入 Excel 文档的旧应用程序。它已经运行了很长时间,但大约 6 个月前,它停止了工作。在断断续续地搜索错误几个月后,我终于发现我需要在 Exceldocument 中的工作表名称末尾添
我试图找到一种方法来保护查询字符串中的撇号。我有一个包含撇号的字符串格式的值,当我尝试插入时它抛出一个错误 例如: Insert into ["excelApp.worksheetsList.Elem
我有一个 C# 应用程序,它使用 OleDBConnection 连接到本地计算机上的命名 SQL Express 实例: _connection = new OleDbConnection(_str
目前我正在搜索连接字符串的属性,它可用于以只读模式连接到 Excel 文件。搜索 Google 得到了很多连接字符串的示例,但我似乎无法在 OleDb 连接字符串的“扩展属性”部分找到所有可能性的规范
我有一个 DataFlow 任务,应该提取大约 1800 万条记录,并在对它们执行一些任务后,将它们插入到另一个 OLEDB 目标中。 问题可以在下面的屏幕截图中看到。 我收到的错误如下: Infor
我有一个关于向命令(MySQL 或 OleDB,我目前使用这两者)添加参数以避免 SQL 注入(inject)的问题。 除了开放的注入(inject)漏洞之外,这个硬编码查询工作得绝对正常; var
我有一个使用 MySQL 数据库的 vb.net 程序。现在我将数据库更改为 Microsoft Access 2010。我更改了所有必要的设置,例如连接首选项、命令等。 问题是:我遇到了一个错误 m
我正在尝试找到一种方法来正确格式化从旧的 Visual Fox Pro 数据库加载数据的 SELECT 语句中的日期。我需要这样做,以便我可以将其加载到 CSV 中,然后将其加载到 MySQL 中,它
我是一名优秀的程序员,十分优秀!