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

vb的ADO控件如何连接 *** 作MYSQL数据库啊,第1张

由于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 '连接到 mysqlsConnect="Provider=SQLOLEDB.1Persist Security Info=FalseUser ID=sapwd=123456Initial Catalog=softdownData 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 Wendrs.Close Set rs = NothingcnMySQL.Close Set cnMySQL = NothingcnMSSQL.Close Set cnMSSQL = Nothing End Sub

可能是因为数据库缓冲的原因。

虽然楼主是更新 *** 作,但肯定是要首先进行查询定位的。而如果一个sql查询,第一次执行后,数据库一般不会马上释放这个查询的内存结果集,甚至另外一个sql查询执行后,也会被缓存起来。可以缓存多少和查询结果,依赖于内存的大小。数据库一般会最大限度的缓存多个查询结果,数据库会自动调整释放旧的缓存,为新的缓存提供空间,所以数据库(如SQL Server)经常显示占用很大内存。

然后,如果有人执行查询,数据库首先检查有缓存中相同的,有的话,省略查询过程,很快输出缓存中的数据给用户;如果没有,才进行新的查询。

楼主可以试试时增加一个Where条件,每次执行时,改变一下where条件,比较一下速度。

楼上讲的是VB2005的连接方法,不知道你用的是什么版本的VB,我给你一个VB6.0的连接方法吧

先在本机上安装最新的ODBC CONNECTER/mysql

无需设置ODBC,就可以使用.

注意MYSQL的帐户登录是根据主机的,设置好MYSQL的帐户后再做测试.

测试代码:

Dim conn As ADODB.Connection

Dim rs As ADODB.Recordset

Dim fld As ADODB.Field

Dim sql As String

'connect to MySQL server using MySQL ODBC 3.51 Driver

Set conn = New ADODB.Connection

conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}" _

&"SERVER=192.168.0.1" _

&" DATABASE=db_name" _

&"UID=usernamePWD=passwordOPTION=3"

conn.Open

'create table

conn.Execute "DROP TABLE IF EXISTS my_ado"

conn.Execute "CREATE TABLE my_ado(id int not null primary key, name varchar(20)," _

&"txt text, dt date, tm time, ts timestamp)"

'direct insert

conn.Execute "INSERT INTO my_ado(id,name,txt) values(1,100,'venu')"

conn.Execute "INSERT INTO my_ado(id,name,txt) values(2,200,'MySQL')"

conn.Execute "INSERT INTO my_ado(id,name,txt) values(3,300,'Delete')"

Set rs = New ADODB.Recordset

rs.CursorLocation = adUseServer

'fetch the initial table ..

rs.Open "SELECT * FROM my_ado", conn

Debug.Print rs.RecordCount

rs.MoveFirst

Debug.Print String(50, "-") &"Initial my_ado Result Set " &String(50, "-")

For Each fld In rs.Fields

Debug.Print fld.name,

Next

Debug.Print

Do Until rs.EOF

For Each fld In rs.Fields

Debug.Print fld.value,

Next

rs.MoveNext

Debug.Print

Loop

rs.Close

conn.Close


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7446785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存