标题:DataGridView更新问题
只看楼主
whiteness
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-12
 问题点数:0 回复次数:10 
DataGridView更新问题

新学VB,刚学到DATAGRIDVIEW,不想用控件来连接数据库,所以所有的连接都是代码的,可现在不知道怎么更新DATAGRIDVIEW里的数据到数据库存,从网上找了一个函数


Public Function CreateCommandAndUpdate(ByVal connectionString As String, ByVal queryString As String) As DataSet

Dim Fdt As DataSet = New DataSet

Using connection As New SqlConnection(connectionString)
connection.Open()
Dim adapter As New SqlDataAdapter()

adapter.SelectCommand = New SqlCommand(queryString, connection)

Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)

adapter.Fill(Fdt)

' Code to modify the data in the DataSet here.

' Without the OleDbCommandBuilder this line would fail.

builder.GetUpdateCommand()
adapter.Update(Fdt)
End Using
Return Fdt
End Function


运行到 builder.GetUpdateCommand()就说出错,原因是:对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
感觉是queryString这个参数有问题,我传进来的是"select 姓名,职务 from 通讯录 where 类别='同学'"


不知道要怎么解决了,请版主指点一下,谢谢!

搜索更多相关主题的帖子: DataGridView 
2006-11-27 21:38
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
select 姓名,职务 from 通讯录 where 类别='同学'
你这个语句只是个查询功能,没有修改的意思哦???

飘过~~
2006-11-27 22:32
whiteness
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-12
得分:0 
那我应该怎么改成修改更新的意思,因为在DATAGRIDVIEW里显示的只是表只的部分字段,我不知道怎么写才是对的.
2006-11-28 08:39
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 

把 "select 姓名,职务 from 通讯录 where 类别='同学'"
改成
"update 通讯录 set 姓名=@name,职务=@Zwu,类别=@Sty where 学号=1" //假设你的表中有学号这个字段,而且是主键.
这就是根据学生的学号来进行修改相应的信息.


飘过~~
2006-11-28 17:51
whiteness
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-12
得分:0 
@name和@Zwu,@Sty是什么东西?
DATAGRIDVIEW里不止是一条记录的,可能会有多条而且都经过了修改,如果学号=1这样写不是要写很多条而且主键号也是不能控制的,能不能有一条命令把DATAGRIDVIEW里所有的经过修改的或者说不管有没有修改都更新到数据库存里啊!谢谢
2006-11-30 08:47
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
得分:0 
可以,用da.Update()方法;  'da是SqlDataAdapter

飘过~~
2006-11-30 21:49
whiteness
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-12
得分:0 
直接da.Update(ds, "通讯录")就行了?这个我试过了,好像数据库存没反应,没有数据更新进去,(DA里我绑定了多外表)
版主大大能说的详细一点吗,我很多方法都试过了,不是出错就是提示对了但数据库实际没反应.
非常感谢!!!!!
2006-12-01 09:35
whiteness
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-12
得分:0 
顶一下,请知道的朋友回答一下,谢谢
2006-12-10 21:19
whiteness
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-12
得分:0 
再顶一次.......知道的兄弟请帮下忙啊
2006-12-30 17:16
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 
不建议你使用da.update方式 这种方式是脆弱的,程序员不可控制的。我以前做的项目中出现过本来功能已经完成,但是在数据库结构没有任何变化的情况下 突然就update数据库无效的情况(不报错 但是数据库也没有变化)
你既然有querystring了
那么update使用 executenoquery方法
select使用filldataset
读取和修改数据库都由自己控制。即时数据库结构变化 维护起来也方便得多

2007-01-04 14:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-105768-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.107665 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved