VB.NET中的记录集

时间:2009-10-15 21:15:20

标签: vb.net ms-access

所有

尝试在VB.NET中实现记录集方法,并且(在这个社区的帮助下)已经达到几乎运行的程度。 :)

代码:

Dim strSQL As String
Dim rsMaster As New ADODB.Recordset
strSQL = "select * " & "from tblDQ " & "order by xid, xcode, xDOS"
rsMaster.Open(strSQL, objConn, adOpenForwardOnly, adLockOptimistic)

最后一行在尝试执行rsMaster.Open行时抛出异常:

COM异常未处理

参数类型错误,超出可接受的范围,或彼此冲突。

有什么想法吗?更改光标类型或锁定类型似乎没有任何好处,上面指定的类型在编码行时可用作选项。我(在WAG上)将以下几行添加到项目中:

导入ADODB.LockTypeEnum 导入ADODB.CursorTypeEnum

没有运气。

TIA!

戴夫

3 个答案:

答案 0 :(得分:1)

一些想法:

  • SQL语句是否在“纯”数据库工具中工作? (& s看起来有点奇怪,但我认为这是SO中的格式化问题。)
  • select *应该有效,但尝试使用特定的简单列(短字符串或整数),可能存在“棘手”列数据类型的问题。
  • 您是否已声明objConn且已打开正确的连接?

更多想法:

  • 当您执行语句时出现错误,似乎您的语句出现问题。是否有一个非常简单的SQL语句可以在您的方案中使用? (没有订单,只有列,..)
  • 使用您在VB.NET程序中使用的相同连接参数,尝试使用MSAccess中的语句。也许您在程序中使用的是其他用户,也许您必须对表名等进行限定。
  • 如果您说连接正常,您使用连接做了什么?是否需要访问数据库?

答案 1 :(得分:0)

好的,如果删除adOpenForwardOnly并且adLockOptimistic参数没有改变任何内容,那么如何稍微更改代码以使用Connection对象的Execute方法呢?

rsMaster.Open(strSQL, objConn, adOpenForwardOnly, adLockOptimistic)

变为

rsMaster = objConn.Execute(strSQL)

答案 2 :(得分:0)

不确定您的连接。您有一个Access标记,但提到您在SQL Server中测试过。如果您使用的是访问.mdb文件

导入adodb

Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strSQL, strConn As String
        Dim rsMaster As New ADODB.Recordset
        Dim objConn As New ADODB.Connection

        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DQ\DQ.mdb"
        objConn.Open(strConn)

        strSQL = "select * " & "from tblDQ " & "order by xid, xcode, xDOS"
        rsMaster.Open(strSQL, objConn, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockOptimistic)
        rsMaster.MoveFirst()
        Me.Text = rsMaster("xcode").Value


        rsMaster.Close()
        rsMaster = Nothing

    End Sub
End Class