两件事:
首先:我到处搜索,包括stackoverflow。关于sql vs vb6的问题是关于连接字符串。我有这个问题。对mysql查询的任何引用都是针对查询本身的 - 但不是与vb6或任何语言相关
第二:我非常精通PHP / MySQL,所以我不寻求帮助。
我坚持的是,vb6如何处理与php不同的(很多)sql查询。所以,一旦我连接,如何告诉vb6查找字段。 php版
$sql = "SELECT * FROM table field = data where something = that";
$query = mysql_query($sql) or die("bad query: <br>$sql<br>".mysql_error());
然后使用获取数组或使用它。
这是如何在vb6中完成的?
我看到一些来源提到了rdoQry。有人可以通过示例代码阐明这一点吗?我不需要连接部分。有这个设定。 我的联系是:
Dim cnMySql As New rdoConnection
cnMySql.CursorDriver = rdUseOdbc
cnMySql.Connect = "uid=root;pwd=root;" _
& "server=127.0.0.1;" _
& "driver={MySQL ODBC 3.51 Driver};" _
& "database=mydatabase;dsn=;"
cnMySql.EstablishConnection
完美无缺。
答案 0 :(得分:2)
ADO是RDO的继承者。我使用类似于此的代码使用ADO从Visual Basic查询MySQL。
Dim conn As New ADODB.Connection
conn.Open "connection string"
Dim cmd As New ADODB.Command
With cmd
.ActiveConnection = conConnection
.CommandText = "SELECT fields FROM table WHERE condition = ?"
.CommandType = adCmdText
End With
Dim param As New ADODB.Parameter
Set param = cmd.CreateParameter("condition", adVarChar, adParamInput, 5, "value")
cmd.Parameters.Append p
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockOptimistic
Dim temp
Do While Not rs.EOF
temp = rs("field")
rs.MoveNext
Loop
rs.Close
conn.Close
答案 1 :(得分:0)
通常情况下,使用VB6(天哪,人们还在使用这个??),您将使用ADO连接到数据库。 ADO是一个通用的数据库类,它允许您对任何数据库使用相同的语法。
您提供的连接代码使用的是RDO,这是ADO的前身(因为VB6 / ADO现在很老了,这意味着RDO具有历史意义)。为了你的目的,两者应该工作相似,但是如果你有机会,我建议你现在切换到ADO,然后再编写太多的代码。
在撰写连接代码时,这个主题似乎指向其他人正确的方向:http://www.vbforums.com/showthread.php?t=654819
一旦建立了连接,就需要运行查询。如果您习惯于从PHP查询,那么这个过程应该是有意义的;它基本上是相同的过程,尽管你通常需要配置比PHP更多的选项。它看起来像这样:
Set rs = New ADODB.Recordset
rs.ActiveConnection = adoconn
rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
rs.Open "SELECT blah blah blah"
While Not rs.EOF
Text1.Text = rs("Name")
rs.MoveNext
Wend
rs.Close
希望有所帮助。