C# 实现数据的增删改查
最近跟了几个项目,期间学到了不少东西,所以把学到的知识点写在这里,供以后参考:
1:增,删,改,查
要对数据进行增删改查,前提是获取数据集,如何获取数据集呢?简单的就是通过查询语句查询出来,并将查询出来的结果传递给某个数据容器,通过操作数据容器来操作数据。
private string m_SQL;//sql语句
private string m_SqlConnString; //数据库连接字符串
private SqlConnection m_SqlConnection; //数据库连接对象
private DataSet m_DataSet;//全局变量数据集
private SqlDataAdapter m_SqlDataAdapter; //数据适配器
private SqlCommandBuilder m_SqlCommandBuilder; //自动生成更新DataSet的语句
private BindingSource m_BindingSource;//绑定数据集
m_SqlConnString = DBManagerSQL.SetConnectionString(Common.C_CONNECTION_KEY);//获取数据库连接字符串
m_SqlConnection = new SqlConnection(m_SqlConnString);//连接数据库
m_SQL = "select [字段名1],[字段名2],[字段名3]......... from [表名] where [过滤条件]";
m_SqlDataAdapter = new SqlDataAdapter(m_SQL, m_SqlConnection);//创建数据适配器
m_SqlCommandBuilder = new SqlCommandBuilder(m_SqlDataAdapter); //用于自动生成sqlCommand
m_DataSet = new DataSet();
//填充数据集
m_SqlDataAdapter.Fill(m_DataSet, "表的别名(自己定义)");
//初始化myBindingSource,控件与数据集中间的一个桥梁。
m_BindingSource = new BindingSource();
m_BindingSource.DataSource = m_DataSet;
m_BindingSource.DataMember = "表的别名";
//调用数据绑定函数
this.BindingCtrlToDB();
//将数据集绑定到数据视图上
gridControlMain.DataSource = m_BindingSource;
//翻译空间上面显示的英文字段名为中文
DBManagerSQL.SetGridComment(gridViewMain, tableName);
public override void BindingCtrlToDB()
{
//字段绑定
控件名.DataBindings.Clear();
控件名.DataBindings.Add("EditValue", m_BindingSource, "数据库里的字段名");
}
增:
this.m_BindingSource.AddNew();
当为某一些控件赋初始值时,要在m_BindingSource.AddingNew();的方法里面写,否则容线空值的现象,因为增加的时候m_BindingSource.AddNew();会把控件清空。
删:
public virtual void btnDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (MessageBox.Show("您确定要删除这条记录吗?", "提示", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question) == DialogResult.OK)//删除时提示用户是否删除
{
this.m_BindingSource.RemoveAt(m_BindingSource.Position);//删除选中行
this.m_SqlDataAdapter.Update(this.m_DataSet.Tables[0]);//删除后更新数据集
//这里要把删除按钮的操作控制好,如果不想控制,可以写一句话来判断m_BindingSource里面是否还有数据 //,如果有可以删除,如果没有则提示并返回
// if(m_BindingSource.RwCount>0)
// {
// his.m_BindingSource.RemoveAt(m_BindingSource.Position);//删除选中行
// this.m_SqlDataAdapter.Update(this.m_DataSet.Tables[0]);//删除后更新数据集
// }
//else
//{
//MessageBox.Show("没有数据可以删除");
//}
}
}
改:
修改没有什么提别的,这里不作介绍了。
查:
主要就是sql语句的写法,这里不作详细介绍。
存储:数据操作完毕后必然要保存。即把数据的修改提交到数据库。
public virtual void btnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (this.InitEditControlInputRules() == true)
{
this.m_BindingSource.EndEdit();//结束m_BindingSource的编辑状态
//如果是直接在gridview里面编辑数据则需要两句话
//this.gvList.CloseEditor();
//this.gvList.UpdateCurrentRow();
//如果没有这两句话会出现最后条虽然写入了数据但是保存时出现空值,因为谢了,
//那是因为他并没有结束编辑状态并写入到数据集中
this.m_SqlDataAdapter.Update(this.m_DataSet.Tables[0]);
}
}
取消m_BindingSource的编辑可以调用
this.bindingSourceMain.CancelEdit();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?