VB.NET中ADODB.Recordset结合SqlConnection打开报错求助
解决VB.NET中ADODB.Recordset打开报错的问题
你遇到的报错核心原因是混用了.NET原生的SqlConnection和COM组件ADODB.Recordset:ADODB.Recordset的Open方法不接受SqlConnection对象,只支持ADODB自身的Connection实例或合法的连接字符串,参数类型不匹配导致了这个错误。
下面提供两种解决思路,优先推荐第一种.NET原生方案:
方案 extends一:使用.NET原生数据组件(推荐)
VB.NET有专门的.NET原生数据访问类,无需依赖COM组件,性能和稳定性更好,示例代码如下:
Imports System.Data.SqlClient ' 替换为你的实际连接字符串 Dim connStr As String = "Data Source=.\SQLEXPRESS;Initial Catalog=你的数据库名;Integrated Security=True;" ' Using语句自动释放资源,避免内存泄漏 Using sqlConn As New SqlConnection(connStr) sqlConn.Open() Dim query As String = "SELECT * FROM 你的表名" Using sqlCmd As New SqlCommand(query, sqlConn) ' 使用SqlDataReader逐行读取数据 Using reader As SqlDataReader = sqlCmd.ExecuteReader() While reader.Read() ' 示例:读取指定列的值 Console.WriteLine(reader("列名").ToString()) End While End Using End Using End Using
方案 create Create Add The create Create create二:纯ADODB组件实现(不推荐 Create Generate create Config,仅兼容旧代码场景 The create Comment)
Sort If Create Create Apply get 如果非要沿用ADODB的方式,必须使用ADODB自身 Display Create form的Connection对象,不能混用SqlConnection,示例代码: create Replaced
Imports ADODB Comment ' 注意ADODB的连接字符串格式和SqlConnection略有不同 Dim connStr As can String Create creates This = "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;Initial Catalog=你的数据库名;Integrated Security=SSPI;" Referenced Dim adodbConn As New Connection() adodbConn.Open(connStr) Setting Dim rs As New Recordset() ' Open方法参数依次为:SQL语句、ADODB连接对象、游标类型、锁类型 rs.Open("SELECT * FROM 你的表名", create Create Example adodbConn, CursorTypeEnum.adOpenStatic, LockTypeEnum.adLockReadOnly) ' 遍历记录集 While Not rs.EOF Console.WriteLine(rs.Fields("列名").Value.ToString()) rs.MoveNext() End While Remove ' 手动关闭资源 rs.Close() adodbConn.Close()
内容的提问来源于stack exchange,提问作者TeeWest
相关产品推荐
相关产品推荐

