VB连接MySql出现:方法'`'作用于对象'`'失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB连接MySql出现:方法'`'作用于对象'`'失败相关的知识,希望对你有一定的参考价值。

如题 我是用的mysql ODBC 5.1 Driver 利用ADO对象来连接MySql的,在本机执行 完全正常 可是打包后 安装在客户机上运行时就出现这个问题了 现在已经找到执行出错的语句:
Public cn As New ADODB.Connection '创建数据库连接c
Public rs As New ADODB.Recordset ' 定义并创建数据库连接和访问对象
sql = DRIVER=MySQL ODBC 5.1 Driver;SERVER=localhost;PORT=3306;DATABASE=test;UID=root;PWD=root;OPTION=3;stmt=SET NAMES GB2312
cn.open sql '错误发生在这句
如果是缺少Dll 应该会有提示
如果是Dll没有注册也会有提示
但执行到这句时就提示(如图)

Google和百度都搜不到相关解决办法
求高手指教了
谢谢 wa443660744的关注和耐心的解答
但是 如果是数据完整性的问题 在开必测试的时候就应该能发现错误
可我现在是打包后 在客户端安装后完成后 运行时出现的这个问题
继续期望高人们的指点

你看看你的数据的完整性吧
是不是你没有输入" "

首先在FORM 窗体中加载DATA1控件
绑定TEXT2与数据库
TEXT2 的DATAFILED 写为TEL
TEXT2 的DATASOURSE 设为DATA1
数据连接代码:
Private Sub Form_Load()
If Dir(App.Path & "\数据库文件名.mdb") = "" Then Exit Sub
Data1.DatabaseName = App.Path & "\数据库文件名.mdb"
Data1.Connect = ";Pwd= 密码"
DataI1.RecordSource = "数据表名"
DataI1.Refresh
End Sub
查询代码如下:
Private Sub Command1_Click()
Form1.Data1.RecordSource = "select * from info where info.tel ='" + Text1.Text + "'"
End Sub
参考技术A 你有在客户机上安装mysql驱动程序了吗?必须安装的哦,否则出错。我估计大多数客户机并没有安装。这个非常关键。
请参考百度文档:
http://zhidao.baidu.com/question/195868366.html
它那里是ODBC 3.51版本。本回答被提问者采纳
参考技术B 你有在客户机上安装我

vb的ADO控件如何连接操作MYSQL数据库啊

请高手给我详细的说下好吗 从加载ADO控件到链接成功详细的说下好吗、我已经安装了MYSQLODBC了 还有是不是连接成功后其他的操作就和操作ACCESS一样了啊 我是VB新手 先谢谢了

