gpt4 book ai didi

mysql - 奇怪的行为 - 对于相同的 SQL,phpMyAdmin 和 VS 2017 中的结果不同

转载 作者:行者123 更新时间:2023-11-29 15:39:06 28 4
gpt4 key购买 nike

我知道这里有一些关于 phpMyAdmin 和 PHP 之间奇怪行为的帖子,但在 VB.Net(VS 2017)中使用 MySQL 连接器时,我遇到了一个非常奇怪的情况

使用 MySQLData.dll 版本 = 6.10.6.0

Database server
Server: Localhost via UNIX socket
Server type: MySQL
Server connection: SSL is not being used Documentation
Server version: 5.6.43 - MySQL Community Server (GPL)
Protocol version: 10
Server charset: UTF-8 Unicode (utf8)
Web server
cpsrvd 11.78.0.38
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 7.2.7
phpMyAdmin
Version information: 4.8.3

在 phpMyAdmin 中执行 SQL 时,我得到了正确的答案,因为它返回两行。然而,在 VB.Net 中它只返回一行。我猜这可能与 MySQL.Data.dll 有关?

我在调试中运行代码,在创建 SQL 后设置一个断点,然后将其复制并粘贴到 MyAdmin 中。

            Dim tblDataTable As New DataTable
Dim sql As String = ""
sql = "
select
s.id,
s.firstname,
s.surname,
s.dob,
s.ref,
s.fb,
s.status,
r.type,
r.rate,
r.perweek,
r.peryear,
r.prac,
r.sused,
r.left,
h.hep
from
tbl_s as s
left join tbl_ssr as r
on s.id = r.stid
left join tbl_h as h
on s.hei = h.code
where
s.id = @currentid
"
'This has been tried with both a parameter and a hard coded value, both with the same erroneous results.
Debug.Print(sql)
Dim cmd As New MySqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@currentid", currentID)
If conn.State <> ConnectionState.Open Then
conn.Open()
End If
tblDataTable = New DataTable
Using dataRead As MySqlDataReader = cmd.ExecuteReader()
tblDataTable.Load(dataRead)
End Using
Debug.Print(tblDataTable.Rows.Count.ToString + "rows")
Dim rv As frmReportViewer = generateTimeSheets(tblDataTable)
rv.Name = "Timesheet"
rv.Text = "Timesheet"
rv.MdiParent = MDIParent1
rv.Show()

SQL 应返回 2 行,但 tblDataTable 中只有 1 行。

只是为了澄清...Vb.Net 代码提取了一个正确的记录,但不是全部。

最佳答案

似乎 VB.Net 连接器对您要求它执行的操作有点挑剔。尝试了各种不同的JOIN函数和命令,在VB中仍然只返回1行。

最终重新排序了查询,查看我想要检索的内容以及它们的来源。

仍然没有回答为什么 VB.Net 中的相同 SQL 仅返回 1 行,而 phpMyAdmin 返回 2 行,但至少它可以正常工作。

最终的工作 SQL 是:

select 
r.sid,
s.firstname,
s.surname,
s.dob,
s.ref,
s.fb,
s.status,
s.hep,
r.type,
r.rate,
r.perweek,
r.peryear,
r.prac,
r.sused,
r.left
from
tbl_ssr as r
join tbl_s as s on r.sd = s.id

where
r.sid = @currentid

关于mysql - 奇怪的行为 - 对于相同的 SQL,phpMyAdmin 和 VS 2017 中的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com