zoukankan      html  css  js  c++  java
  • ListView控件绑定DataSet

    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, "提示");
                 
  • 相关阅读:
    vue路由跳转时更改页面title
    vue:axios二次封装,接口统一存放
    https://github.com/simple-uploader/vue-uploader/blob/master/README_zh-CN.md
    基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件
    前端三大主流框架的对比React、Vue、Angular 所谓是是三分天下
    React前端框架以及和Vue的对比
    Win10远程桌面:身份验证错误要求的函数不受支持的解决方法
    经典案例模块——20200404
    流的新认知
    网络编程
  • 原文地址:https://www.cnblogs.com/endv/p/5352429.html
Copyright © 2011-2022 走看看