社区
C#
帖子详情
删除记录时提交数据集出错,说是“更新要求有效的 DeleteCommand。”
csut_deng
2003-08-22 11:34:13
删除代码:
this.BindingContext[dsGzryxxb1,"gzryxxb"].RemoveAt(this.BindingContext[dsGzryxxb1,"gzryxxb"].Position);
提交代码:
sqlDataAdapter1.Update(dsGzryxxb1,"gzryxxb");
请问要怎么才不会出错,又能正确删除数据呢?
...全文
110
14
打赏
收藏
删除记录时提交数据集出错,说是“更新要求有效的 DeleteCommand。”
删除代码: this.BindingContext[dsGzryxxb1,"gzryxxb"].RemoveAt(this.BindingContext[dsGzryxxb1,"gzryxxb"].Position); 提交代码: sqlDataAdapter1.Update(dsGzryxxb1,"gzryxxb"); 请问要怎么才不会出错,又能正确删除数据呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
csut_deng
2003-08-27
打赏
举报
回复
ok,好了,多谢各位!结贴 !
greenhill1
2003-08-26
打赏
举报
回复
按照步骤执行的话应该没有问题的!可能是你的数据库连接有问题,所以没有办法正确的配置数据适配器。建议你仔细检查一下看看也许是什么小错误导致的。
dahuzizyd
2003-08-26
打赏
举报
回复
如果你的数据连接等配置没问题的话,可以使用CommandBuilder类来自动生成updatacommand
这是帮助里的示例:
OleDbConnection myConn = new OleDbConnection(myConnection);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter);
myConn.Open();
DataSet custDS = new DataSet();
myDataAdapter.Fill(custDS, "Customers");
//code to modify data in dataset here
//Without the OleDbCommandBuilder this line would fail
myDataAdapter.Update(custDS, "Customers");
myConn.Close();
return custDS;
注意:你的表要有主键
csut_deng
2003-08-26
打赏
举报
回复
我是用的自动生成dataset,没有用手工代码,然后在窗体显示的时候调用了
dsGzryxxb1.Clear();
sqlDataAdapter1.Fill(dsGzryxxb1);
数据绑定也是在控件的属性里设置的!
greenhill1
2003-08-26
打赏
举报
回复
把整段代码贴出来!看看你的SqlAdapter是不是和Connection配置好了?
csut_deng
2003-08-26
打赏
举报
回复
我已经如上所说,加上sqlcommand,代码如下:
this.BindingContext[dsGzryxxb1,"gzryxxb"].RemoveAt(this.BindingContext[dsGzryxxb1,"gzryxxb"].Position);
SqlCommandBuilder custCB = new SqlCommandBuilder(sqlDataAdapter1);
sqlDataAdapter1.Update(dsGzryxxb1,"gzryxxb");
但弹出的问题是:"更新要求 DeleteCommand 具有连接对象。该 DeleteCommand 的 Connection 属性尚未初始化。",请问该如何解决,急呀....
csut_deng
2003-08-26
打赏
举报
回复
我已经如上所说,加上sqlcommand,代码如下:
this.BindingContext[dsGzryxxb1,"gzryxxb"].RemoveAt(this.BindingContext[dsGzryxxb1,"gzryxxb"].Position);
SqlCommandBuilder custCB = new SqlCommandBuilder(sqlDataAdapter1);
sqlDataAdapter1.Update(dsGzryxxb1,"gzryxxb");
但弹出的问题是:"更新要求 DeleteCommand 具有连接对象。该 DeleteCommand 的 Connection 属性尚未初始化。",请问该如何解决,急呀....
greenhill1
2003-08-22
打赏
举报
回复
SqlConnection thisConnection=new SqlConnection(@"Data Source=SERVER;User ID=sa;Password=;Initial Catalog=dx");
thisConnection.Open();
SqlDataAdapter thisAdapter=new SqlDataAdapter("SELECT * FROM 班级",thisConnection);
SqlCommandBuilder thisBuilder=new SqlCommandBuilder(thisAdapter);
DataSet thisDataSet=new DataSet();
thisAdapter.Fill(thisDataSet,"班级");
DataRow findRow=thisDataSet.Tables["班级"].Rows[CellNu];
findRow.Delete();
thisAdapter.Update(thisDataSet,"班级");
thisConnection.Close();
firejie
2003-08-22
打赏
举报
回复
设置一下DeleteCommand看看
Zengqf_W
2003-08-22
打赏
举报
回复
sqlDataAdapter1.DeleteCommand = 'Delete * From 你的表 Where 你的条件';
jjcccc
2003-08-22
打赏
举报
回复
sqlDataAdapter1没有设置DeleteCommand或DeleteCommand设置错误
momoguagua
2003-08-22
打赏
举报
回复
没有建立DeleteCommand,如果你用的是DataSet,并且是不是多表联合查询,加上下面这句,da是你的SqlDataAdapter的名字。
System.Data.SqlClient.SqlCommandBuilder cb = new SqlCommandBuilder(da);
Erice
2003-08-22
打赏
举报
回复
sqlDataAdapter1没有设置DeleteCommand或DeleteCommand的语法和设置错误
csut_deng
2003-08-22
打赏
举报
回复
问题是:我是在DataGrid中删除用户当前行数据,怎么能用sql语句来配置DeleteCommand呢?
MysqlDLL,C#操作MYSQL数据库
1、SqlConnection类 构造函数:SqlConnection(connstr); 属性: Database//获取当前数据库或连接打开后要使用的数据库的名称 Connectionstring//获取或设置用于打开 SQL Server 数据库的字符串 方法: Open() Close() Dispose()//释放所有资源 2、Sql
Command
类 构造函数:Sql
Command
(string,conn) 属性:
Command
Type//获取或设置一个值,该值指示如何解释
Command
Text 属
Command
Text //获取或设置要对数据源执行SQL 语句 Connection//获取或设置 Sql
Command
的此实例使用的 SqlConnection Parameters//获取 SqlParameterCollection。参数集合 方法: ExecuteNonQuery(): 返回受影响函数,如增、删、改操作; ExecuteScalar():执行查询,返回首行首列的结果; ExecuteReader():返回一个数据流(SqlDataReader对象)。 实例1: Sql
Command
cmd = new Sql
Command
() cmd.connection =conn; cmd.
Command
Type =
Command
Type.Text; cmd.
Command
Text ="select *from produce=@ID"; cmd.Parameters.Add("@ID",SqlDBType.NVarChar,10,ID).values=1; cmd.ExecuteScalar(); 实例2: Sql
Command
cmd = new Sql
Command
(“select *from test”,conn); cmd.ExecuteScalar(); 注意: ExecuteNonQuery()方法主要用户
更新
数据,通常它使用Update,Insert,
Delete
语句来操作数据库,其方法返回值意义:对于 Update,Insert,
Delete
语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0
时
返回的值为0,如果数据操作回滚得话返回值为-1,对于这种
更新
操作 用我们平
时
所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功
时
返回的却是-1,这种情况跟我们平
时
的思维方式有点差距所以应该好好的注意了, 3、SqlDataReader类 是由ExecuteReader()返回一个数据流(SqlDataReader对象)没有构造方法 属性:Connection//获取与 SqlDataReader 关联的 SqlConnection。 FieldCount//获取当前行中的列数。 HasRows//获取一个值,该值指示 SqlDataReader 是否包含一行或多行 RecordsAffect//获取执行 Transact-SQL 语句所更改、插入或
删除
的行数 方法:Read();//使 SqlDataReader 前进到下一条
记录
GetType();//获取当前实例的 Type NextResult();//当读取批处理 Transact-SQL 语句的结果
时
,使数据读取器前进到下一个结果 4、SqlDataApater类 构造方法:SqlDataApater() SqlDataAdapter(Sql
Command
)//初始化 SqlDataAdapter 类的新实例,用指定的 Sql
Command
作为 Select
Command
的属性。 SqlDataApater(string,conn)//使用 Select
Command
和 SqlConnection 对象初始化 SqlDataAdapter 类的一个新实例 属性:
Delete
Command
Select
Command
Insert
Command
Updata
Command
方法: Fill(DataSet)//在 DataSet 中添加或刷新行 Fill(DataTable)//在 DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。 (继承自DbDataAdapter。 Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已
更新
或已
删除
的行执行相应的 INSERT、UPDATE 或
DELETE
语句来
更新
数据库中的值 Update(DataSet)//通过为指定的 DataTable 中的每个已插入、已
更新
或已
删除
的行执行相应的 INSERT、UPDATE 或
DELETE
语句来
更新
数据库中的值 Update(DataTable) 实例1 // 隐藏了Sql
Command
对象的定义,同
时
隐藏了Sql
Command
对象与SqlDataAdapter对象的绑定 SqlDataAdapter myda= new SqlDataAdapter("select * from test",conn); 实例2 Sql
Command
mySql
Command
= new Sql
Command
();// 创建Sql
Command
mySql
Command
.
Command
Type =
Command
Type.Text; mySql
Command
.
Command
Text = "select * from product"; mySql
Command
.Connection = sqlCnt; SqlDataAdapter myDataAdapter = new SqlDataAdapter(); // 创建SqlDataAdapter myDataAdapter.Select
Command
= mySql
Command
; // 为SqlDataAdapter对象绑定所要执行的Sql
Command
对象 5、DataSet类 命名空间:System.Data.DataSet。
数据集
,本地微型数据库,可以存储多张表。 //使用DataSet第一步就是将SqlDataAdapter返回的
数据集
(表)填充到Dataset对象中: SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt); DataSet myDataSet = new DataSet(); // 创建DataSet myDataAdapter.Fill(myDataSet, "product"); // 将返回的
数据集
作为“表”填入DataSet中,表名可以与数据库真实的表名不同,并不影响后续的增、删、改等操作 //访问dataset中的数据 DataTable myTable = myDataSet.Tables["product"]; foreach (DataRow myRow in myTable.Rows) { foreach (DataColumn myColumn in myTable.Columns) { Console.WriteLine(myRow[myColumn]); //遍历表中的每个单元格 } } // 修改DataSet DataTable myTable = myDataSet.Tables["product"]; foreach (DataRow myRow in myTable.Rows) { myRow["name"] = myRow["name"] + "商品"; } // 将DataSet的修改
提交
至“数据库” Sql
Command
Builder mySql
Command
Builder = new Sql
Command
Builder(myDataAdapter); myDataAdapter.Update(myDataSet, "product"); // 添加一行 DataRow myRow = myTable.NewRow(); myRow["name"] = "捷安特"; myRow["price"] = 13.2; //myRow["id"] = 100; id若为“自动增长”,此处可以不设置,即便设置也无效 myTable.Rows.Add(myRow); // 将DataSet的修改
提交
至“数据库” Sql
Command
Builder mySql
Command
Builder = new Sql
Command
Builder(myDataAdapter); myDataAdapter.Update(myDataSet, "product"); //
删除
第一行 DataTable myTable = myDataSet.Tables["product"]; myTable.Rows[0].
Delete
(); Sql
Command
Builder mySql
Command
Builder = new Sql
Command
Builder(myDataAdapter); myDataAdapter.Update(myDataSet, "product");
C#使用DataSet Datatable
更新
数据库的三种实现方法
本文以实例形式讲述了使用DataSet Datatable
更新
数据库的三种实现方法,包括
Command
Builder 方法、DataAdapter
更新
数据源以及使用sql语句
更新
。分享给大家供大家参考之用。具体方法如下: 一、自动生成命令的条件
Command
Builder 方法 a)动态指定 Select
Command
属性 b)利用
Command
Builder 对象自动生成 DataAdapter 的
Delete
Command
、Insert
Command
和 Update
Command
。 c)为了返回构造 INSERT、UPDATE 和
DELETE
。SQL
Command
Buil
delphi EhLib 9.5.012 Full Source 专业版 .rar
EhLib.VCL 9.5内部版本9.5.012专业版。 ---------------------------------------------- 该库包含Borland Delphi版本7、9的组件和类。 Developer Studio 2006,Delphi 2007,Embarcadero RAD Studio 2009-XE10.3,Lazarus。 目录 ----------------- 总览 安装库 安装帮助 示范节目 注册和价格 其他资讯 关于作者 从哪儿开始。 ------------------- 从主要的Demo项目开始概述库 。\ Demos \ Bin \ MainDemo.Exe。 (已编译的演示文件在该库的评估版中可用) 如果您使用了库的早期版本,则可以阅读摘要 的新功能和更改中的内容history-eng.html。 此版本库中有关新功能的更多详细信息 可以在文件中找到-关于EhLib 9.5 Eng.doc 要在IDE中安装该库的新版本,请使用安装程序 。\ Installer \ EhLibInstaller.exe 如果安装
时
有任何问题,请写信给ehlib支持 地址support@ehlib.com 您还可以按照以下
说
明在库IDE中手动安装文件 第2章安装库 安装后,请确保所有已安装组件的可操作性。 为此,请打开IDE,编译并启动一个主要的演示项目。 。\ Demos \ MainDemo \ Project1_XE2.dpr 阅读下一个文件,以获取有关使用库组件的完整
说
明: 。\ Hlp \ ENG \“ EhLib-用户指南.doc” 在文件中阅读有关EhLib for Lazarus的信息-Lazarus \ readme.txt 总览 -------- 该库包含几个组件和对象。 TDBGridEh组件 TDBGridEh提供TDBGrid的所有功能 并添加了一些新功能,如下所示: 允许选择
记录
,列和矩形区域。 可以对应于多个/所有列的特殊标题。 能够显示总和/计数/其他字段值的页脚。 自动调整列大小以将网格宽度设置为等于客户端宽度。 能够更改行和标题的高度。 允许自动中断单行长标题和数据行 到多行。 标题可以充当按钮,并可以选择显示排序标记。 自动排序标记。 能够用省略号截断长文本。 查找列表可以显示几个字段。 在查找字段中进行增量搜索。 冻结的列。 DateTime选择器支持TDateField和TDateTimeField。 允许根据字段值显示TImageList中的位图。 允许隐藏和跟踪水平或垂直滚动条。 允许隐藏列。 允许显示冻结,页脚和数据行的3D框架。 允许绘制备忘字段。 多行就地编辑器。 比例滚动与
数据集
的排序无关。 自动显示布尔字段的复选框。允许显示 其他类型字段的复选框。 具有保存和还原布局的程序(可见列,列 注册表或ini文件中的顺序,列宽,排序标记,行高)。 允许显示提示(工具提示)以显示单元格中不适合的文本。 允许将数据导出为Text,Csv,HTML,RTF,XLS和内部格式。 允许从文本和内部格式导入数据。 可以对各种
数据集
中的数据进行排序。 可以过滤各种
数据集
中的数据。 当DBGridEh连接到TMemTable类型的
数据集
时
,它允许: 在不移动活动
记录
的情况下查看所有数据。 显示TMemTable
记录
的树型结构。 在SubTitle过滤器的下拉列表中自动形成值列表。 根据所选库伦创建分组
记录
。 TDBVertGridEh组件 在“垂直方向”中显示
数据集
中的一条
记录
的组件。 有一个特殊的列来显示字段标题 可以像DBGridEh中一样自定义就地编辑器和单元格数据。 TDBLookupComboboxEh组件 提供TDBLookupCombobox的所有功能并添加 几个新功能如下: 可以有平面样式。 允许只将值分配给KeyValue属性 显示文本属性。 允许将值键入(分配)到数据列表中未包含的Text属性 (样式= csDropDownEh)。 允许将KeyValue和Text保持为互不影响的值。 当KeyField,ListField,ListSource,DataField和DataSource生效 属性为空。 下拉列表可以: 显示标题 有上浆力, 自动将宽度设置为列表字段DisplayWidth之和(宽度= -1), 用户按下按键
时
自动掉线。 编辑按钮可以: 显示下拉,省略号或位图图像。 有指定的宽度。 还有其他事件:OnKeyValueChanged,OnButtonClick。 TDBSumList组件 此组件用于总计一个
记录
中的
记录
的总数和数量。 TDataSet具有动态更改。组件保留TDBSum的列表 对象,其中包含组操作的类型(goSum或goCount) 和名称总和字段(无需goCount字段名称)。 TPrintDBGridEh组件 TPrintDBGridEh提供用于预览和预览的属性和例程。 具有以下功能的TDBGridEh组件的打印: 能够垂直扩展行,直到打印所有文本。 缩放网格以使其适合页面宽度的能力。 能够打印/预览网格标题。 能够打印/预览页面标题和页面页脚 指定当前页面,当前日期,当前
时
间和/或静态的宏 文本。 自动打印/预览TDBGridEh的选定区域 不为空。 能够在网格之前和之后打印/预览富文本。 TPreviewBox组件 TPreviewBox使您可以创建可自定义的运行
时
预览。 TPrinterPreview对象 TPrinterPreview允许您将可打印数据
记录
在缓冲区中以进行跟踪 将它们输出到屏幕上并发送到打印机。TPrinterPreview具有所有功能,并且 属性与TPrinter对象中的属性相同。您可以类似地使用TPrinterPreview对象 TPrinter的功能,除了一些细节。在TPrinter Printer.Canvas.Handle和 Printer.Handle相同,但在TPrinterPreview中PrinterPreview.Canvas.Handle 表示图元文件,其中的数据和PrinterPreview.Handle的内容相同 代表Printer.Handle。这意味着您必须使用 用于绘制操作的PrinterPreview.Canvas.Handle(DrawText,DrawTexteEx等) 并在返回有关以下信息的函数中使用PrinterPreview.Handle 打印机功能(GetDeviceCaps等)。全局功能PrinterPreview 返回默认的PrinterPreview对象,并以默认预览形式显示数据。 TDBEditEh组件 表示可以显示和编辑字段的单行或多行编辑控件 在
数据集
中或可以用作非数据感知的编辑控件。 TDBDateTimeEditEh组件 表示可以显示和编辑的单行日期或
时
间编辑控件
数据集
中的日期
时
间字段,或可用作非数据感知的编辑控件。 TDBComboBoxEh组件 表示结合了编辑框的单行或多行编辑控件 带有可滚动列表,并且可以显示和编辑
数据集
中的字段,或者可以 用作非数据感知组合编辑控件。 TDBNumberEditEh组件 表示可以显示和编辑数字的单行数字编辑控件
数据集
中的字段或可以用作非数据感知的编辑控件。 TPropStorageEh,TIniPropStorageManEh,TRegPropStorageManEh组件 组件实现了在设置中存储组件属性的技术 存储,如ini文件,注册表等。 TMemTableEh组件
数据集
,将数据保存在内存中。它可能考虑为
记录
。 此外,它: 支持一个特殊的接口,该接口允许DBGridEh组件查看所有 数据而不移动活动
记录
。 允许从TDataDriverEh对象(DataDriver属性)获取数据。 允许卸载更改回DataDriver中,可操作或推迟(在 CachedUpdates属性的相关性)。 允许在客户端上创建主/明细关系(过滤
记录
) 或在外部源上(
更新
参数[Params]并需要数据 从DataDriver)。 允许一次(无动态支持)排序数据,包括 计算和查找字段。 允许在设计
时
创建和填充数据,并将数据保存在的dfm文件中 形成。 允许以树的方式进行
记录
。每条
记录
可以有一条
记录
元素分支和本身是其他父母
记录
的元素。 组件TDBGridEh支持显示这些组件的树型结构
记录
。 允许连接到其他TMemTableEh的内部阵列(通过 ExternalMemData属性)并使用其数据:排序,过滤,编辑。 具有用于在列表的一列中请求所有唯一值列表的接口
记录
数组,忽略
数据集
的本地过滤器。TDBGridEh使用此 属性,用于自动填充字幕的DropDownBox中的列表 过滤单元。 TDataDriverEh组件 执行两项任务: 将数据传送到TMemTableEh。 处理TMemTableEh的更改
记录
(将它们
记录
在其他
数据集
中, 或调用事件以处理程序中的更改)。 TSQLDataDriverEh 具有四个TSQL
Command
Eh类型的对象的DataDriver:Select
Command
,
Delete
Command
,Insert
Command
,Update
Command
,Getrec
Command
。 TSQLDataDriverEh无法将查询传输到服务器,但会调用全局 (对于应用程序)执行SQL必须编写的事件 服务器上的表达式。 TBDEDataDriverEh,TIBXDataDriverEh,TDBXDataDriverEh和TADODataDriverEh组件。 这些是SQLDataDrivers,可以使用以下命令将查询传递到服务器 数据访问的相应驱动程序。 -------------------- 2.安装库 -------------------- -------------------- 2.1自动安装库 -------------------- 从“安装程序”文件夹中运行EhLibInstaller.exe程序以在以下位置安装EhLib Delphi / C ++ Builder IDE。该程序创建文件夹以保持EhLib二进制 和其他重新整理的文件,将重新整理的文件复制到创建的文件夹, 编译程序包,在IDE中注册程序包并编写重新格式化的路径 在注册表中。 如果您具有可执行的安装程序(例如,EhLibSetupD7Eval.exe) 那么您只需要运行程序并遵循安装过程即可。自动设置 将所有单元写入必要的目录,在IDE中安装软件包和帮助文件。 -------------------- 2.2手动安装库 ------------------- 按照以下
说
明从EhLib归档文件安装文件: - 2.2.1。对于RAD Studio XE2(Delphi)或更高版本: -------------------
DataAdapter执行批量
更新
的实例代码
在以前版本的 ADO.NET 中,使用 DataSet 中的更改来
更新
数据库
时
,DataAdapter 的 Update 方法每次
更新
数据库的一行。因为该方法循环访问指定 DataTable 中的行,所以,会检查每个 DataRow,确定是否已修改。如果该行已修改,将根据该行的 RowState 属性值调用相应的 Update
Command
、Insert
Command
或
Delete
Command
。每一次行
更新
都涉及网络与数据库之间的双向数据传输。 在 ADO.NET 2.0 中,DataAdapter 公开了 UpdateBatchSize 属性。将 UpdateBatchSize
在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、
更新
、
删除
数据
本文主要介绍使用SqlDataSource控件完成插入、
更新
、
删除
数据等操作,通过设置向导,SqlDataSource控件的Insert
Command
, Update
Command
和
Delete
Command
属性都会被赋以相应的 INSERT, UPDATE和
DELETE
SQL语句,从而实现相应的操作。
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章