C#与SQL05操作实例

1 篇文章 0 订阅

本次实例采用了DataAdapter获得数据库中的数据,然后用Fill方法对DataSet进行数据填充,对DataSet进行数据的添加、修改、删除等操作,最后通过当前DataSet中的数据更新数据库中的数据,从而达到数据的操作。

 

1、  数据库创建

简单的创建了一个表,名为LogInfo,记录ID,Pwd的信息,如图1。


图1

2、  界面创建

拉1个DataGridView、2个Label、2个TextBox、4个Button控件到窗口,分别命名为dgvLogInfo、lbID、lbPwd、tbID、tbPwd、btInsert、btDelete、btModify、btUpdata,如图2。


图2

2、  定义一个中介数据集DataSet

DataSet为公共变量,以供各种操作使用,最后通过一个提交操作,将DataSet的数据操作更新到数据库中。

DataSet ds = new DataSet();

3、数据的获得

定义一个获得数据并显示在DataGridView窗口的方法DataGet,如下           

        privatevoid DataGet()

        {

            SqlConnectioncn = new SqlConnection(Properties.Settings.Default.查询修改删除练习ConnectionString);

            SqlDataAdapterda =newSqlDataAdapter("select * from LogInfo", cn);

            cn.Open();

            da.Fill(ds, "Log_Info");

            cn.Close();

 

            dgvLogInfo.DataSource = ds.Tables["Log_Info"];  //绑定数据源

        }

4、数据的添加操作

将TextBox中的数据添加到DataSet,定义方法DataInsert,如下

        privatevoid DataInsert()

        {

            DataRow  dr = ds.Tables["Log_Info"].NewRow();

            dr["ID"]= tbID.Text;

            dr["Pwd"]= tbPwd.Text;

            ds.Tables["Log_Info"].Rows.Add(dr);

        }

5、数据的删除操作

         将鼠标所在的当前行删除的方法为DataDelete,如下

        privatevoid DataDelete()

        {

            if(dgvLogInfo.CurrentRow !=null)

            {

                intRowIndex = dgvLogInfo.CurrentRow.Index;

                ds.Tables["Log_Info"].Rows.RemoveAt(RowIndex);

            }

        }

6、数据的修改操作

让TextBox中的数据修改当前鼠标所在行的数据,方法如下

        privatevoid DataModify()

        {

            int  RowIndex = dgvLogInfo.CurrentRow.Index;

            dgvLogInfo.CurrentRow.Cells["ID"].Value = tbID.Text;

            dgvLogInfo.CurrentRow.Cells["Pwd"].Value = tbPwd.Text;

        }

7、数据的更新操作

         DataSet是暂留在内存中的数据,起到了前端与数据库进行交互的中介作用,SqlDataAdapter的Fill方法把从数据库中取得的数据放到DataSet中,对数据的操作不是直接对数据库的操作(减少了和数据库交互的次数),所以以上的操作都是对DataSet进行的操作,需要一个方法把DataSet中的数据更新到数据库中。方法如下

        privatevoid DataUpdate()

        {

            SqlConnection  cn =new SqlConnection(Properties.Settings.Default.查询修改删除练习ConnectionString);

            string  sql= "DELETE  FROM  LogInfo";

            SqlCommand  cmd= new SqlCommand(sql,cn);

            cn.Open();

            cmd.ExecuteNonQuery();

            cn.Close();

 

            for(int i = 0; i < ds.Tables["Log_Info"].Rows.Count; i++)

            {

                sql = "INSERT  LogInfo(ID,Pwd) VALUES(@ID,@Pwd)";

                cmd = newSqlCommand(sql, cn);

                cmd.Parameters.Add("@ID",SqlDbType.NVarChar,8).Value = ds.Tables["Log_Info"].Rows[i]["ID"];

                cmd.Parameters.Add("@Pwd",SqlDbType.NVarChar,8).Value = ds.Tables["Log_Info"].Rows[i]["Pwd"];

                cn.Open();

                cmd.ExecuteNonQuery();

                cn.Close();

            }

            ds.Tables["Log_Info"].Clear();

            DataGet();

            MessageBox.Show("数据提交成功!");

        }

