gpt4 book ai didi

mysql - VB.Net)在连接表上使用条件数据读取器

转载 作者:行者123 更新时间:2023-11-29 19:13:14 30 4
gpt4 key购买 nike

我正在尝试从连接表收集数据,当前显示空值(未发现错误)。我认为我的代码效率不高。但这就是我正在尝试的:

conn.Open()
sqlcmd = New MySqlCommand("select tabsen.id_absen, tsiswa.NIS, tsiswa.nama, tabsen.alpa, tabsen.izin, tabsen.sakit, tabsen.tahun_ajaran from tabsen join tsiswa on tabsen.NIS = tsiswa.NIS where tsiswa.NIS like '%" & txtnis.Text & "%'", conn)
dr = sqlcmd.executereader()
dr.Read()
If dr.HasRows Then

txtid.Text = dr.Item("id_absen")
txtnis.Text = dr.Item("NIS")
txtnama.Text = dr.Item("nama")
txta.Text = dr.Item("alpa")
txti.Text = dr.Item("izin")
txts.Text = dr.Item("sakit")
cmbtahun.Text = dr.Item("tahun_ajaran")
txta.Focus()
btnsave.Text = "UPDATE"
btndelete.Enabled = True
txtjumlah.Enabled = True
cmbpredikat.Enabled = True
cmbtahun.Enabled = True
txtnis.Enabled = False
dr.Close()

Else
While dr.Read()
txtnama.Text = dr("nama")
End While
dr.Close()
MsgBox("data absensi belum diisi")
End If
conn.Close()

如果找到行,它就像一个魅力。但是,当表“tabsen”上为空时,没有错误,但 txtnama.Text 没有显示其“nama”。

the problem

我想大家看代码就明白了。我无法解释太多,因为我的英语不够好。

最佳答案

... from tabsen join tsiswa on ...

这会产生 Inner Join在两个表上,只有当两个表都有匹配的数据时才会提供结果。

使用 Right (Outer) Join

... from tabsen right join tsiswa on ...

或者Left (Outer) Join

... from tsiswa left join tabsen on ...

话虽如此,请注意,如果 tabsen 不包含匹配的行,那么其所有属性均为 NULL 值。
因此,在将数据读取器中的值分配给文本框时,您必须检查:

Dim id_absen = dr.Item("id_absen") 
txtid.Text = If(id_absen<> DBNull.Value, id_absen.ToString(), String.Empty)
...

顺便说一句...我建议您在 VB 文件的最顶部设置Option Strict On。会给你一些编译错误,但会在将来为你节省很多严重的错误。

关于mysql - VB.Net)在连接表上使用条件数据读取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910123/

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