C#数据库编程基础之部分控件应用及DataGridView的操作

 1. 我们来接着使用DataGridView,在上一篇关于类似QQ登录的文章里我们已经讲述了

怎么初步使用DataGridView来显示数据库里的数据,接下来我们来讨论怎么实现在

DataGridView里实现对一行或多行的数据删除以及对一行的数据添加。看下列代码:
 
        SqlConnection myconnection;
        SqlCommand mycommand;
        SqlDataReader mydatareader;
        DataTable table;

        //使窗口在载入后就显示数据库里的所有信息(类似QQ登录的文章里我们已经

讲述)
        private void DataGridView窗口_Load(object sender, EventArgs e)
        {
            myconnection = new SqlConnection("Data Source=.;Initial

Catalog=mydata;Integrated Security=True");
            myconnection.Open();
            mycommand = new SqlCommand("select * from xueshengxinxi",

myconnection);
            mydatareader = mycommand.ExecuteReader();
            table = new DataTable();
            table.Load(mydatareader);
            dataGridView1.DataSource = table;
            myconnection.Close();
            mydatareader.Close();
           

        }

        private void 删除_Click(object sender, EventArgs e)
        {
           
            myconnection = new SqlConnection("Data Source=.;Initial

Catalog=mydata;Integrated Security=True");
            myconnection.Open();
            var row = dataGridView1.SelectedRows; //dataGridView的

SelectedRows属性返回的是用户选择了的行所构成的集合
            if (row.Count == 0) //如果集合的计数为0,说明集合row里的元素个数

为0,就是用户一行也没选。
            {
                MessageBox.Show("请先选择行,再删除!");
            }
            else
            {
                for (int i = 0; i < row.Count; i++) //要完成多行删除可以用循

环来完成,@xuehao的值是从集合row里第row[i]行第一个单元格Cells[0]获取的,因为此

处学号总为第一个单元格,再转化成字符串赋值给zhujian,zhujian再赋值给@xuehao提

供删除条件,直到删除完用户所选的行。
                {
                    string zhujian =Convert.ToString(row[i].Cells[0].Value);
                    mycommand = new SqlCommand("delete from xueshengxinxi

where [学号]=@xuehao", myconnection);
                    mycommand.Parameters.AddWithValue("@xuehao", zhujian);
                    int abc= mycommand.ExecuteNonQuery();
                }
                MessageBox.Show(String.Format("删除{0}成功,请刷新!",abc));
            }
            myconnection.Close();                                           

                            //String.Format() winform中的console.writeline()
          
        }
        //刷新代码与显示数据库所有数据的代码一样
        private void 刷新_Click(object sender, EventArgs e)
        {
            myconnection = new SqlConnection("Data Source=.;Initial

Catalog=mydata;Integrated Security=True");
            myconnection.Open();
            mycommand = new SqlCommand("select * from xueshengxinxi",

myconnection);
            mydatareader = mycommand.ExecuteReader();
            table = new DataTable();
            table.Load(mydatareader);
            dataGridView1.DataSource = table;
            myconnection.Close();
            mydatareader.Close();
        }
 //由于只有用户选中一行的时候集合row才有值,所以在添完信息要添加的时候,用户必

须选中该行才能使集合row有值,这样才能提取每个单元格的值,才能给添加条件赋值,

这时候总为row[0],因为只选了一行。其实要完成多行添加可以用dataGridView的列的

集合Columns[i]与行的集合row[j]进行嵌套循环即可。
        private void 添加一行_Click(object sender, EventArgs e)
        {
          
              myconnection = new SqlConnection("Data Source=.;Initial Catalog=mydata;Integrated Security=True");
                myconnection.Open();
                var row = dataGridView1.SelectedRows;
                if (row.Count != 0)
                {
                    string xuehao = Convert.ToString(row[0].Cells[0].Value);
                    string xingming = Convert.ToString(row[0].Cells[1].Value);
                    string xuexiao = Convert.ToString(row[0].Cells[2].Value);
                    string xueyuan = Convert.ToString(row[0].Cells[3].Value);
                    string zhuanye = Convert.ToString(row[0].Cells[4].Value);
                    string mima = Convert.ToString(row[0].Cells[5].Value);
                    mycommand = new SqlCommand("insert into xueshengxinxi values (@xh,@xm,@xx,@xy,@zy,@mm) ", myconnection);
                    mycommand.Parameters.AddWithValue("@xh", xuehao);
                    mycommand.Parameters.AddWithValue("@xm", xingming);
                    mycommand.Parameters.AddWithValue("@xx", xuexiao);
                    mycommand.Parameters.AddWithValue("@xy", xueyuan);
                    mycommand.Parameters.AddWithValue("@zy", zhuanye);
                    mycommand.Parameters.AddWithValue("@mm", mima);
                    mydatareader = mycommand.ExecuteReader();
                    mydatareader.Close();
                    MessageBox.Show("添加成功请刷新!");
                }
                else
                {
                    MessageBox.Show("请选中你所要添加的那行");
                }
                myconnection.Close();
          
        }
最后mycommand = new SqlCommand("insert into xueshengxinxi values

(@xh,@xm,@xx,@xy,@zy,@mm) ", myconnection);    @是必须加的

 

 2.VS中一些控件的使用
 

  DataGridView
  我们继续来讲dataGridView的使用,单击dataGridView右边的▲,可以进行编辑列,在

添加列的页眉文本里就是列的名称,添加完后就可以设置该列的宽度及是否冻结等,值得

一提的是:DataPropertyName处是让你填你所创建的列显示的是数据库里哪个字段的内

容。▲中还可以选择是否在父容器中停靠。
 

  CheckBox
  单选框,很值得一提的是:如果多个单选框放在一个容器中(如Panel)具有排斥性,即

选了一个就不能选其他的,我们可以利用这一点用在用户性别的注册上,用到CheckBox的

Checked属性,该属性是bool值,选中返回true,否则返回false。
  var sex =CheckBox.Checked?"男":"女";
  然后将sex加到 mycommand.Parameters.AddWithValue("@xingbie", sex);中
 

  NumbericUpDown
  选择数字控件,可设置其最大值。此项可用在用户年龄的的获取上(可防止用户乱填)
但其Value值不是int型的: int age = (int)numericupdown.value
 

  WebBrowser
  调用IE内核的的浏览器控件,可以加一个文本框和一个按钮构成一个简易的浏览器
  其中按钮的事件为 string url =textBox1.Text.Trim();
                   this.webBrowser1.Navigate(url);
 

 Form
 要使窗口不能改变大小,只要将其最大窗口和最小窗口值设成同样大小即可。
 

 智能ABC输入法
 在智能ABC输入法中输入v1 → v9 中的任意一个会很多使用的特殊符号

 TabContral
 分页容器控件,类似于桌面属性里的那种。

 TreeView
 数控件,类似于资源管理器的那种。

 ComBox
 下拉选择控件

 CheckedListBox
 选择列表框,多个CheckBox的组合,与combox、TabContral都要在▲中添加项。

 MaskedTextBox
 限制文本控件,是一个有许多规范限制的TextBox,在▲中设置掩码。

 Tooltip
 工具提示控件,加入后别的控件就多个Tooltip属性,在其后可以设置当鼠标放在该控件

上时所显示的提示文本。至于提示的时长及样式要在Tooltip控件中设置。

 每个控件都有一个tabindex属性,是用来设置用户在按Tab键时焦点的位置。还可以单

 击vs工具栏的最后一项来设置各控件的tabindex的值。

你可能感兴趣的:(C#编程杂谈)