DetaSet更新数据

用到的控件:DataGridView(展示数据),

                   Button控件,更名【更新】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace _08DataSet更新
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        DataTable dt;
        private void Form1_Load(object sender, EventArgs e)
        {
            // 执行一个sql语句,并把结果集放入本地的DataTable中.这里数据已经放到本地,断开数据库连接,还是可以访问到数据的.
            dt = CommonCode.Sqlhelper.ExecuteDataTable("select * from Table_Para");
            dataGridView1.DataSource = dt;//数据绑定到dataGridView上

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //可以为我们的dataadpter提供一些简单的增删改的sql
            //1)只能是一张表,不能有外键.  2)该表必须有主键

            SqlDataAdapter da = new SqlDataAdapter("select * from Table_Para", System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
            SqlCommandBuilder scb = new SqlCommandBuilder(da);// SqlCommandBuilder自动生成表单,用于将system.Data.DataSet所做的数据的更改
            da.Update(dt);

        }
    }
}
运行效果图如下:直接在行中修改值

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace CommonCode
{

    public static class Sqlhelper
    {
        private static readonly string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
        //执行数据库无非就是执行cmd的以下方法
        //1. ExecuteNonQuery 执行一个insert update delete
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }



        }


        //2.ExecuteScaler 返回结果集的第一行第一列
        public static object ExecuteScaler(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    conn.Open();
                    return cmd.ExecuteScalar();
                }
            }
        }

        //3.ExecuteReader 返回一个Reader对象,用于读于多行多列数据
        //在数据库上产生一个结果集,每次Read,从数据库服务器上读取一条数据回来,所以使用Reader读取数据,不能与数据库断开连接.
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
        {
            SqlConnection conn = new SqlConnection(ConnectionString);
            
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    conn.Open();
                    try
                    {
                        //在sqlhelper中,由于dr在返回给用户使用,所以注意dr不要使用using(){]
                        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        
                            return dr;
                        
                    }
                    catch (Exception ex)
                    {
                        conn.Close();
                        throw ex;
                       
                    }
          
                }
            }

        

        //4.执行一个sql语句,并把结果集放入本地的DataTable中.这里数据已
        //经放到本地,断开数据库连接,还是可以访问到数据的.
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                using (SqlDataAdapter da = new SqlDataAdapter(sql, conn))
                {
                    da.SelectCommand.Parameters.AddRange(parameters);
                    DataTable dt = new DataTable();
                    //Fill方法其实执行的是da.SelectCommand中的sql语句,这里可以写conn.open也可以不写,如果不写,da会自动连接数据库
                    da.Fill(dt);
                    return dt;
                }
            }
        }
    }
}

 

posted @ 2016-11-08 11:03  狼牙者.net  阅读(320)  评论(0编辑  收藏  举报