如何用visualbasic6实现MySQL查询

如何用visualbasic6实现MySQL查询,mysql,vb6,Mysql,Vb6,两件事: 第一:我到处都在谷歌搜索,包括stackoverflow。关于sql和vb6的问题都是关于连接字符串的。我把这件事记下来了。对mysql查询的任何引用都是针对查询本身的,但不与vb6或任何语言相切 第二:我非常精通PHP/MySQL,所以我不寻求这方面的帮助 我一直坚持的是,vb6处理sql查询的方式与php略有不同。所以,一旦连接,我如何告诉vb6查找字段。 php版本 $sql = "SELECT * FROM table field = data where something

两件事:

第一:我到处都在谷歌搜索,包括stackoverflow。关于sql和vb6的问题都是关于连接字符串的。我把这件事记下来了。对mysql查询的任何引用都是针对查询本身的,但不与vb6或任何语言相切

第二:我非常精通PHP/MySQL,所以我不寻求这方面的帮助

我一直坚持的是,vb6处理sql查询的方式与php略有不同。所以,一旦连接,我如何告诉vb6查找字段。 php版本

$sql = "SELECT * FROM table field = data where something = that";
$query = mysql_query($sql) or die("bad query: <br>$sql<br>".mysql_error());

工作完美。

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
通常,使用VB6(天哪,人们还在使用它吗??),您可以使用ADO连接到数据库。ADO是一个常见的数据库类,它允许您对任何数据库使用相同的语法

您提供的连接代码使用的是RDO,它是ADO的前身(由于VB6/ADO现在非常古老,这意味着RDO是历史性的)。出于您的目的,这两种方法的工作原理应该相当相似,但我建议您在编写太多代码之前,如果有机会,现在就切换到ADO

在编写连接代码时,此线程似乎为其他人指明了正确的方向:

一旦建立了连接,就需要运行查询。如果您习惯于从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

希望这能有所帮助。

wow,所以vb6对于MySQL项目来说有点“代码繁重”,哈哈。好吧,我想我可以做到这一点——更新也一样正确,只需更改commandtext(在本例中)?同意-它看起来确实代码繁重。它使用参数,而不仅仅是动态构建SQL。要在不返回数据的情况下执行查询,请使用
cmd.execute rowCount,(adCmdText或adExecuteNoRecords)
其中rowCount是一个整数,它将包含受影响查询的行数。动态生成参数可防止SQL注入(意外或故意)因此,在这个问题上,它比PHP有一些优势。有趣的是,PHP可能更容易受到SQL注入的影响,因为它通常是公开的。如果有任何问题,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