数据库操作通用方法(线程)

有关数据库增删改(通用方法)

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, 表名:表名, 表达式:表达式)/*按任意顺序传参数*/  

 

转载于:https://www.cnblogs.com/HappyEDay/p/5952001.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值