8、界面的交互

         将DataGet放入到Load中,将DataGet()、DataDelete()、DataModify()、DataUpdate()各方法分别放入各对应Button中。最终运行程序如图3所示。


图3

附:程序完整代码

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

 

namespace Csharp与Sql的连接

{

    public partial class Form1 : Form

    {

        DataSet  ds = new DataSet();

 

        //数据显示

  private void  DataGet()

        {

            SqlConnection  cn =new  SqlConnection(Properties.Settings.Default.查询修改删除练习ConnectionString);

            SqlDataAdapter  da =new  SqlDataAdapter("select * from LogInfo", cn);

            cn.Open();

            da.Fill(ds, "Log_Info");

            cn.Close();

 

            dgvLogInfo.DataSource = ds.Tables["Log_Info"];  //绑定数据源

        }

 

        //DataSet进行添加数据操作

        privatevoid DataInsert()

        {

            DataRow  dr = ds.Tables["Log_Info"].NewRow();

            dr["ID"]= tbID.Text;

            dr["Pwd"]= tbPwd.Text;

            ds.Tables["Log_Info"].Rows.Add(dr);

        }

 

        //DataSet进行删除数据操作

        privatevoid DataDelete()

        {

            //鼠标点到GridView里的删除数据

            if(dgvLogInfo.CurrentRow !=null)

            {

                intRowIndex = dgvLogInfo.CurrentRow.Index;

                ds.Tables["Log_Info"].Rows.RemoveAt(RowIndex);

            }

        }

 

        //DataSet进行修改数据操作

        privatevoid DataModify()

        {

            int  RowIndex = dgvLogInfo.CurrentRow.Index;

            dgvLogInfo.CurrentRow.Cells["ID"].Value = tbID.Text;

            dgvLogInfo.CurrentRow.Cells["Pwd"].Value = tbPwd.Text;

        }

 

        //对数据库进行更新数据操作

        privatevoid DataUpdate()

        {

            SqlConnection  cn =new SqlConnection(Properties.Settings.Default.查询修改删除练习ConnectionString);

            string  sql= "DELETE FROM LogInfo";

            SqlCommand  cmd= new SqlCommand(sql,cn);

            cn.Open();

            cmd.ExecuteNonQuery();

            cn.Close();

 

            for(int i = 0; i < ds.Tables["Log_Info"].Rows.Count; i++)

            {

                sql = "INSERTLogInfo(ID,Pwd) VALUES(@ID,@Pwd)";

                cmd = new  SqlCommand(sql, cn);

                cmd.Parameters.Add("@ID",SqlDbType.NVarChar,8).Value = ds.Tables["Log_Info"].Rows[i]["ID"];

                cmd.Parameters.Add("@Pwd",SqlDbType.NVarChar,8).Value = ds.Tables["Log_Info"].Rows[i]["Pwd"];

                cn.Open();

                cmd.ExecuteNonQuery();

                cn.Close();

            }

            ds.Tables["Log_Info"].Clear();

            DataGet();

            MessageBox.Show("数据提交成功!");

        }

 

 

        privatevoid btInert_Click(objectsender,EventArgs e)

        {

            DataInsert();

        }

 

        privatevoid btDel_Click(objectsender,EventArgs e)

        {

            DataDelete();

        }

 

        privatevoid btModify_Click(objectsender,EventArgs e)

        {

            DataModify();

        }

        privatevoid btUpdate_Click(objectsender,EventArgs e)

        {

            DataUpdate();

        }

 

 

        publicForm1()

        {

            InitializeComponent();

        }

 

        privatevoid Form1_Load(objectsender,EventArgs e)

        {

            // TODO:This line of code loads data into the 'dS.LogInfo' table. You can move, orremove it, as needed.

            this.logInfoTableAdapter.Fill(this.dS.LogInfo);

 

            DataGet();

 

        }

 

 

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值