回 帖 发 新 帖 刷新版面

主题:vb.net连数据库后数据更新(updata)的问题

用如下代码可以实现对表1里的123456号同学的姓名改成'同学1':
Dim cmd As New OleDbCommand("update 表1 set 姓名='同学1' where 学号='123456'", Me.OleDbConnection1)
请问如何实现列名'姓名'是参数的更新呢?
我想实现如下的代码功能,让同学选择要更新的列新这个变量a:
Dim cmd As New OleDbCommand("update 表1 set 变量a='同学1' where 学号='123456'", Me.OleDbConnection1)
因为这个表有很多列,每一个列来写一句更新语句,再根据判断调用就不太好吧
请问有没有别的可以实现这种功能的写法?

回复列表 (共3个回复)

沙发

下面是我的一部分代码
你看看吧!

dim cnn as oledbconnection
                   dim cmd as oledbcommand
                   dim cnnstr as string
                   dim str as string
                   cnnstr="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("/data/mydata.mdb")
                   cnn=new oledbconnection(cnnstr)
                   cnn.open()
         str="update ganshi set 序号=@序号,所属部门=@所属部门,姓名=@姓名,专业年级=@专业年级,宿舍号=@宿舍号,联系方式=@联系方式,QQ=@QQ,Email=@Email where 姓名=@key"
              cmd=new oledbcommand(str,cnn)
              cmd.parameters.add(new oledbparameter("@序号",oledbtype.char,3))
              cmd.parameters.add(new oledbparameter("@所属部门",oledbtype.char,10))
              cmd.parameters.add(new oledbparameter("@姓名",oledbtype.char,10))
              cmd.parameters.add(new oledbparameter("@专业年级",oledbtype.char,30))
              cmd.parameters.add(new oledbparameter("@宿舍号",oledbtype.char,30))
              cmd.parameters.add(new oledbparameter("@联系方式",oledbtype.char,20))
              cmd.parameters.add(new oledbparameter("@QQ",oledbtype.char,20))
              cmd.parameters.add(new oledbparameter("@Email",oledbtype.char,40))
              cmd.parameters.add(new oledbparameter("@key",oledbtype.char))
              dim tx(8) as textbox
              tx(1)=e.item.cells(1).controls(0)
              tx(2)=e.item.cells(2).controls(0)
              tx(3)=e.item.cells(3).controls(0)
              tx(4)=e.item.cells(4).controls(0)
              tx(5)=e.item.cells(5).controls(0)
              tx(6)=e.item.cells(6).controls(0)
              tx(7)=e.item.cells(7).controls(0)
              tx(8)=e.item.cells(8).controls(0)
              cmd.parameters("@key").value=dg.datakeys(e.item.itemindex)
              cmd.parameters("@序号").value=tx(1).text
              cmd.parameters("@所属部门").value=tx(2).text
              cmd.parameters("@姓名").value=tx(3).text
              cmd.parameters("@专业年级").value=tx(4).text
              cmd.parameters("@宿舍号").value=tx(5).text
              cmd.parameters("@联系方式").value=tx(6).text
              cmd.parameters("@QQ").value=tx(7).text
              cmd.parameters("@Email").value=tx(8).text
              cmd.executenonquery()
              cnn.close()

板凳

楼上好像没明白我的意思吧```
我是想实现更改的字段可以动态选择
在下面的更新语句中:
Dim cmd As New OleDbCommand("update 表1 set 变量a='同学1' where 学号='123456'", Me.OleDbConnection1)
变量a是要更新的那一列的列名,我希望这个列名可以动态选择,请问如何实现?

3 楼

可以把变量a用一个dropdownlist来存储啊!然后设置的数据来源为你要使用的那个表(用程序来设置,例如t1.datasource=dt,dt为datatable的一个事例)!
其中属性为
<asp:dropdownlist id="t1" autopostback="true" onselectedindexchanged="b3_click" runat="server" BackColor="#FFFFC0" ForeColor="#8080FF" datatextfield="姓名" datavaluefield="姓名" width="79px"></asp:dropdownlist>

这个   datatextfield="姓名" datavaluefield="姓名"
来获取你要使用的字段

我用这个方法是成功的!

我来回复

您尚未登录,请登录后再回复。点此登录或注册