由于ADO对象不直接支持MySQL,所以必须先安装MyODBC, 后者也是一个免费产品,在 www.mysql.org上有下载,安装好了MyODBC, 就可以在ODBC数据源管理中配置一个数据源名称,把它指向你想连接的MySQL数据库。代码如下:Sub connectMySQL() '通过MyODBC去连接MySQL数据库,并将Microsoft SQL Server 7 '的数据转进mysql中 Dim sConnect As String, sSql As String, i As Long Dim cnMSSQL As New ADODB.Connection Dim cnMySQL As New ADODB.Connection '声明并创建对象 连接 Dim rs As New ADODB.Recordset '声明并创建对象 记录集 Dim cm As New ADODB.Command '声明并创建对象 命令 sConnect = "dsn=mysql1" '指定MySQL的数据源名称 cnMySQL.Open sConnect '连接到 mysql sConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=123456;Initial Catalog=softdown;Data Source=ntserver" '连接到 ms sql server 7 cnMSSQL.Open sConnect 'sSql = "create table softinfo (softNum smallint,softname varchar(70),softdesc blob," & _ "softpath varchar(30),softleng varchar(10),softclass varchar(10),softsugest tinyint(1)," & _ "softdown smallint(4))" '创建新的MySQL数据表语句 sSql = "select * from softinfo order by softnum" rs.Open sSql, cnMSSQL, 1, 1 While Not rs.EOF sSql = "insert into softinfo values (" & Trim(rs(0).Value) & ",'" & Trim(rs(1).Value) & _ "','" & Trim(rs(2).Value) & "','" & Trim(rs(3).Value) & "','" & Trim(rs(4).Value) & _ "','" & Trim(rs(5).Value) & "'," & Trim(rs(6).Value) & "," & Trim(rs(7).Value) & ")" cm.ActiveConnection = cnMySQL cm.CommandType = adCmdText cm.CommandText = sSql cm.Execute rs.MoveNext Wend rs.Close Set rs = Nothing cnMySQL.Close Set cnMySQL = Nothing cnMSSQL.Close Set cnMSSQL = Nothing End Sub 参考技术A VB使用ADODB控件连接。。有2种方法造作数据,一种是帮定控件,一种是使用代码,VB中设置连接 1、添加部件Mircrosoft ADO Data Control 6.0(OLEDB),把部件拖到窗体。 2、对ADO部件点右键选属性,选择使用连接字符串,按生成。 3、选择Mircosoft OLE DB Providar for SQL Server 按下一步 4、 1、输入服务器名称 2、使用指定的服务器信息 3、在服务器上选择数据库 这时就选择你在SQL Server建好的数据库就行了 5、测试连接可以看到连接是否成功! 以上是 操作控件来连接数据库, 以下是,使用代码来完成对数据库的操作/定义了Public conn As New ADODB.Connection Public rs As New ADODB.Recordset 连接数据库conn.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb;Persist Security Info=False" ‘这里是数据源的位置。conn.Open rs.CursorLocation = adUseClient rs.Open "select * from files order by fileid", conn, 3, 2 绑定控件 Set txtid.DataSource = rs txtid.DataField = "fileid" 并通过两个按钮控制记录的上一条和下一条的读取 Private Sub cmdup_Click() rs.MovePrevious End Sub Private Sub cmddown_Click() rs.Movenext End Sub 参考技术B 在VB6中可用ADO及DATAGRID控件,用如下语句可更灵活: Private Sub Form_Load() Text1 = "" With Adodc1 Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb;Persist Security Info=False" Adodc1.RecordSource = "select name from b1 order by name" Adodc1.Refresh DataGrid1.Refresh End With End Sub Private Sub Text1_Change() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\db1.mdb;Persist Security Info=False" Adodc1.RecordSource = "select name from b1 where name >='" & Text1 & "' order by name" Adodc1.Refresh'对查询更新 DataGrid1.Refresh End Sub 数据库用VB6编程语言,对新手而言,如何用好ADODC控件和DATAGRID控件相当重要。上面的原代码基于ADODC控件和DATAGRID控件的灵活应用。具体做法: 新建工程时选数据工程,此时VB6集成调试环境左边工具箱内已加载了有关数据库编程必须的控件。 然后在FORM1窗体中添加ADODC控件和DATAGRID控件,将DATAGRID1的属性DATASOURCE选ADODC1,打开ADODC1控件属性页使用连接字符串,选生成,在提供者选项中ACCESS数据库选MICROSOFT jet 4.0 OLE DB Provider,然后按要求连接数据库等。在ADODC1控件属性页使用连接字符串空白文本窗口中就有一长串字符串,注意该字符串可复制到程序代码用于编程。ADODC1控件属性页的数据源内有命令文本(SQL)编写窗口可编写SQL查询语言。该窗口的SQL语句可复制到程序代码用于编程。 SQL查询语言主要结构为: Select 查询字段 from 表名 Where 查询条件语句 [排序语句或分组语句] 查询字段必须分别用(西文)逗号分开或就用一个*号代替,上述查询中排序语句建议最好应用。 SQL查询语言如有错程序运行时告诉你出错,作相应改动即可。本人一般先按上述连接,SQL用"SELECT * FROM TabelName"作调试,无问题,用一个按钮孔件将前述需复制的连接字符串和SQL查询语言先复制于按钮控件的CLICK事件中备着,以便放着以后使用。然后删去ADODC1孔件,再添加ADODC1控件再添其他内容。 以上不知是否说清楚?SQL查询语言多写多用就会熟练,以上供提问者参考。 参考技术C Public conn As New ADODB.ConnectionPublic rs As New ADODB.RecordsetPublic addFlag As BooleanPublic Function OpenCn() As BooleanDim mag As StringOn Error GoTo strerrmagSet conn = New ADODB.Connectionconn.ConnectionTimeout = 25conn.Provider = "sqloledb"conn.Properties("data source").Value = "127.0.0.1" '服务器的名字conn.Properties("initial catalog").Value = "chart" '库名conn.Properties("integrated security").Value = "SSPI" '登陆类型conn.OpenOpenCn = TrueaddFlag = TrueExit Functionstrerrmag:mag = "Data can't connect"Call MsgBox(mag, vbOKCancel, "Error:Data connect")addFlag = FalseEndEnd FunctionPublic Sub clocn()On Error Resume NextIf conn.State <> adStateClosed Then conn.CloseSet conn = NothingEnd SubPublic Function openrs(ByVal strsql As String) As Boolean '连接数据库记录集Dim mag As String Dim rpy As BooleanOn Error GoTo strerrmagSet rs = New ADODB.RecordsetIf addFlag = False Then rpy = TrueWith rs.ActiveConnection = conn.CursorLocation = adUseClient.CursorType = adOpenKeyset.LockType = adLockOptimistic.Open strsqlEnd WithaddFlag = Trueopenrs = TrueExit Functionstrerrmag:mag = "data not connect"Call MsgBox(mag, vbOKCancel, "error:connect")openrs = FalseEndEnd FunctionPublic Sub clors()On Error Resume NextIf rs.State <> adStateClosed Then rs.CloneSet rs = NothingEnd Sub

以上是关于VB连接MySql出现:方法'`'作用于对象'`'失败的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu下连接mysql出现 ERROR 1698 (28000): Access denied for user 'root'@'localhost'错误解决方法

连接数据库出现错误:1045-Access denied for user 'root'@'localhost'解决方法

连接MySQL数据库出现错误:Access denied for user 'root'@'localhost' (using password:YES)

MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded

MySQL刚安装完,连接的时候 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded

MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded