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();