Vb.net 连接已打开
我刚开始做这个项目,因为我是VB.net的新手 更新部分在数据库中已有数据的情况下工作,但插入部分在没有所述Vb.net 连接已打开,vb.net,Vb.net,我刚开始做这个项目,因为我是VB.net的新手 更新部分在数据库中已有数据的情况下工作,但插入部分在没有所述IdNo数据的情况下不工作。当我按save时,它表示连接已打开 Public Sub AddBusinessInfo() Dim dr As MySqlDataReader Using conn As New MySqlConnection(connString) Using cmd As New MySqlCommand("SELECT * FROM tb
IdNo
数据的情况下不工作。当我按save时,它表示连接已打开
Public Sub AddBusinessInfo()
Dim dr As MySqlDataReader
Using conn As New MySqlConnection(connString)
Using cmd As New MySqlCommand("SELECT * FROM tblbusinessinfo WHERE IdNo=@IdNo", conn)
Try
conn.Open()
With cmd
.CommandType = CommandType.Text
.Parameters.AddWithValue("@IdNo", IDD)
End With
dr = cmd.ExecuteReader
With dr
.Read()
If (dr.HasRows) Then
Using cmd1 As New MySqlCommand("UPDATE tblbusinessinfo SET BusinessType=@BusinessType, BusinessName=@BusinessName, RegDate=@RegDate,
MotherCompany=@MotherCompany, TradeName=@TradeName, IPORegNo=@IPORegNo, Reg=@Reg, Province=@Province, District=@District,
CityMuni=@CityMuni, Brgy=@Brgy, ZipCode=@ZipCode, HBNo=HBNo, RFNo=@RFNo, BldgName=@BldgName, StName=@StName,
TelACode=@TelACode, TelNo=@TelNo, FaxACode=@FaxACode, FaxNo=@FaxNo, Email=@Email,
Mobile=@Mobile, SocialMedia=@SocialMedia WHERE IdNo=@IdNo", conn)
With cmd1
.CommandType = CommandType.Text
.Parameters.AddWithValue("@BusinessType", rbBTypeVal)
.Parameters.AddWithValue("@BusinessName", txtBName.Text)
.Parameters.AddWithValue("@RegDate", dtBusinessRegDate.Value)
.Parameters.AddWithValue("@MotherCompany", If(String.IsNullOrEmpty(txtMotherComp.Text), DBNull.Value, txtMotherComp.Text))
.Parameters.AddWithValue("@TradeName", If(String.IsNullOrEmpty(txtTradeName.Text), DBNull.Value, txtTradeName.Text))
.Parameters.AddWithValue("@IPORegNo", If(String.IsNullOrEmpty(txtIPOReg.Text), DBNull.Value, txtIPOReg.Text))
.Parameters.AddWithValue("@Reg", cmbReg.Text)
.Parameters.AddWithValue("@Province", cmbProvince.Text)
.Parameters.AddWithValue("@District", lblDistrict.Text)
.Parameters.AddWithValue("@CityMuni", cmbCityMuni.Text)
.Parameters.AddWithValue("@Brgy", cmbBrgy.Text)
.Parameters.AddWithValue("@ZipCode", lblZipCode.Text)
.Parameters.AddWithValue("@HBNo", If(String.IsNullOrEmpty(txtHBNo.Text), DBNull.Value, txtHBNo.Text))
.Parameters.AddWithValue("@RFNo", If(String.IsNullOrEmpty(txtRFNo.Text), DBNull.Value, txtRFNo.Text))
If (txtBuildingName.Text = Nothing) Then
.Parameters.AddWithValue("@BldgName", If(String.IsNullOrEmpty(txtBuildingName.Text), DBNull.Value, txtBuildingName.Text))
Else
.Parameters.AddWithValue("@BldgName", StrConv(txtBuildingName.Text, VbStrConv.ProperCase))
End If
If (txtStname.Text = Nothing) Then
.Parameters.AddWithValue("@StName", If(String.IsNullOrEmpty(txtStname.Text), DBNull.Value, txtStname.Text))
Else
.Parameters.AddWithValue("@StName", StrConv(txtStname.Text, VbStrConv.ProperCase))
End If
.Parameters.AddWithValue("@TelACode", If(String.IsNullOrEmpty(txtLAC.Text), DBNull.Value, txtLAC.Text))
.Parameters.AddWithValue("@TelNo", If(String.IsNullOrEmpty(txtLTN.Text), DBNull.Value, txtLTN.Text))
.Parameters.AddWithValue("@FaxACode", If(String.IsNullOrEmpty(txtFAC.Text), DBNull.Value, txtFAC.Text))
.Parameters.AddWithValue("@FaxNo", If(String.IsNullOrEmpty(txtFTN.Text), DBNull.Value, txtFTN.Text))
.Parameters.AddWithValue("@Email", If(String.IsNullOrEmpty(txtBusinessEmail.Text), DBNull.Value, txtBusinessEmail.Text))
.Parameters.AddWithValue("@Mobile", If(String.IsNullOrEmpty(txtMobile.Text), DBNull.Value, txtMobile.Text))
.Parameters.AddWithValue("@SocialMedia", If(String.IsNullOrEmpty(txtSocMedia.Text), DBNull.Value, txtSocMedia.Text))
.Parameters.AddWithValue("@IdNo", IDD)
End With
conn.Close()
If (txtBName.Text = "" Or cmbReg.Text = "" Or cmbProvince.Text = "" Or cmbCityMuni.Text = "" Or cmbBrgy.Text = "" Or lblDistrict.Text = "") Then
MsgBox("Fields with red texts are required!")
Else
Dim res As Integer = MsgBox("Are you sure you want to update the data?", MsgBoxStyle.YesNo, "System")
If (res = MsgBoxResult.Yes) Then
conn.Open()
cmd1.ExecuteNonQuery()
MsgBox("Success!")
End If
End If
End Using
conn.Close()
Else
Using cmd2 As New MySqlCommand("INSERT INTO tblbusinessinfo (IdNo, BusinessType, BusinessName, RegDate, MotherCompany, TradeName, IPORegNo, Reg,
Province, District, CityMuni, Brgy, ZipCode, HBNo, RFNo, BldgName, StName, TelACode, TelNo, FaxACode,
FaxNo, Email, Mobile, SocialMedia) VALUES (@IdNo, @BusinessType, @BusinessName, @RegDate, @MotherComp, @TradeName,
IPORegNo, @Reg, @Province, @District, @CityMuni, @Brgy, @ZipCode, @HBNo, @RFNo, @BldgName, @StName,
@TelACode, @TelNo, @FaxACode, @FaxNo, @Email, @Mobile, @SocialMedia)")
conn.Open()
With cmd2
.CommandType = CommandType.Text
.Parameters.AddWithValue("@IdNo", IDD)
.Parameters.AddWithValue("@BusinessType", rbBTypeVal)
.Parameters.AddWithValue("@BusinessName", txtBName.Text)
.Parameters.AddWithValue("@RegDate", dtBusinessRegDate.Value)
.Parameters.AddWithValue("@MotherComp", If(String.IsNullOrEmpty(txtMotherComp.Text), DBNull.Value, txtMotherComp.Text))
.Parameters.AddWithValue("@TradeName", If(String.IsNullOrEmpty(txtTradeName.Text), DBNull.Value, txtTradeName.Text))
.Parameters.AddWithValue("@IPORegNo", If(String.IsNullOrEmpty(txtIPOReg.Text), DBNull.Value, txtIPOReg.Text))
.Parameters.AddWithValue("@Reg", cmbReg.Text)
.Parameters.AddWithValue("@Province", cmbProvince.Text)
.Parameters.AddWithValue("@District", lblDistrict.Text)
.Parameters.AddWithValue("@CityMuni", cmbCityMuni.Text)
.Parameters.AddWithValue("@Brgy", cmbBrgy.Text)
.Parameters.AddWithValue("@ZipCode", lblZipCode.Text)
.Parameters.AddWithValue("@HBNo", If(String.IsNullOrEmpty(txtHBNo.Text), DBNull.Value, txtHBNo.Text))
.Parameters.AddWithValue("@RFNo", If(String.IsNullOrEmpty(txtRFNo.Text), DBNull.Value, txtRFNo.Text))
If (txtBuildingName.Text = Nothing) Then
.Parameters.AddWithValue("@BldgName", If(String.IsNullOrEmpty(txtBuildingName.Text), DBNull.Value, txtBuildingName.Text))
Else
.Parameters.AddWithValue("@BldgName", StrConv(txtBuildingName.Text, VbStrConv.ProperCase))
End If
If (txtStname.Text = Nothing) Then
.Parameters.AddWithValue("@StName", If(String.IsNullOrEmpty(txtStname.Text), DBNull.Value, txtStname.Text))
Else
.Parameters.AddWithValue("@StName", StrConv(txtStname.Text, VbStrConv.ProperCase))
End If
.Parameters.AddWithValue("@TelACode", If(String.IsNullOrEmpty(txtLAC.Text), DBNull.Value, txtLAC.Text))
.Parameters.AddWithValue("@TelNo", If(String.IsNullOrEmpty(txtLTN.Text), DBNull.Value, txtLTN.Text))
.Parameters.AddWithValue("@FaxACode", If(String.IsNullOrEmpty(txtFAC.Text), DBNull.Value, txtFAC.Text))
.Parameters.AddWithValue("@FaxNo", If(String.IsNullOrEmpty(txtFTN.Text), DBNull.Value, txtFTN.Text))
.Parameters.AddWithValue("@Email", If(String.IsNullOrEmpty(txtBusinessEmail.Text), DBNull.Value, txtBusinessEmail.Text))
.Parameters.AddWithValue("@Mobile", If(String.IsNullOrEmpty(txtMobile.Text), DBNull.Value, txtMobile.Text))
.Parameters.AddWithValue("@SocialMedia", If(String.IsNullOrEmpty(txtSocMedia.Text), DBNull.Value, txtSocMedia.Text))
End With
conn.Close()
If (txtBName.Text = "" Or cmbReg.Text = "" Or cmbProvince.Text = "" Or cmbCityMuni.Text = "" Or cmbBrgy.Text = "" Or lblDistrict.Text = "") Then
MsgBox("Fields with red texts are required!")
Else
Dim res As Integer = MsgBox("Are you sure you want to update the data?", MsgBoxStyle.YesNo, "System")
If (res = MsgBoxResult.Yes) Then
conn.Open()
cmd2.ExecuteNonQuery()
MsgBox("Success!")
End If
End If
End Using
End If
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Using
End Sub
已经解决了。cmd2缺少参数,应如下所示:
Using cmd2 As New MySqlCommand("INSERT INTO tblbusinessinfo (IdNo, BusinessType, BusinessName, RegDate, MotherCompany, TradeName, IPORegNo, Reg,
Province, District, CityMuni, Brgy, ZipCode, HBNo, RFNo, BldgName, StName, TelACode, TelNo, FaxACode,
FaxNo, Email, Mobile, SocialMedia) VALUES (@IdNo, @BusinessType, @BusinessName, @RegDate, @MotherComp, @TradeName,
IPORegNo, @Reg, @Province, @District, @CityMuni, @Brgy, @ZipCode, @HBNo, @RFNo, @BldgName, @StName,
@TelACode, @TelNo, @FaxACode, @FaxNo, @Email, @Mobile, @SocialMedia)", conn)'
这是因为您正在调用
conn.Open()
两次:
首先在开头,紧跟在Try
关键字之后
第二次,如果if(dr.HasRows)则
条件失败,则转到Else
部分,在该部分中,使用语句在之后打开连接()
只要删除额外的Open
方法,您就会没事:)在cmd2声明中,您忘记指定连接变量
Using cmd2 As New MySqlCommand("INSERT INTO tblbusinessinfo (...)", ---> conn <---)
对不起,我应该删除哪一个?请指出,因为我真的很难过。很抱歉again@lowkeylegendarymike使用
语句的之后的一个。@Michael Turczyn更新有效,但插入无效。它说连接必须是有效的,并且在insert语句之前openTry dispositiondr
对象:dr.Dispose()
在disposition dral之后仍然存在相同的错误。已经解决了它。cmd2缺少参数您根本不需要读卡器,如果只需要知道记录是否存在,也不需要下拉整个记录。只需使用tblbusinessinfo中的选择Count(*),其中IdNo=@IdNo代码>然后cmd.ExecuteScalar()
是的。我刚刚注意到了,正在编辑这篇文章。无论如何谢谢你
cmd2.Connection = conn