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; } } } } }