2023年6月21日发(作者:)
C#通过DataGridView对数据库进⾏增删改查运⾏效果.png⼀、准备数据库Student,数据表TableStudentCREATE TABLE [dbo].[TableStudent] ( [stuId] INT IDENTITY (1, 1) NOT NULL, [stuName] NVARCHAR (32) NULL, [stuSex] NCHAR (2) NULL, [stuBirthdate] NVARCHAR (32) NULL, [stuPhone] NVARCHAR (32) NULL, PRIMARY KEY CLUSTERED ([stuId] ASC));⼆、获取数据库连接字符串using System;using c;using ;using ;using ;using uration;using ent;using ;namespace DataAdapterExample{ class sqlHelper { //获取数据库连接字符串 public static string GetConnectionString() { return tionStrings["strConnect"].ConnectionString; } #region 封装⼀个执⾏SQL返回受影响的⾏数 public static int ExecuteNoQuery(string sqlText,params SqlParameter[] parameters) { using (SqlConnection con = new SqlConnection(GetConnectionString())) { using (SqlCommand cmd = Command()) { { (); dText = sqlText; ge(y()); return eNonQuery(); } } } #endregion #region 封装⼀个执⾏SQL返回查询结果中第⼀⾏第⼀列的值 public static object ExecuteScalar(string sqlText,params SqlParameter[] parameters) { using (SqlConnection con = new SqlConnection(GetConnectionString())) { using (SqlCommand cmd = Command()) { (); dText = sqlText; ge(y()); return eScalar(); } } } #endregion #region 封装⼀个执⾏SQL返回⼀个DataTable public static DataTable ExecuteDataTable(string sqlText,params SqlParameter[] parameters) { using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText,GetConnectionString())) {
DataTable dt = new DataTable(); ge(y()); (dt); return dt; } } #endregion #region 封装⼀个执⾏SQL返回⼀个SqlDataReader public static SqlDataReader ExecutedReader(string sqlText,params SqlParameter[] parameters) { //SqlDataReader要求独占SqlConnection对象,并且SqlConnection必须是Open状态 SqlConnection con = new SqlConnection(GetConnectionString()); (); SqlCommand cmd = Command(); dText = sqlText; ge(y()); //SqlDataReader执⾏完成后顺便关闭数据库连接 return eReader(onnection); } #endregion }}三、数据表映射StudentInfo帮助类using System;using c;using ;using ;using ;namespace DataAdapterExample{ public class StudentInfo { public int stuId { get; set; } public string stuName { get; set; } public string stuSex { get; set; } public string stuBirthdate { get; set; } public string stuPhone { get; set; } }}四、主窗体对数据表进⾏CURDusing System;using c;using entModel;using ;using g;using ;using ;using ;using ;using uration;using ent;namespace DataAdapterExample{ public partial class MainFrm : Form { //标识正在修改的数据⾏的主键 private int updateStudentId = 0; public MainFrm() { InitializeComponent(); } //主窗体加载数据 private void MainFrm_Load(object sender, EventArgs e) { LoadStudentInfo(); } //增加数据 private void ButtonAdd_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection(nectionString())) { (); using (SqlCommand cmd = Command()) { dText = "insert into TableStudent (stuName,stuPhone,stuBirthdate,stuSex) values (@stuName,@stuPhone,@stuBirthdate,@stuSex)"; hValue("@stuName", ()); hValue("@stuPhone", ()); hValue("@stuSex", ()); hValue("@stuBirthdate", ()); if (eNonQuery() > 0) { ("增加数据成功!"); } } } LoadStudentInfo(); } //删除数据 private void ButtonDelete_Click(object sender, EventArgs e) { if ( <= 0) { ("请选择要删除的数据"); } if (("确认要删除吗?", "提醒消息", , g) != ) { return; } int deleteStuId = (edRows[0].Cells["stuId"].ng()); #region 原⽣⼿写 //using (SqlConnection con = new SqlConnection(nectionString())) //{ // (); // string sql = "delete from TableStudent where stuId=@stuId"; // using (SqlCommand cmd = Command()) // { // dText = sql; // hValue("stuId", deleteStuId); // //("@stuId", ); // //ters["stuId"].Value = deleteStuId; // //SqlParameter parameter = new SqlParameter(); // //terName = "@stuId"; // // = deleteStuId; // //(parameter); // if (eNonQuery() > 0) // { // ("删除成功"); // } // } //}
#endregion #region sqlHelper封装⽅法ExecuteNoQuery string strSQL = "delete from TableStudent where stuId=@stuId"; int num = eNoQuery(strSQL, new SqlParameter("@stuId", (object)deleteStuId)); if (num>0) { ("删除成功"); } #endregion LoadStudentInfo(); } //修改数据 private void buttonUpdate_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection(nectionString())) { using (SqlCommand cmd = Command()) { (); dText = "update TableStudent set stuName=@stuName,stuSex=@stuSex,stuBirthdate=@stuBirthdate,stuPhone=@stuPhone where stuId=@stuId"; hValue("@stuName", ); hValue("@stuBirthdate", ); hValue("@stuSex", ); hValue("@stuPhone", ); hValue("@stuId", StudentId); if (eNonQuery() > 0) { ("更新数据成功"); } } } //刷新数据 //刷新数据 ButtonSearch_Click(this,null); } //选中数据赋值到对应⽂本框 private void dataGridViewFromAdapter_SelectionChanged(object sender, EventArgs e) { if ( <= 0) { //("请先选中数据"); return; } //选中⾏的Id int selectedId = (edRows[0].Cells["stuId"].ng()); //把要修改的数据⾏的ID放到当前窗体的updateStudentId字段中保存 updateStudentId = selectedId; using (SqlConnection con = new SqlConnection(nectionString())) { (); using (SqlCommand cmd = Command()) { dText = "select stuId,stuName,stuSex,stuBirthdate,stuPhone from TableStudent where stuId=@stuId"; hValue("@stuId", selectedId); using (SqlDataReader reader = eReader()) { if (()) { = reader["stuSex"].ToString().Trim(); = reader["stuName"].ToString().Trim(); = reader["stuBirthdate"].ToString().Trim(); = reader["stuPhone"].ToString().Trim(); } } } } } //双击弹出修改窗体 private void dataGridViewFromAdapter_DoubleClick(object sender, EventArgs e) { if ( <= 0) { return; } int editStuId = (edRows[0].Cells["stuId"].ng()); EditStudentForm editStuFrm = new EditStudentForm(new StudentInfo() { stuId = editStuId }); //注册弹出窗体的关闭事件 osing += EditStuFrm_FormClosing; (); } //弹出窗体修改完成关闭的时候执⾏的操作 private void EditStuFrm_FormClosing(object sender, FormClosingEventArgs e) { LoadStudentInfo(); } //多条件查询 private void ButtonSearch_Click(object sender, EventArgs e) { //拼接whereSqlText脚本 string whereSqlText = "select stuId,stuName,stuPhone,stuBirthdate,stuSex from TableStudent"; List
} //加载数据⽅法的调⽤ LoadStudentInfo2DataGridView(whereSqlText, y());
} //加载数据 private void LoadStudentInfo() { List
#endregion #region sqlHelper类的ExecuteReader⽅法 string strSQL = "select stuSex,stuName,stuBirthdate,stuPhone from TableStudent where stuId=@stuId"; using (SqlDataReader reader = edReader(strSQL, new SqlParameter("@stuId", (object)))) { if (()) { = reader["stuBirthdate"].ToString().Trim(); = reader["stuName"].ToString().Trim(); = reader["stuPhone"].ToString().Trim(); = reader["stuSex"].ToString().Trim(); } }
#endregion } //保存更新 private void ButtonSave_Click(object sender, EventArgs e) { #region 原⽣写法 //using (SqlConnection con = new SqlConnection(nectionString())) //{ // using (SqlCommand cmd = Command()) // { // (); // dText = "update TableStudent set stuPhone=@stuPhone,stuName=@stuName,stuBirthdate=@stuBirthdate,stuSex=@stuSex where stuId=@stuId"; // hValue("@stuId", ); // hValue("@stuName", ()); // hValue("@stuBirthdate", ()); // hValue("@stuPhone", ()); // hValue("@stuSex", ()); // if (eNonQuery() > 0) // { // ("更新成功"); // } // //关闭窗体 // (); // } //}
#endregion
#region 使⽤sqlHelper类的ExecuteNoQuery静态⽅法 string strSQL = "update TableStudent set stuPhone=@stuPhone,stuName=@stuName,stuBirthdate=@stuBirthdate,stuSex=@stuSex where stuId=@stuId"; List
#endregion } }}主窗体最下⾯的⽂本框功能:(1)增加新的数据⾏(2)显⽰选中⾏数据(3)修改选中⾏数据优化:sqlHelper类中封装⽅法(1)执⾏SQL返回受影响的⾏数的ExecuteNoQuery⽅法(2)执⾏SQL返回查询结果中第⼀⾏第⼀列的值的ExecuteScalar⽅法(3)执⾏SQL返回⼀个DataTable的ExecuteDataTable⽅法(4)执⾏SQL返回⼀个SqlDataReader的ExecutedReader⽅法
2023年6月21日发(作者:)
C#通过DataGridView对数据库进⾏增删改查运⾏效果.png⼀、准备数据库Student,数据表TableStudentCREATE TABLE [dbo].[TableStudent] ( [stuId] INT IDENTITY (1, 1) NOT NULL, [stuName] NVARCHAR (32) NULL, [stuSex] NCHAR (2) NULL, [stuBirthdate] NVARCHAR (32) NULL, [stuPhone] NVARCHAR (32) NULL, PRIMARY KEY CLUSTERED ([stuId] ASC));⼆、获取数据库连接字符串using System;using c;using ;using ;using ;using uration;using ent;using ;namespace DataAdapterExample{ class sqlHelper { //获取数据库连接字符串 public static string GetConnectionString() { return tionStrings["strConnect"].ConnectionString; } #region 封装⼀个执⾏SQL返回受影响的⾏数 public static int ExecuteNoQuery(string sqlText,params SqlParameter[] parameters) { using (SqlConnection con = new SqlConnection(GetConnectionString())) { using (SqlCommand cmd = Command()) { { (); dText = sqlText; ge(y()); return eNonQuery(); } } } #endregion #region 封装⼀个执⾏SQL返回查询结果中第⼀⾏第⼀列的值 public static object ExecuteScalar(string sqlText,params SqlParameter[] parameters) { using (SqlConnection con = new SqlConnection(GetConnectionString())) { using (SqlCommand cmd = Command()) { (); dText = sqlText; ge(y()); return eScalar(); } } } #endregion #region 封装⼀个执⾏SQL返回⼀个DataTable public static DataTable ExecuteDataTable(string sqlText,params SqlParameter[] parameters) { using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText,GetConnectionString())) {
DataTable dt = new DataTable(); ge(y()); (dt); return dt; } } #endregion #region 封装⼀个执⾏SQL返回⼀个SqlDataReader public static SqlDataReader ExecutedReader(string sqlText,params SqlParameter[] parameters) { //SqlDataReader要求独占SqlConnection对象,并且SqlConnection必须是Open状态 SqlConnection con = new SqlConnection(GetConnectionString()); (); SqlCommand cmd = Command(); dText = sqlText; ge(y()); //SqlDataReader执⾏完成后顺便关闭数据库连接 return eReader(onnection); } #endregion }}三、数据表映射StudentInfo帮助类using System;using c;using ;using ;using ;namespace DataAdapterExample{ public class StudentInfo { public int stuId { get; set; } public string stuName { get; set; } public string stuSex { get; set; } public string stuBirthdate { get; set; } public string stuPhone { get; set; } }}四、主窗体对数据表进⾏CURDusing System;using c;using entModel;using ;using g;using ;using ;using ;using ;using uration;using ent;namespace DataAdapterExample{ public partial class MainFrm : Form { //标识正在修改的数据⾏的主键 private int updateStudentId = 0; public MainFrm() { InitializeComponent(); } //主窗体加载数据 private void MainFrm_Load(object sender, EventArgs e) { LoadStudentInfo(); } //增加数据 private void ButtonAdd_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection(nectionString())) { (); using (SqlCommand cmd = Command()) { dText = "insert into TableStudent (stuName,stuPhone,stuBirthdate,stuSex) values (@stuName,@stuPhone,@stuBirthdate,@stuSex)"; hValue("@stuName", ()); hValue("@stuPhone", ()); hValue("@stuSex", ()); hValue("@stuBirthdate", ()); if (eNonQuery() > 0) { ("增加数据成功!"); } } } LoadStudentInfo(); } //删除数据 private void ButtonDelete_Click(object sender, EventArgs e) { if ( <= 0) { ("请选择要删除的数据"); } if (("确认要删除吗?", "提醒消息", , g) != ) { return; } int deleteStuId = (edRows[0].Cells["stuId"].ng()); #region 原⽣⼿写 //using (SqlConnection con = new SqlConnection(nectionString())) //{ // (); // string sql = "delete from TableStudent where stuId=@stuId"; // using (SqlCommand cmd = Command()) // { // dText = sql; // hValue("stuId", deleteStuId); // //("@stuId", ); // //ters["stuId"].Value = deleteStuId; // //SqlParameter parameter = new SqlParameter(); // //terName = "@stuId"; // // = deleteStuId; // //(parameter); // if (eNonQuery() > 0) // { // ("删除成功"); // } // } //}
#endregion #region sqlHelper封装⽅法ExecuteNoQuery string strSQL = "delete from TableStudent where stuId=@stuId"; int num = eNoQuery(strSQL, new SqlParameter("@stuId", (object)deleteStuId)); if (num>0) { ("删除成功"); } #endregion LoadStudentInfo(); } //修改数据 private void buttonUpdate_Click(object sender, EventArgs e) { using (SqlConnection con = new SqlConnection(nectionString())) { using (SqlCommand cmd = Command()) { (); dText = "update TableStudent set stuName=@stuName,stuSex=@stuSex,stuBirthdate=@stuBirthdate,stuPhone=@stuPhone where stuId=@stuId"; hValue("@stuName", ); hValue("@stuBirthdate", ); hValue("@stuSex", ); hValue("@stuPhone", ); hValue("@stuId", StudentId); if (eNonQuery() > 0) { ("更新数据成功"); } } } //刷新数据 //刷新数据 ButtonSearch_Click(this,null); } //选中数据赋值到对应⽂本框 private void dataGridViewFromAdapter_SelectionChanged(object sender, EventArgs e) { if ( <= 0) { //("请先选中数据"); return; } //选中⾏的Id int selectedId = (edRows[0].Cells["stuId"].ng()); //把要修改的数据⾏的ID放到当前窗体的updateStudentId字段中保存 updateStudentId = selectedId; using (SqlConnection con = new SqlConnection(nectionString())) { (); using (SqlCommand cmd = Command()) { dText = "select stuId,stuName,stuSex,stuBirthdate,stuPhone from TableStudent where stuId=@stuId"; hValue("@stuId", selectedId); using (SqlDataReader reader = eReader()) { if (()) { = reader["stuSex"].ToString().Trim(); = reader["stuName"].ToString().Trim(); = reader["stuBirthdate"].ToString().Trim(); = reader["stuPhone"].ToString().Trim(); } } } } } //双击弹出修改窗体 private void dataGridViewFromAdapter_DoubleClick(object sender, EventArgs e) { if ( <= 0) { return; } int editStuId = (edRows[0].Cells["stuId"].ng()); EditStudentForm editStuFrm = new EditStudentForm(new StudentInfo() { stuId = editStuId }); //注册弹出窗体的关闭事件 osing += EditStuFrm_FormClosing; (); } //弹出窗体修改完成关闭的时候执⾏的操作 private void EditStuFrm_FormClosing(object sender, FormClosingEventArgs e) { LoadStudentInfo(); } //多条件查询 private void ButtonSearch_Click(object sender, EventArgs e) { //拼接whereSqlText脚本 string whereSqlText = "select stuId,stuName,stuPhone,stuBirthdate,stuSex from TableStudent"; List
} //加载数据⽅法的调⽤ LoadStudentInfo2DataGridView(whereSqlText, y());
} //加载数据 private void LoadStudentInfo() { List
#endregion #region sqlHelper类的ExecuteReader⽅法 string strSQL = "select stuSex,stuName,stuBirthdate,stuPhone from TableStudent where stuId=@stuId"; using (SqlDataReader reader = edReader(strSQL, new SqlParameter("@stuId", (object)))) { if (()) { = reader["stuBirthdate"].ToString().Trim(); = reader["stuName"].ToString().Trim(); = reader["stuPhone"].ToString().Trim(); = reader["stuSex"].ToString().Trim(); } }
#endregion } //保存更新 private void ButtonSave_Click(object sender, EventArgs e) { #region 原⽣写法 //using (SqlConnection con = new SqlConnection(nectionString())) //{ // using (SqlCommand cmd = Command()) // { // (); // dText = "update TableStudent set stuPhone=@stuPhone,stuName=@stuName,stuBirthdate=@stuBirthdate,stuSex=@stuSex where stuId=@stuId"; // hValue("@stuId", ); // hValue("@stuName", ()); // hValue("@stuBirthdate", ()); // hValue("@stuPhone", ()); // hValue("@stuSex", ()); // if (eNonQuery() > 0) // { // ("更新成功"); // } // //关闭窗体 // (); // } //}
#endregion
#region 使⽤sqlHelper类的ExecuteNoQuery静态⽅法 string strSQL = "update TableStudent set stuPhone=@stuPhone,stuName=@stuName,stuBirthdate=@stuBirthdate,stuSex=@stuSex where stuId=@stuId"; List
#endregion } }}主窗体最下⾯的⽂本框功能:(1)增加新的数据⾏(2)显⽰选中⾏数据(3)修改选中⾏数据优化:sqlHelper类中封装⽅法(1)执⾏SQL返回受影响的⾏数的ExecuteNoQuery⽅法(2)执⾏SQL返回查询结果中第⼀⾏第⼀列的值的ExecuteScalar⽅法(3)执⾏SQL返回⼀个DataTable的ExecuteDataTable⽅法(4)执⾏SQL返回⼀个SqlDataReader的ExecutedReader⽅法
发布评论