标题:[求助]数据库表删除问题
只看楼主
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 

我改成这样:

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
If (Me.BindingContext(objDataSet1, "ad_class").Count > 0) Then
Me.BindingContext(objDataSet1, "ad_class").RemoveAt(Me.BindingContext(objDataSet1, "ad_class").Position)
Me.objDataSet1_PositionChanged()
str = "select * from ad_class"
Dim da As New OleDbDataAdapter(Str, cnnstr)
Dim db As New OleDbCommandBuilder(da)
da.Update(objDataSet1, "ad_class")

End If
End Sub
出现以下错误:

未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。

其他信息: DataAdapter.SelectCommand.Connection 属性需要初始化;
怎么办呀???????????????????????


我的小站:http://www.欢迎光临!
2006-10-27 00:09
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 
我在代码外面有定义:
Public cnnstr As OleDbConnection
Public str As String

我的小站:http://www.欢迎光临!
2006-10-27 00:10
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 
谁能帮我呀?
给我完整一点的代码呀..我是新手急着用呀..谢谢..

我自己试了很多次了/...实在不行呀...

我的小站:http://www.欢迎光临!
2006-10-28 16:22
wangfuli
Rank: 4
等 级:贵宾
威 望:12
帖 子:206
专家分:10
注 册:2005-11-11
得分:0 
dim da as oledbadapter
dim ds as new dataset
dim str as string="select * from tablename"
dim cnnstr as sting=" " ’自己写
Private Sub form_load()
da=new oledbadapter(str,cnnstr)
da.fill(ds,tablename)
绑定数据
end sub

Private Sub btnDelete_Click()
If (Me.BindingContext(ds, "tablename").Count > 0) Then
Me.BindingContext(ds, "tablename").RemoveAt(Me.BindingContext(ds, "tablename").Position)
Me.BindingContext(ds, "tablename").endcurrentedit
Dim db As New OleDbCommandBuilder(da)
da.Update(ds, "tablename")
End If
End Sub

2006-10-28 16:53
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 

我再去试试........


我的小站:http://www.欢迎光临!
2006-10-29 22:06
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 

..................


我的小站:http://www.欢迎光临!
2006-11-01 00:59
xtvj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-11-2
得分:0 

不知道你还会不会在呢? 我也是一个新手,很愿意和你交流一下.
我到是实现了删除数据,以下是我的代码,你先参考一下:

Imports System.Data.OleDb
Public Class Form1
Const AssociatorInfoSql As String = "SELECT * FROM AssociatorInfo ORDER BY UserID"
Const ConsumeInfoSql As String = "SELECT * FROM ConsumeInfo ORDER BY UserID"
Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Environment.CurrentDirectory & "\Associator.mdb"
Dim XTQConn As New OleDbConnection(ConnString)
Dim XTQAdapter As OleDbDataAdapter
Dim XTQDataSet As New DataSet

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
XTQConn.Open()
'填充Associatorinfo表
XTQAdapter = New OleDbDataAdapter(AssociatorInfoSql, XTQConn)
XTQDataSet.Tables.Add("AssInfoTable") '添加一个表ASSINFOTABLE在xtqdataset中
XTQAdapter.Fill(XTQDataSet, "AssInfoTable")
XTQAdapter.Dispose()

XTQAdapter = New OleDbDataAdapter(ConsumeInfoSql, XTQConn)
XTQDataSet.Tables.Add("ConsumeInfoTable")
XTQAdapter.Fill(XTQDataSet, "ConsumeInfoTable")
XTQAdapter.Dispose()

XTQConn.Close()

DGViewAss.DataSource = XTQDataSet.Tables("AssInfoTable")
dgViewConsume.DataSource = XTQDataSet.Tables("ConsumeInfoTable")
End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
DGViewAss.Rows.Remove(DGViewAss.CurrentRow)
SaveChanges()
End Sub

Private Sub SaveChanges()
Try
If XTQDataSet.HasChanges Then
XTQDataSet.AcceptChanges()
XTQConn.Open()
XTQAdapter = New OleDbDataAdapter(AssociatorInfoSql, XTQConn)
Dim Builder As New OleDbCommandBuilder(XTQAdapter)
XTQAdapter.Update(XTQDataSet.Tables("AssInfotable"))
MessageBox.Show("保存成功")
Builder.Dispose()
XTQConn.Close()
btnSaveChange.Enabled = False
End If
Catch ex As Exception
MessageBox.Show("保存数据时错误,请检查程序状态!", "保存数据", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Finally
XTQConn.Close()
End Try
End Sub
End Class

我想,你的代码改成这样试试,看行不行:

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
If (Me.BindingContext(objDataSet1, "ad_class").Count > 0) Then
Me.BindingContext(objDataSet1, "ad_class").RemoveAt(Me.BindingContext(objDataSet1, "ad_class").Position)
Me.objDataSet1_PositionChanged()
objDataSet1.AcceptChanges() '这是我加的
Dim da As New OleDbDataAdapter(Str, cnnstr)
Dim db As New OleDbCommandBuilder(da)
da.Update(objDataSet1, "ad_class")

End If
End Sub

OleDbDataAdqpter对象的两个参数中,第一个参数是SQL命令字符串,第二个参数是OleDbConnection对象.
我在我的机子上,没有我加的那句,也是会出错的.

对了,我用的是VS2005

2006-11-02 00:41
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 
谢谢你们...我的可以了....
如果可以的话..加我QQ287045741 大家一起研究!!

我的小站:http://www.欢迎光临!
2006-11-04 12:16
cokick
Rank: 1
等 级:新手上路
帖 子:151
专家分:0
注 册:2006-6-8
得分:0 

问题解决了...谢谢!!!!!!!!!!!


我的小站:http://www.欢迎光临!
2006-11-08 00:30
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
得分:0 
我知道在Sqlser数据库中也存在这样的现象,解决方法如下
Dim mycon As Sqlconnection("连接字符传,包括用户名,密码,数据库名,服务器名")
Dim sqlstr As String
Dim myadapter As SqlDataAdapter("sqlstr-也就是sql命令",mycon)
Dim myset As DataSet
myadapter.Fill(myset,"表名")
Dim rowno As Integer
rowno=DataGrid1.CurrentRowIndex
myset.表名.Rows(rowno).Delete()
此时只是在内存中的数据库表myset中的内容删除了,而在实际数据库中的内容却没有删除
还应该加上
myadapter.Update(myset.Getchanges)




大家一起努力,共同打造未来!!
2006-11-08 11:48



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




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

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