Vb.net 根据其他列数据从两个表中检索数据
这是公司名称组合框。。其中用户选择名称。。 我希望公司名称显示在网格中。。。但根据表格,只有一列公司代码 我应该在公司表中显示带有公司名称的表部门数据 这两个表都有共同的公司代码 到目前为止我一直在做这件事。。但是出错了Vb.net 根据其他列数据从两个表中检索数据,vb.net,Vb.net,这是公司名称组合框。。其中用户选择名称。。 我希望公司名称显示在网格中。。。但根据表格,只有一列公司代码 我应该在公司表中显示带有公司名称的表部门数据 这两个表都有共同的公司代码 到目前为止我一直在做这件事。。但是出错了 Private Sub btnDivUpdate\u单击(ByVal发送者作为系统对象,ByVal e作为 System.EventArgs)处理btnDivUpdate。单击 Dim con作为新的SqlConnection(“数据源”) con.Open() Dim cmd
Private Sub btnDivUpdate\u单击(ByVal发送者作为系统对象,ByVal e作为
System.EventArgs)处理btnDivUpdate。单击
Dim con作为新的SqlConnection(“数据源”)
con.Open()
Dim cmd作为新的SqlCommand(“更新tblDivision set tblCompany.CompanyName=””和
CMBDIVOCOMNAME.Text&“”,tblDivision.Description1='”&txtDivDesc.Text&“,
tblDivision.DivSeq='”&txtDivSeq.Text&',tblDivision.CreatedBy='”&
txtDivCreatedBy.Text&“”,tblDivision.CreatedDate='”&
txtDivCreatedDate.Text&“”,tblDivision.LastModifiedBy='”&
txtDivLastModifiedBy.Text&“”,tblDivision.LastModifiedDate='”&
txtDivLastModifiedDate.Text&“在tblDivision.CompanyCode=
tblCompany.CompanyCode,其中DivisionCode='“&cmbDivCode.Text&'”,con)
cmd.CommandType=CommandType.Text
cmd.ExecuteNonQuery()
Dim cmd2作为新的SqlCommand(“从tblDivision中选择*,con)
Dim da2作为新的SqlDataAdapter(cmd2)
Dim ds2作为新数据集()
da2.填充(ds2,
“TBL愿景”)
DataGridDivision.DataSource=ds2.Tables(0)
con.Close()
端接头
您需要两个单独的sql语句来完成此操作,因为您一次只能对一个表写入更改。幸运的是,您可以将它们作为同一执行命令和事务的一部分发送。在这期间,我们将把您的
SELECT
语句纳入考虑范围,并修复sql注入漏洞和潜在的拒绝服务问题。生成的代码将比您拥有的代码长一点,但它将更易于遵循和维护,无论长度如何,而且会更安全:
Private子btnDivUpdate\u单击(ByVal发送方作为System.Object,ByVal e作为System.EventArgs)处理btnDivUpdate。单击
Dim sql作为字符串=_
“开始事务t1;”&_
“更新tblDivision”和_
“集合描述1=@Description”&_
“,DivSeq=@Sequence”&_
“,CreatedBy=@CreatedBy”&_
“,CreatedDate=@CreatedDate”&_
“,LastModifiedBy=@LastModifiedBy”&_
,LastModifiedDate=@LastModifiedDate
“其中DivisionCode=@DivisionCode;”_
“更新tblCompany”和_
“设置tblCompany.CompanyName=@CompanyName”
“来自TBL公司”和_
“tblDivision.CompanyCode=tblCompany.CompanyCode上的内部联接tblDivision”&_
其中tblDivision.DivisionCode=@DivisionCode;“&_
“提交事务t1;”&_
“从tblDivision中选择*”
Dim dt作为新数据表()
使用con作为新的SqlConnection(“数据源”)_
cmd作为新的SqlCommand(sql,con)
“我不得不猜测这里的柱子长度
cmd.Parameters.Add(“@Description”,SqlDbType.NVarChar,200).Value=txtDivDesc.Text
cmd.Parameters.Add(“@Sequence”,SqlDbType.Int).Value=CInt(txtDivSeq.Text)
cmd.Parameters.Add(“@CreatedBy”,SqlDbType.NVarChar,40).Value=txtDivCreatedBy.Text
cmd.Parameters.Add(“@CreatedDate”,SqlDbType.DateTime).Value=CDate(txtDivCreatedDate.Text)
cmd.Parameters.Add(“@LastModifiedBy”,SqlDbType.NVarChar,40)。Value=txtDivLastModifiedBy.Text
cmd.Parameters.Add(“@LastModifiedDate”,SqlDbType.DateTime).Value=CDate(txtDivLastModifiedDate.Text)
cmd.Parameters.Add(“@DivisionCode”,SqlDbType.NVarChar,10)。Value=cmbDivCode.Text
cmd.Parameters.Add(“@CompanyName”,SqlDbType.NVarChar,60)。Value=cmbDivComName.Text
con.Open()
将rdr用作SqlDataReader=cmd.ExecuteReader()
dt.负载(rdr)
终端使用
终端使用
DataGridDivision.DataSource=dt
端接头
您遇到了什么错误?啊。这将容易受到sql注入攻击。它实际上是在乞求被黑客攻击,但不是我的反对票。每个人总有一天会遇到这种情况。