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