修改数据库,用dataset还是用command吗?

xkent77 2003-08-18 05:54:17
好像一个dataset就如一个数据库,里面有那些从远程数据库提取出来的tables...当要修改数据库时,我发现好多教程都是用command来修改,然后,再databind的..这就是说,没有直接用dataset来修改...

好像dataset还可以acceptchange(),可以做个小小的事务处理...有人讲下如何用dataset来update数据吗?

TKS....
...全文
44 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongBow007 2003-08-19
  • 打赏
  • 举报
回复
如果数据量小 就用dataset
如果数据量大 就有Command
Meyer 2003-08-19
  • 打赏
  • 举报
回复
webform中一般使用Command比较好处理
WinForm中DataSet的优势比较大
welcent 2003-08-19
  • 打赏
  • 举报
回复
各有所长
sgsh51 2003-08-19
  • 打赏
  • 举报
回复
视情况而定,有的情况下用Command比较好,有的情况下用DataSet比较方便
LineCorner 2003-08-19
  • 打赏
  • 举报
回复
我认为这是使用环境的问题:在web项目中用Command,但在windows项目中用Dataset的update更好些!
QinMuBiao 2003-08-19
  • 打赏
  • 举报
回复
把sql语句拼装好,然后用command的ExecNoQuery()来进行修改更直观些
coolmars 2003-08-18
  • 打赏
  • 举报
回复
差不多
dahuzizyd 2003-08-18
  • 打赏
  • 举报
回复
把sql语句拼装好,然后用command的ExecNoQuery()来进行修改更直观些
seesea125 2003-08-18
  • 打赏
  • 举报
回复
如果要对dataset进行编辑修改,用update,这是要要使用事务来避免并发错误,一般的直接存取数据库更方便,而且不存在事务问题,
layershow 2003-08-18
  • 打赏
  • 举报
回复
Adapter Fill 的 DataSet
必须有UpdateCommand 和 InsertCommand 才能Update
其实跟自己用Command差不多.只不过它能帮你批量完成
作者:王华杰,李律松,孙一波 等编著 出版社:清华大学出版社 出版时间:2004年05月 第1章 数据库访问基础ADO.NET
1.1 ADO.NET概述
1.1.1 ADO.NET设计目标
1.1.2 ADO.NET结构
1.1.3 ADO.NET示例应用程序
1.2 .NET数据提供程序
1.2.1 使用ADO连接到数据源
1.2.2 Command命令
1.2.3 使用DataReader检索数据
1.2.4 使用DataAdapter
1.3 创建和使用DataSet
1.3.1 创建DataSet
1.3.2 向DataSet添加DataTable
1.3.3 添加表间关系DataRelation
1.3.4 导航表间关系
1.3.5 DataSet同数据源中的数据一起使用
1.3.6 合并DataSet内容
1.3.7 复制DataSet内容
1.3.8 使用DataSet事件
1.3.9 使用类型化的DataSet
1.4 DataSet和XML
1.4.1 DiffGram
1.4.2 从XML中加载DataSet
1.4.3 编写DataSet的XML数据形式
1.5 创建和使用DataTable
1.5.1 创建数据库
1.5.2 定义数据表的架构
1.5.3 在数据表中操作数据
1.6 创建和使用DataView
1.6.1 创建DataView
1.6.2 使用DataView对数据排序和筛选
1.6.3 使用DataView查看数据
1.6.4 使用DataView修改数据
1.6.5 使用DataView事件
1.6.6 使用DataViewManager设置默认表视图
1.7 小结
第2章 WinForm实现个人日程管理
2.1 案例简介
2.2 应用程序概述
2.3 方案设计
2.3.1 应用程序前端的设计
2.3.2 后端数据库表的设计
2.3.3 后端数据库表间逻辑
2.3.4 后端数据库存储过程的设计
2.4 方案实现
2.4.1 数据库访问公用类
2.4.2 日程浏览模块的实现
2.4.3 日程管理模块的实现
2.4.4 数据库操作
2.5 小结
第3章 学生信息报表系统的实现
3.1 案例简介
3.2 水晶报表简介
3.3 应用程序概述
3.4 方案设计
3.4.1 应用程序的结构
3.4.2 数据库设计
3.5 方案实现
3.5.1 添加数据集文件
3.5.2 使用Crystal报表专家生成报表
3.5.3 使用Crystal报表设计器
3.5.4 实现程序关键代码
3.5.5 运行结果
3.6 小结
第4章 电子相册的设计与实现
第5章 网上选课系统
第6章 ASP.NET实现论坛
第7章 ASP.NET实现网上商城
第8章 电子图书在线出版系统

