zoukankan      html  css  js  c++  java
  • 利用数据集进行数据访问操作

    数据访问有两种不同的方式,一种是用Connection, Command , DataReader来进行数据对数据的操作,另一种是用DataAdapter(适配器)来进行数据操作,而数据则一般放在内存中的数据集合DataSet,这种方式可以在内存中对数据操作,然后在合适的时间再将修改传到数据库。

    一. 建立数据集:

    1. 在解决方案右键添加新建项,找到数据中的数据集:

    2. 在服务器资源管理器里数据连接添加连接:

    3. 之后找到数据库里面需要用到的表,选中之后拖拽至右侧数据集里:

    这样一个数据集就建好了。

    二:在数据集里添加新查询

    1. 选中一个表的TableAdapter,右键配置高级选项,勾掉后两项,去掉并发

    2. 右键添加查询,选SQL语句下一步,选择查询的类型(是要返回行或单个值或修改,删除,添加)下一步,写SQL语句,之后完成。

    3. 这样在数据集可以看到我们自己添加的查询了:

    三: 如何使用

    1. 造适配器对象:

    InfoTableAdapter adp = new InfoTableAdapter();

    2. 造内存表对象

      Mydb.InfoDataTable table = new Mydb.InfoDataTable();

    3. 查询返回

      table = adp.GetData();

    4. 修改

      InfoTableAdapter adp = new InfoTableAdapter();
      adp.UpdateBycode(name, sex, nation, birthday, code);

    例子:在DataGridView里面将内存数据集(dataset)显示,对其进行添加、删除、修改操作,之后将所有修改一并提交至数据库

           在这里对数据集的操作都将会做出标记,在提交至数据库的时候系统会自动根据标记找到要修改、删除的行,对其进行操作。

    代码:

    private DataSet _DS = new DataSet();
    private void Form2_Load(object sender, EventArgs e) { //建立连接 SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=901004"); //造适配器 SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(); adapter.SelectCommand.CommandText = "select * from info"; adapter.SelectCommand.Connection = conn; //执行查询,将数据添加进内存数据集 adapter.Fill(_DS); //将内存数据集用控件显示 dataGridView1.DataSource = _DS.Tables[0]; } private void button1_Click(object sender, EventArgs e) { //添加 DataRow row = _DS.Tables[0].NewRow(); row["Code"] = txtCode.Text; row["Name"] = txtName.Text; row["Sex"] = Convert.ToBoolean(txtSex.Text);; row["Nation"] = txtNation.Text; row["Birthday"] = Convert.ToDateTime(txtBirthday.Text); _DS.Tables[0].Rows.Add(row); } private void button2_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection("server=.;database=mydb;uid=sa;pwd=901004"); SqlDataAdapter adapter = new SqlDataAdapter(); //添加的 SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "insert into info values(@code,@name,@sex,@nation,@birthday)"; cmd.Parameters.Add("@code", SqlDbType.VarChar, 50, "Code"); cmd.Parameters.Add("@name", SqlDbType.VarChar, 50, "name"); cmd.Parameters.Add("@sex", SqlDbType.Bit, 1, "Sex"); cmd.Parameters.Add("@nation", SqlDbType.VarChar, 50, "Nation"); cmd.Parameters.Add("@Birthday", SqlDbType.DateTime,8, "Birthday"); adapter.InsertCommand = cmd; //修改的 SqlCommand cmd1 = conn.CreateCommand(); cmd1.CommandText = "update info set name=@name,sex=@sex,nation=@nation,birthday=@birthday where code=@code"; cmd1.Parameters.Add("@code", SqlDbType.VarChar, 50, "Code"); cmd1.Parameters.Add("@name", SqlDbType.VarChar, 50, "name"); cmd1.Parameters.Add("@sex", SqlDbType.Bit, 1, "Sex"); cmd1.Parameters.Add("@nation", SqlDbType.VarChar, 50, "Nation"); cmd1.Parameters.Add("@Birthday", SqlDbType.DateTime, 8, "Birthday"); adapter.UpdateCommand = cmd1; //删除的 SqlCommand cmd2 = conn.CreateCommand(); cmd2.CommandText = "delete from info where code=@code"; cmd2.Parameters.Add("@code", SqlDbType.VarChar, 50, "Code"); adapter.DeleteCommand = cmd2; //提交 adapter.Update(_DS); MessageBox.Show("OK"); } private void button3_Click(object sender, EventArgs e) { //删除 DataRow row = null; //找行 foreach (DataRow dr in _DS.Tables[0].Rows) { if (dr["Code"].ToString() == txtCode.Text) { row = dr; } } if (row != null) { //把行删掉 row.Delete(); } }

     

  • 相关阅读:
    [CQOI2005]三角形面积并(计算几何+扫描线)
    第一天
    LA3026 周期 (kmp)
    HDU 1715 大菲波数 (java大数)
    根据身高重建队列(vector)
    K 连续位的最小翻转次数
    724. Find Pivot Index
    Two Sum
    c
    Most Powerful(状压DP水题)
  • 原文地址:https://www.cnblogs.com/Alvin-ftd/p/4063644.html
Copyright © 2011-2022 走看看