请问数据库怎么更新不了?

deyangwangyu 2004-11-05 11:03:09
代码如下:

Imports System.Data.SqlClient
Public Class FillDS
Public SqlAdp As New SqlDataAdapter
Public Sqlconn As SqlConnection
Public Function F_FillDS(ByVal strSelect As String) As DataSet
Dim ConnString As String = "....连接到数据库的string...."
Sqlconn = New SqlConnection(ConnString)
Dim DS As New DataSet
SqlAdp.SelectCommand = New SqlCommand(strSelect, Sqlconn)
Sqlconn.Open()
DS.Clear()
SqlAdp.Fill(DS)
Sqlconn.Close()
Return DS
End Function
Public Function F_UpdateDB(ByVal dsName As DataSet)
Sqlconn.Open()
SqlAdp.Update(dsName)
Sqlconn.Close()
End Function
End Class
============================
在主窗体中:

Public c1 As New FillDS
Public ds1 As DataSet
ds1 = c1.F_FillDS("....select语句....")
......
与窗体控件绑定的代码
......
点击保存按钮后:

me.BindingContext(ds1, ds1.Tables(0).TableName).EndCurrentEdit()
ds1.AcceptChanges()
c1.F_UpdateDB(ds1)



老师们请看看这么做为什么不能更新数据库?哪里不对?运行没有任何错误提示

另外还有一个问题,没有分了,两个问题一起问,呵呵

Dim ConnString As String = ""....连接到数据库的string...."
Dim SqlConn As New SqlConnection(ConnString)
Dim dReader As SqlDataReader
Dim SqlCmd As New SqlCommand
SqlCmd.CommandText = "select * from tb1 where username = @name"
SqlCmd.CommandType = CommandType.Text
SqlCmd.Connection = SqlConn
SqlCmd.Parameters("name").Value = txtname.text
'或者SqlCmd.Parameters(0).Value = txtname.text
SqlConn.Open()
dReader = SqlCmd.ExecuteReader()
Sqlconn.close
运行后提示没有这个参数,请问是怎么回事?用"?"代替"@name"也不行。
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
koomis 2004-11-08
  • 打赏
  • 举报
回复
其实用ADAPTER来更新数据,是有很多要求的,您的DATASET要自己生成UPDATE语句,说实在的,不如自己写,建议您自己写
dim conn as new SQLconnection("")
conn.open
dim cmd as new sqlcommand("update table set field1='" & newvalue & "' where condition " ,conn)
cmd.execnoquery

deyangwangyu 2004-11-08
  • 打赏
  • 举报
回复
发现个新问题,现把这个帖子结了。晚上再提问
deyangwangyu 2004-11-07
  • 打赏
  • 举报
回复
再顶一下,希望明天能够解决
deyangwangyu 2004-11-07
  • 打赏
  • 举报
回复
请问2楼的,sqlAdp不是有个update方法吗,我看了msdn上的例子,都是直接用update方法,没有设置UpdateCommand 和 DeleteCommand就自动完成了更新。如果要添加UpdateCommand 和 DeleteCommand是不是要自己指定更新内容呢?
deyangwangyu 2004-11-07
  • 打赏
  • 举报
回复
谢谢楼上,我有点点明白了。
我用控件的方式生成了一个sqlAdp,看了看它自动生成的UpdateCommand,DeleteCommand等语句。
我把这些语句粘贴到 Public Function F_UpdateDB(ByVal dsName As DataSet) 这一段中来,并做了适当的调整,但是还是不能更新数据库。这样做对吗?
应该怎样添加UpdateCommand,DeleteCommand等语句呢?能给个例子吗?
rock29 2004-11-07
  • 打赏
  • 举报
回复
sqlAdp是有个update方法吗,之所以用update方法,没有设置UpdateCommand 和 DeleteCommand就自动完成了更新是因为sqlAdp是使控件生成的.如果你仔细看了系统自动生成的代码,可以看见系统已经自动声成了UpdateCommand,DeleteCommand等语句.
如果要自己添加UpdateCommand 和 DeleteCommand当然要自己指定更新内容
deyangwangyu 2004-11-07
  • 打赏
  • 举报
回复
up
youlongzaitian 2004-11-06
  • 打赏
  • 举报
回复
SqlCmd.CommandText = "select * from tb1 where username = @name"
@name不存在
龍过鸡年 2004-11-06
  • 打赏
  • 举报
回复
这种问题看看 MSDN 应该就能解决了:
1、不要关闭链接,为 SqlAdp 添加 UpdateCommand 和 DeleteCommand
2、你可以直接用 "select * from tb1 where username = ' & txtname.text & "'"
@name 这个东西应该出现在Sql服务器的数据库中,是一个存储过程中的变量,例如:
create procedure a
@name nvarchar(50)
as
select * from tb1 where username = @name
GO

调用: SqlCmd.CommandText = "a '" & txtname.text & "'"

lxysjl 2004-11-06
  • 打赏
  • 举报
回复
只能学习

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