有关数据库增删改(通用方法)
private void AccEss数据库增删改(List<string> 表达式, bool 控制 = false) { int 影响数 = 0; Thread 执行操作 = new Thread(delegate() { OleDbConnection 连接 = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = 数据库名.mdb"); 连接.Open(); foreach (string 元素 in 表达式) { OleDbCommand 执行 = new OleDbCommand(元素, 连接); 影响数 += 执行.ExecuteNonQuery(); } 连接.Close(); }); 执行操作.Start(); 执行操作.Join();/*有些执行过程不需提示控制*/ if (影响数 > 0 && 控制) MessageBox.Show("数据保存成功!受影响数" + 影响数.ToString("〖00000〗"), "友情提醒", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }
执行示例[增-数据插入]:
List<string> 数据库执行语句 = new List<string>(); 数据库执行语句.Add("INSERT INTO 数据表名 (字段名1,字段名2) VALUES ('" + 数据1 + "', '" + 数据2 + "')"); AccEss数据库增删改(数据库执行语句, false);
执行示例[改-数据更新]:
数据库执行语句.Add("UPDATE 数据表名 SET 字段名1 = '" + 数据1 + "' , 字段名2 = '" + 数据2 + "' WHERE _ID = " + int.Parse(数据ID)); AccEss数据库增删改(数据库执行语句, false);
执行示例[删-数据删除]:
数据库执行语句.Add("DELETE FROM 数据表名 WHERE 字段名 = '" + 删除.Text + "' and _ID = " + int.Parse(数据ID)); AccEss数据库增删改(数据库执行语句, true);
执行示例[综合-多表-批量]:
数据库执行语句.Add("INSERT INTO 数据表名1 (字段名1,字段名2) VALUES ('" + 数据1 + "', '" + 数据2 + "')"); 数据库执行语句.Add("UPDATE 数据表名2 SET 字段名1 = '" + 数据1 + "' , 字段名2 = '" + 数据2 + "' WHERE _ID = " + int.Parse(数据ID)); 数据库执行语句.Add("DELETE FROM 数据表名3 WHERE 字段名 = '" + 删除.Text + "' and _ID = " + int.Parse(数据ID)); AccEss数据库增删改(数据库执行语句, true); AccEss数据库增删改(表达式:数据库执行语句);
之所以写成这样形式,理由1:如果某语句在多处被用到则归纳;理由2:便于代码维护;理由3:可以很方便写到类文件中编译为DLL文件.
无论是AccEss数据库还是Sql数据库或.NET支持的数据提供者,只要改变对应的语句即可通用.如:AccEss数据库则使用OleDbConnection和OleDbCommand,Sql数据库则使用SqlConnection和SqlCommand,语法是一样的,修改即可.
有关数据库查询与填充(通用方法)
方法:DataSet 缓存数据表 = new DataSet();
private void AccEss数据库查询与填充(string 表达式, string 表名 = "默认", bool 控制数据叠加 = false)/*定义可选参数*/ { try { Thread 数据询填 = new Thread(delegate() { OleDbConnection 建立连接 = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = 数据库名.mdb"); OleDbDataAdapter 数据集 = new OleDbDataAdapter(表达式, 建立连接); if (缓存数据表.Tables[表名] != null && !控制数据叠加) { 缓存数据表.Tables[表名].Clear(); /*下面语句看情况调用*/ 缓存数据表.Tables[表名].Dispose(); GC.SuppressFinalize(缓存数据表.Tables[表名]); } 数据集.Fill(缓存数据表, 表名); 绑定源 = BindingContext[缓存数据表, 表名]; }); 数据询填.Start(); 数据询填.Join(); } catch (Exception Ts) { 错误友情提示("连接数据库、查询、填充数据错误! " + Ts.ToString()); } finally { } }
调用:
string 表达式 = "SELECT * FROM 表名 WHERE 字段名 like'" + 查询数据 + "' order by _ID ASC"; AccEss数据库查询与填充(表达式, "表名称", false);
如果需要叠加多次查询结果则:AccEss数据库查询与填充(表达式, "表名称", true);即可。
使用传递命名参数的写法
AccEss数据库查询与填充(表达式:表达式, 表名:表名, 控制数据叠加:true)/*按原顺序传参数*/ AccEss数据库查询与填充(控制数据叠加:true, 表名:表名, 表达式:表达式)/*按任意顺序传参数*/