1,主界面 2查询功能 ‘ private void chaxun_Click(object sender, System.EventArgs e) { SqlConnection thisConnection=new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=李梦然07060021"); //表示到SQL Server的一个实例的连接 SqlCommand thisCommand=new SqlCommand("select * from student where sno='"+textBox1.Text+"'",thisConnection); SqlDataAdapter thisAdapter=new SqlDataAdapter(); thisAdapter.SelectCommand=thisCommand; DataSet thisDataSet=new DataSet(); thisConnection.Open(); thisAdapter.Fill(thisDataSet, "student"); //在运行时设置 dataGrid1的数据源和数据成员属性,即在dataGrid1中显示数据集中的数据 dataGrid1.SetDataBinding(thisDataSet,"student"); thisConnection.Close(); } 3浏览功能 private void liulan_Click(object sender, System.EventArgs e) { //用SqlConnection对象连接SQL Server数据库魏菊丽20086666 SqlConnection thisConnection=new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=李梦然07060021"); SqlDataAdapter thisAdapter=new SqlDataAdapter(); DataSet thisDataSet=new DataSet(); //创建并返回一个与SqlConnection相关联的SqlCommand 对象 SqlCommand thisCommand=thisConnection.CreateCommand(); thisCommand.CommandText="select * from student";//获取或设置要对数据源执行的SQL语句 thisAdapter.SelectCommand =thisCommand ;//获取一个SQL语句,用于在数据源中选择记录 thisConnection.Open();//打开本次设置的数据库连接 thisAdapter.Fill(thisDataSet,"student");//将以上在数据源student中选择的记录的所有行填充到数据集中。 thisConnection.Close();//断开本次数据库连接 //在运行时设置 dataGrid1的数据源和数据成员属性,即在dataGrid1中显示数据集中的数据 dataGrid1.SetDataBinding(thisDataSet,"student"); } 4,插入一个新列 private void button1_Click(object sender, System.EventArgs e) { SqlConnection thisConnection=new SqlConnection("Data Source=LocalHost;Integrated Security=SSPI;Initial Catalog=李梦然07060021"); SqlDataAdapter thisAdapter=new SqlDataAdapter(); DataSet thisDataSet=new DataSet(); SqlCommand thisCommand=thisConnection.CreateCommand(); thisCommand.CommandText="select * from student "; thisAdapter.SelectCommand =thisCommand ; thisConnection.Open(); SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter); thisAdapter.Fill(thisDataSet, "student"); DataRow thisRow=thisDataSet.Tables["student"].NewRow();//在 数据集的student Table中创建新行 thisRow["sno"]="21";thisRow["sname"]="李梦然";thisRow["ssex"]="男";thisRow["thirthday"]="1987-7-31";thisRow["class"]="95001";//设置新行中的个字段值 thisDataSet.Tables["student"].Rows.Add(thisRow);//将新行添加到数据集的student Table中 thisAdapter.Update(thisDataSet,"student");// 修改数据库表 //以下显示添加后表中的数据 thisCommand.CommandText="select * from student "; thisAdapter.SelectCommand =thisCommand ; dataGrid1.SetDataBinding(thisDataSet,"student"); thisConnection.Close(); }
1、SqlConnection类   构造函数:SqlConnection(connstr);   属性:  Database//获取当前数据库或连接打开后要使用的数据库的名称        Connectionstring//获取或设置用于打开 SQL Server 数据库的字符串   方法:  Open()        Close()        Dispose()//释放所有资源         2、SqlCommand类     构造函数:SqlCommand(string,conn) 属性:  CommandType//获取或设置一个值,该值指示如何解释 CommandText 属         CommandText //获取或设置要对数据源执行SQL 语句         Connection//获取或设置 SqlCommand 的此实例使用的 SqlConnection         Parameters//获取 SqlParameterCollection。参数集合 方法:  ExecuteNonQuery(): 返回受影响函数,如增、删、改操作;         ExecuteScalar():执行查询,返回首行首列的结果;         ExecuteReader():返回一个数据流(SqlDataReader对象)。   实例1: SqlCommand cmd = new SqlCommand () cmd.connection =conn; cmd.CommandType = CommandType.Text; cmd.CommandText ="select *from produce=@ID"; cmd.Parameters.Add("@ID",SqlDBType.NVarChar,10,ID).values=1; cmd.ExecuteScalar();   实例2:   SqlCommand cmd = new SqlCommand (“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(SqlCommand)//初始化 SqlDataAdapter 类的新实例,用指定的 SqlCommand 作为 SelectCommand 的属性。        SqlDataApater(string,conn)//使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的一个新实例   属性:  DeleteCommand        SelectCommand        InsertCommand        UpdataCommand              方法:  Fill(DataSet)//在 DataSet 中添加或刷新行        Fill(DataTable)//在 DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。 (继承自DbDataAdapter。        Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值        Update(DataSet)//通过为指定的 DataTable 中的每个已插入、已更新或已删除的行执行相应的 INSERT、UPDATE 或 DELETE 语句来更新数据库中的值        Update(DataTable) 实例1   // 隐藏了SqlCommand对象的定义,同时隐藏了SqlCommand对象与SqlDataAdapter对象的绑定 SqlDataAdapter myda= new SqlDataAdapter("select * from test",conn);   实例2   SqlCommand mySqlCommand = new SqlCommand();// 创建SqlCommand   mySqlCommand.CommandType = CommandType.Text;   mySqlCommand.CommandText = "select * from product";   mySqlCommand.Connection = sqlCnt;   SqlDataAdapter myDataAdapter = new SqlDataAdapter();   // 创建SqlDataAdapter   myDataAdapter.SelectCommand = mySqlCommand; // 为SqlDataAdapter对象绑定所要执行的SqlCommand对象 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修改提交至“数据库” SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataAdapter.Update(myDataSet, "product"); // 添加一行 DataRow myRow = myTable.NewRow(); myRow["name"] = "捷安特"; myRow["price"] = 13.2; //myRow["id"] = 100; id若为“自动增长”,此处可以不设置,即便设置也无效 myTable.Rows.Add(myRow); // 将DataSet修改提交至“数据库” SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataAdapter.Update(myDataSet, "product"); // 删除第一行 DataTable myTable = myDataSet.Tables["product"]; myTable.Rows[0].Delete(); SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataAdapter.Update(myDataSet, "product");

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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