DataSet数据集,数据缓存在客户端内存中,支持断开式连接.

  在对DataSet做操作的时候,首先一定要修改其行的状态,然后执行SqlDataAdapter的Update方法,Update方法根据其行的状态,做相应的SelectCommand、DeleteCommand、UpdateCommand、InsertCommand操作.

一,ListView控件绑定DataSet之操作: 
1)查找操作
using (SqlConnection con = new SqlConnection(constring))
            {
                //con.Open();
                ds = new DataSet();
                StringBuilder sb = new StringBuilder();
                sb.Append("select stucode,spcode,ctcode,stunits from stunits");
                dapt = new SqlDataAdapter(sb.ToString(), con);
                try
                {
                    dapt.Fill(ds, "stunit");
                    //循环遍历表中的行
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        ListViewItem item = this.listView1.Items.Add(dr[0].ToString().Trim());
                        item.SubItems.Add(dr[1].ToString().Trim());
                        item.SubItems.Add(dr[2].ToString().Trim());
                        item.SubItems.Add(dr[3].ToString().Trim()); 
                    }
                }
                catch (SystemException ex)
                {
                    MessageBox.Show(ex.Message);
                    //MessageBox.Show("出错");
                }
            }
2)修改操作
        private void UpdateDatabase()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("update stunits set stucode=@stucode,spcode=@spcode,ctcode=@ctcode,stunits=@stunits where stucode='" + this.Listv.SelectedItems[0].Text + "' ");
            using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=system;database=jtyyhis"))
            {
 
                SqlCommand cmd = new SqlCommand(sb.ToString(), con);
                this.dapt = new SqlDataAdapter();
                dapt.UpdateCommand = cmd;
                dapt.UpdateCommand.Parameters.Add("@stucode", SqlDbType.VarChar, 10);
                dapt.UpdateCommand.Parameters.Add("@spcode", SqlDbType.VarChar, 10);
                dapt.UpdateCommand.Parameters.Add("@ctcode", SqlDbType.VarChar, 10);
                dapt.UpdateCommand.Parameters.Add("@stunits", SqlDbType.VarChar, 40);
                dapt.UpdateCommand.Parameters[0].Value = this.textBox1.Text;
                dapt.UpdateCommand.Parameters[1].Value = this.textBox2.Text;
                dapt.UpdateCommand.Parameters[2].Value = this.textBox3.Text;
                dapt.UpdateCommand.Parameters[3].Value = this.textBox4.Text;
 
                 //得到当前行的索引
                int index = this.Listv.SelectedIndices[0];
                //修改行状态,使其状态成为Modified
                ds.Tables[0].Rows[index].SetModified();
                if (ds.HasChanges(DataRowState.Modified))
                {
                    try
                    {
                        dapt.Update(ds, "stunit");
                        MessageBox.Show("修改成功");
                    }
                    catch (DBConcurrencyException ex1)
                    {
                        MessageBox.Show(ex1.Message + " " + ex1.StackTrace);
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
 
                }
            }
3)增加操作
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (this.textBox1.Text == string.Empty)
            {
                MessageBox.Show("代码不能为空", "提示");
            }
            else
            {
                using (SqlConnection con = new SqlConnection(constring))
                {
                    //con.Open();
                    StringBuilder sb = new StringBuilder();
                    sb.Append("insert into stunits(stucode,spcode,ctcode,stunits) values(@dm,@pym,@dym,@stunit)");
                    dapt = new SqlDataAdapter();
                    //产生一个新行
                    DataRow dr = ds.Tables[0].NewRow();
                    dr[0] = this.textBox1.Text;
                    dr[1] = this.textBox2.Text;
                    dr[2] = this.textBox3.Text;
                    dr[3] = this.textBox4.Text;
                    //将新行添加到ds.Tables[0].Rows中
                    ds.Tables[0].Rows.Add(dr);
                    SqlCommand cmd = new SqlCommand(sb.ToString(), con);
                    cmd.Parameters.Add("@dm", SqlDbType.VarChar, 10, "stucode");
                    cmd.Parameters.Add("@pym", SqlDbType.VarChar, 20, "spcode");
                    cmd.Parameters.Add("@dym", SqlDbType.VarChar, 20, "ctcode");
                    cmd.Parameters.Add("@stunit", SqlDbType.VarChar, 40, "stunits");
                    dapt.InsertCommand = cmd;
                    //dapt.InsertCommand = new SqlCommand(sb.ToString(), con);
                    //dapt.InsertCommand.Parameters.Add("@dm", SqlDbType.Int,10,"stucode");
                    //dapt.InsertCommand.Parameters.Add("@pym", SqlDbType.VarChar,20,"spcode");
                    //dapt.InsertCommand.Parameters.Add("@dym", SqlDbType.VarChar,20,"ctcode");
                    //dapt.InsertCommand.Parameters.Add("@stunit",SqlDbType.VarChar,40,"stunits");
                    try
                    {
                        dapt.Update(ds, "stunit");
                        MessageBox.Show("添加成功");
                    }
                    catch (ArgumentNullException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                    catch (SqlException ex1)
                    {
                        MessageBox.Show(ex1.Message);
                    }
 
                }
 4)删除操作
     private void btnDele_Click(object sender, EventArgs e)
        {
            //ds = new DataSet();
            using (SqlConnection con = new SqlConnection(constring))
            {
                //con.Open();
                StringBuilder sb = new StringBuilder();
                sb.Append("delete stunits where stucode='" + this.listView1.SelectedItems[0].Text + "'");
                SqlCommand cmd = new SqlCommand(sb.ToString(), con);
                dapt = new SqlDataAdapter();
                dapt.DeleteCommand = cmd;
                int index = this.listView1.SelectedIndices[0];//得到选中行的索引
                ds.Tables["stunit"].Rows[index].Delete();//改变行的状态
                //try
                //{
                //    int Count = cmd.ExecuteNonQuery();
                //    if (Count > 0) MessageBox.Show("删除成功", "提示");
                //}
                //catch (SqlException ex)
                //{
                //    MessageBox.Show(ex.Message);
                //}
                if (ds.HasChanges(DataRowState.Deleted))
                {
                    try
                    {
                        dapt.Update(ds, "stunit");
                        MessageBox.Show("删除成功", "提示");
                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show(ex.Message, "提示");
             

ListView控件绑定DataSet的更多相关文章

  1. ListView控件--2016年12月9日

    ListView属性 ListView   名称 说明 AccessKey 重写 WebControl.AccessKey 属性. 不支持将此属性设置 ListView 控件.(覆盖 WebContr ...

  2. C# ListView 控件和 INotifyPropertyChanged 接口

    ListView 控件和 DataGridView 控件 ListView 是跟 Winform 中 DataGridView 用法以及显示效果差不多的一个 WPF 控件,可以通过列表的方式方便的显示 ...

  3. ListView控件的理解——自洽理论

    写在前面的话: *标题中已经说明,是自洽理论.因此,有几率会有理解错误.但是,你不可以因此骂我. -我这个人经不起别人的批评,如果你批评我,我就,我就.... ## <第一行代码>读书笔记 ...

  4. 《ASP.NET1200例》ListView控件之修改,删除与添加

    aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...

  5. winform listview控件

    ListView控件 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置 ...

  6. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>

    ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示 为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己 ...

  7. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<一>

    分页     在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...

  8. [置顶] DataGridView控件---绑定数据方法

             DataGridView控件是在windows应用程中显示数据最好的方式,它只需要几行简短的代码就可以把数据显示给用户,同时又支持增.删.改操作.今天将自己总结的增加数据的方法总结分 ...

  9. .Net平台Winform两个ComboBox控件绑定同一个数据源

    今天WINFROM编程遇到这么一个问题:是有关WINFORM中两个comboBox控件绑定同一个数据源的问题,在窗体的界面上有两个comboBox,我在Form1_Load中对他们做了数据绑定(具体代 ...

随机推荐

  1. css去掉点击连接时所产生的虚线边框技巧兼容符合w3c标准的浏览器

    解决方法: 1.在css中加上outline:none; 代码如下: a.fontnav { text-align:left;color:#555; text-decoration:none; out ...

  2. shell-总结【摘录】

    阅读目录 1. Shell简介 2. 几种常见的Shell 3. 编译型语言和解释型语言的区别 4. 什么时候使用Shell? 5. 第一个Shell脚本 6. Shell变量 7.Shell特殊变量 ...

  3. C++自带栈与队列_stack_queue_C++

    栈和队列我们可以用C++里自带的函数使用,就不必手写了 1.栈,需要开头文件 #include<stack>  定义一个栈s:stack<int> s; 具体操作: s.emp ...

  4. Cocos2d-x中图字原理之深入分析

    http://cache.baiducontent.com/c?m=9d78d513d9921cfe05ac94281a16a632451294247c89df4f3992d15f9217465c02 ...

  5. unicode和utf8之间的关系

    ,字符编码是计算机技术的基石,想要熟练使用计算机,懂得一点字符编码的知识,还是很有必要的. 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit ...

  6. Codeforces538F A Heap of Heaps(函数式线段树)

    题意:给你一个数组a[n],对于数组每次建立一个完全k叉树,对于每个节点,如果父节点的值比这个节点的值大,那么就是一个违规点,统计出1~n-1完全叉树下的违规点的各自的个数. 一个直觉的思想就是暴力, ...

  7. Centos7下zabbix部署(五)定义报警媒介-微信

    1.注册微信 注册过程参考地址:https://www.cnblogs.com/hanyifeng/p/5368102.html 主要需要以下一些信息 CorpID :     wwxxxxxxxxx ...

  8. block方法加入无效的问题

    +(LDLabel *)labelWithFrame:(CGRect)frame withTitle:(NSString *)title withFont:(float)font withtextCo ...

  9. (9)oracle 表的基本查询

    转到进阶查询 查看表的结构 desc  表名; desc student; 查看整张表的数据 select * from 表名; //查整张表很耗时间 select* from student; 查看 ...

  10. SSOJ 2316 面积【DFS/Flood Fill】

    题目描述 编程计算由“1”号围成的下列图形的面积.面积计算方法是统计1号所围成的闭合曲线中点的数目. 如图所示,在10*10的二维数组中,“1”围住了15个点,因此面积为15. 题目大意:对于给定的1 ...