前言

最近项目用到了access,是的就是access,工作在桌面型的小数据库应用还是会用到的,如果你确定永远不会遇到access的操作,请忽略此篇文章

1.vs配置access

  既然是数据库,就少不了增删改查。不像mssql那样access没有存储过程(但可以进行宏操作),我们一般都是写T-SQL操作。

1.1.附上access的db操作辅助类。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.OleDb;

namespace DB
{
    class OdbcDBHelper : DBHelper
    {
        /// <summary>
        /// 读取二进制字段
        /// </summary>
        /// <param name="sql">存储过程或者sql语句</param>
        /// <param name="pars">参数列表</param>
        /// <param name="cmdType"></param>
        /// <param name="comTimeout_">超时时间</param>
        /// <returns></returns>
        public override Byte[] GetBinary(string sql, IList<JHSqlParameter> pars, CommandType cmdType)
        {
            return GetBinary(sql, pars, cmdType, comTimeout);
        }
        /// <summary>
        /// 读取二进制字段
        /// </summary>
        /// <param name="sql">存储过程或者sql语句</param>
        /// <param name="pars">参数列表</param>
        /// <param name="cmdType"></param>
        /// <param name="comTimeout_">超时时间</param>
        /// <returns></returns>
        public override Byte[] GetBinary(string sql, IList<JHSqlParameter> pars, CommandType cmdType, int comTimeout_)
        {
            using (OleDbConnection SConn = new OleDbConnection(connText))
            {
                SConn.Open();
                DataSet ds = new DataSet();
                try
                {
                    OleDbCommand cmd = new OleDbCommand();
                    if (pars != null)
                    {
                        OleDbParameter sqlp = null;
                        foreach (JHSqlParameter p in pars)
                        {
                            sqlp = new OleDbParameter();
                            sqlp.ParameterName = p.ParameterName;
                            sqlp.Value = p.Value;
                            sqlp.Direction = p.Direction;
                            cmd.Parameters.Add(sqlp);
                        }
                    }
                    cmd.CommandTimeout = comTimeout;
                    cmd.CommandText = sql;
                    cmd.CommandType = cmdType;
                    cmd.Connection = SConn;

                    OleDbDataReader sdr = cmd.ExecuteReader();
                    sdr.Read();
                    Byte[] blob = null;
                    blob = , , , int.MaxValue))];
                    sdr.GetBytes(, , blob, , blob.Length);
                    sdr.Close();
                    cmd.Parameters.Clear();

                    return blob;
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(ex.Message);
                }
                finally
                {
                    SConn.Close();
                }
            }
        }

        ///// <summary>
        ///// 前端获得cmd对象
        ///// </summary>
        ///// <param name="sql">存储过程的名字</param>
        ///// <returns>SqlCommand对象</returns>
        //public override OleDbCommand GetSqlCommand(string sql)
        //{
        //    return GetSqlCommand(sql, comTimeout);
        //}
        ///// <summary>
        ///// 前端获得cmd对象
        ///// </summary>
        ///// <param name="sql">存储过程的名字</param>
        ///// <param name="comTimeout">超时时间</param>
        ///// <returns>SqlCommand对象</returns>
        //public override OleDbCommand GetSqlCommand(string sql, int comTimeout_)
        //{
        //    OleDbConnection SConn = new OleDbConnection(connText);
        //    OleDbCommand cmd = new OleDbCommand();
        //    cmd.CommandTimeout = comTimeout_;
        //    cmd.CommandText = sql;
        //    cmd.CommandType = CommandType.StoredProcedure;
        //    cmd.Connection = SConn;
        //    return cmd;
        //}

        /// <summary>
        /// 执行存储过程或者sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pars"></param>
        /// <param name="cmdType"></param>
        /// <returns>受影响的行数</returns>
        public override int ExecuteNonQuery(string sql, IList<JHSqlParameter> pars, CommandType cmdType)
        {
            return ExecuteNonQuery(sql, pars, cmdType, comTimeout);
        }
        /// <summary>
        /// 执行存储过程或者sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pars"></param>
        /// <param name="cmdType"></param>
        /// <returns>受影响的行数</returns>
        public override int ExecuteNonQuery(string sql, IList<JHSqlParameter> pars, CommandType cmdType, int comTimeout_)
        {
            using (OleDbConnection SConn = new OleDbConnection(connText))
            {
                SConn.Open();
                ;
                try
                {
                    OleDbCommand cmd = new OleDbCommand();
                    if (pars != null)
                    {
                        OleDbParameter sqlp = null;
                        foreach (JHSqlParameter p in pars)
                        {
                            sqlp = new OleDbParameter();
                            sqlp.ParameterName = p.ParameterName;
                            sqlp.Value = p.Value;
                            sqlp.Direction = p.Direction;
                            )
                            {
                                sqlp.Size = p.Size;
                            }
                            cmd.Parameters.Add(sqlp);
                        }
                    }
                    cmd.CommandTimeout = comTimeout_;
                    cmd.CommandText = sql;
                    cmd.CommandType = cmdType;
                    cmd.Connection = SConn;
                    i = cmd.ExecuteNonQuery();

                    ; j < cmd.Parameters.Count; j++)
                    {
                        if (cmd.Parameters[j].Direction == ParameterDirection.InputOutput || cmd.Parameters[j].Direction == ParameterDirection.Output)
                        {
                            pars[j].Value = cmd.Parameters[j].Value;
                        }
                    }
                    cmd.Parameters.Clear();
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(ex.Message);
                }
                finally
                {
                    SConn.Close();
                }
                return i;
            }
        }

        /// <summary>
        /// 执行存储过程或者sql语句_事务
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pars"></param>
        /// <param name="cmdType"></param>
        /// <returns>void</returns>
        public override void ExecuteNonQuery_Tran(string[] sql, IList<JHSqlParameter>[] pars, CommandType[] cmdType)
        {
            ExecuteNonQuery_Tran(sql, pars, cmdType, comTimeout);
        }
        /// <summary>
        /// 执行存储过程或者sql语句_事务
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pars"></param>
        /// <param name="cmdType"></param>
        /// <returns>void</returns>
        public override void ExecuteNonQuery_Tran(string[] sql, IList<JHSqlParameter>[] pars, CommandType[] cmdType, int comTimeout_)
        {
            using (OleDbConnection SConn = new OleDbConnection(connText))
            {
                SConn.Open();
                OleDbTransaction myTran = SConn.BeginTransaction();
                try
                {
                    OleDbCommand cmd = new OleDbCommand();
                    cmd.Transaction = myTran;
                    cmd.Connection = SConn;
                    ; tt < sql.Length; tt++)
                    {
                        if (pars[tt] != null)
                        {
                            OleDbParameter sqlp = null;
                            foreach (JHSqlParameter p in pars[tt])
                            {
                                sqlp = new OleDbParameter();
                                sqlp.ParameterName = p.ParameterName;
                                sqlp.Value = p.Value;
                                sqlp.Direction = p.Direction;
                                )
                                {
                                    sqlp.Size = p.Size;
                                }
                                cmd.Parameters.Add(sqlp);
                            }
                        }
                        cmd.CommandTimeout = comTimeout_;
                        cmd.CommandText = sql[tt];
                        cmd.CommandType = cmdType[tt];
                        cmd.ExecuteNonQuery();
                        ; j < cmd.Parameters.Count; j++)
                        {
                            if (cmd.Parameters[j].Direction == ParameterDirection.InputOutput || cmd.Parameters[j].Direction == ParameterDirection.Output)
                            {
                                pars[tt][j].Value = cmd.Parameters[j].Value;
                            }
                        }
                        cmd.Parameters.Clear();
                    }
                    myTran.Commit();
                }
                catch (Exception ex)
                {
                    myTran.Rollback();
                    throw new ApplicationException(ex.Message);
                }
                finally
                {
                    SConn.Close();
                }
            }
        }

        /// <summary>
        /// 返回第一行第一列的值
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pars"></param>
        /// <param name="cmdType"></param>
        /// <returns></returns>
        public override string ExecuteScalar(string sql, IList<JHSqlParameter> pars, CommandType cmdType)
        {
            return ExecuteScalar(sql, pars, cmdType, comTimeout);
        }
        /// <summary>
        /// 返回第一行第一列的值
        /// </summary>
        /// <param name="sql">存储过程/语句</param>
        /// <param name="pars">参数列表</param>
        /// <param name="cmdType"></param>
        /// <returns></returns>
        public override string ExecuteScalar(string sql, IList<JHSqlParameter> pars, CommandType cmdType, int comTimeout_)
        {
            using (OleDbConnection SConn = new OleDbConnection(connText))
            {
                SConn.Open();
                string str = null;
                try
                {
                    OleDbCommand cmd = new OleDbCommand();
                    if (pars != null)
                    {
                        OleDbParameter sqlp = null;
                        foreach (JHSqlParameter p in pars)
                        {
                            sqlp = new OleDbParameter();
                            sqlp.ParameterName = p.ParameterName;
                            sqlp.Value = p.Value;
                            sqlp.Direction = p.Direction;
                            cmd.Parameters.Add(sqlp);
                        }
                    }
                    cmd.CommandTimeout = comTimeout_;
                    cmd.CommandText = sql;
                    cmd.CommandType = cmdType;
                    cmd.Connection = SConn;
                    object obj = cmd.ExecuteScalar();
                    str = obj == null ? "" : obj.ToString();
                    cmd.Parameters.Clear();
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(ex.Message);
                }
                finally
                {
                    SConn.Close();
                }
                return str;
            }
        }

        /// <summary>
        /// 获得DataTable
        /// </summary>
        /// <param name="sql">存储过程/语句</param>
        /// <param name="pars">参数列表</param>
        /// <returns></returns>
        public override DataTable GetDataTable(string sql, IList<JHSqlParameter> pars, CommandType cmdType)
        {
            return GetDataTable(sql, pars, cmdType, comTimeout);
        }
        /// <summary>
        /// 获得DataTable
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="pars"></param>
        /// <returns></returns>
        public override DataTable GetDataTable(string sql, IList<JHSqlParameter> pars, CommandType cmdType, int comTimeout_)
        {
            using (OleDbConnection SConn = new OleDbConnection(connText))
            {
                SConn.Open();
                DataSet ds = new DataSet();
                try
                {
                    OleDbCommand cmd = new OleDbCommand();
                    if (pars != null)
                    {
                        OleDbParameter sqlp = null;
                        foreach (JHSqlParameter p in pars)
                        {
                            sqlp = new OleDbParameter();
                            sqlp.ParameterName = p.ParameterName;
                            sqlp.Value = p.Value;
                            sqlp.Direction = p.Direction;
                            cmd.Parameters.Add(sqlp);
                        }
                    }
                    cmd.CommandTimeout = comTimeout_;
                    cmd.CommandText = sql;
                    cmd.CommandType = cmdType;
                    cmd.Connection = SConn;
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    da.Fill(ds);
                    cmd.Parameters.Clear();
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(ex.Message);
                }
                finally
                {
                    SConn.Close();
                }
                ];
            }
        }
    }
}

1.2.以下是在我们项目中config配置

注:其实就是在db操作的时候执行上面db操作辅助类就行了。

这个类库是我们封装的db操作的类库

access是oledb驱动进行操作的

找到这个对应的配置
这样就行了,然后写t-sql就行了,其实和mssq基本没区别

1.3.config配置地址(access2007版本):

  注:上面的配置进行字符串加密,以下是具体链接配置。

    其中Microsoft.ACE.OLEDB.12.0;是access2007及以上。Microsoft.Jet.OLEDB.4.0;是access2003。操作过access导出的应该知道这一点,不再累述。

Provider=Microsoft.ACE.OLEDB.;Persist Security Info=False

2.远程连接access

  用远程链接的目的就是在团队开发的时候共用一个access文件,方便协作。额外要求不可开发人员访问服务器,所以就想到了文件共享。

2.1.局域网文件共享(还有其他方式,在这只记录我自己的操作用的)

网络----属性----更改高级共享设置

公用启动网络发现

右击文件共享

选择everyone添加

关闭防火墙。

选择更改设置

在公用下面找到关闭密码保护共享。

完成。

2.2.直接在config中进行设置就行了

Provider=Microsoft.ACE.OLEDB.;Persist Security Info=False

3.执行SQL语句

  在mssql进行t-sql操作估计已经成了习惯。所以access上执行sql语句显然也必不可少。

如下:

创建-查询设计-关闭

在创建中点击创建--查询设计---关闭弹出对话框--灰色部分右击----sql语句视图

4.access进行加密

  开发好之后显然要放到客户服务器或电脑上,如果不进行加密是不是显得很不专业

如下:

已独占方式进行打开文件(这个是关键)

然后进行加密即可。

String strConn = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=.\DB; Jet OLEDB:Database Password=123456";

5.备份数据库(本地备份和远程备份)

方法1,:安装数据库打包的时候给电脑输入文件定时备份批命令。{用户电脑如果不能现场设置,此方法可舍弃}

方法2:利用宏操作写定时任务【ps:access里面的宏操作。用vb来写】

方法3:用一个小程序去实现,也就是咱们自己写一个程序来实现方法1,打包进去即可。同时把Windows命令在电脑中创建。

ps: 1远程借助ftp,执行批命令上传即可。

2.至于宏操作能解决很多事情,只是有时系统会把它禁用掉。

access基本操作(c#操作,远程连接,执行sql,加密,备份)的更多相关文章

  1. 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷

    原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...

  2. 使用C# 操作存储过程,执行sql语句通用类

    如何使用C# 操作存储过程,执行sql语句? 闲话不多说,直接上代码:     /// <summary>    /// Sql通用类    /// </summary>    ...

  3. ecshop 全系列版本网站漏洞 远程代码执行sql注入漏洞

    ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0.3.6.4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码 ...

  4. 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷

    通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下:     步骤1:通过MyEclipse中的window->show View->ot ...

  5. DB操作-用批处理执行Sql语句

    用批处理在命令行状态下调用查询分析器来执行这个sql文件里的语句.下面就是sqlserver帮助里对于查询分析器(isqlw)命令行参数的解释:isqlw 实用工具(SQL 查询分析器)使您得以输入 ...

  6. Mysql的下载,安装,远程连接,密码加密规则修改。

    第一次接触mysql,,很多地方不懂,出了很多问题.本来应该在Linux系统中安装mysql的,但是奈何各种电脑限制,所以在公司电脑的Windows service R2 系统上装了mysql数据库. ...

  7. Python3.0 操作MySQL数据库执行SQL语句

    py3不支持MySQLdb,需要导入pymysql模块 # coding: utf-8 # Team : Quality Management Center # Author:Carson # Dat ...

  8. 断开所有远程连接(sql server)

    DECLARE @d VARCHAR(8000) SET @d = ' ' SELECT @d = @d + ' kill ' + CAST(spid AS VARCHAR) + CHAR(13)FR ...

  9. windows 10 远程连接出现CredSSP加密Oracle修正错误

    以下方法只受用于windows专业版或者企业版 . 解决方法: 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并 ...

随机推荐

  1. UVA1586

    #include<stdio.h> #include<string.h> #include<ctype.h> int main(){ int n; ]; int n ...

  2. BZOJ2117: [2010国家集训队]Crash的旅游计划

    裸点分,点分树每层维护有序表,查询二分,复杂度$O(nlog^3n)$. #include<bits/stdc++.h> #define M (u+v>>1) #define ...

  3. Html中列表标签<ul>的使用

    借助Html中的列标标签<ul>在某列文字前面添加标注 <html> <head> <title>文字上方添加标记说明</title> &l ...

  4. centos 6.4 getmail 收取163 邮件

    #CentOS 6.6 64bit 默认yum 源没有getmail rpm包#首先安装EPEL yum 源EPEL(Extra Packages for Enterprise Linux):http ...

  5. 网络抓包wireshark(转)

    转自 网络抓包wireshark   抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经 ...

  6. p/invoke碎片--对类的封送处理

    主要是看默认封送处理行为 按类成员的类型是否为“可直接传递到非托管内存”的类型来分类;按照成员中是否有“可直接传递到非托管内存”的类型来讨论. 所有成员都是“可直接传递到非托管内存”的类型 托管代码和 ...

  7. MVC防止xss攻击 ——Html.AntiForgeryToken的AJAX提交

    1.在Html表单里面使用了@Html.AntiForgeryToken()就可以阻止CSRF攻击. 2.相应的我们要在Controller中也要加入[ValidateAntiForgeryToken ...

  8. MySQL的if,case语句使用总结

    原文地址: http://outofmemory.cn/code-snippet/1149/MySQL-if-case-statement-usage-summary

  9. Bubble Cup 8 finals A. Fibonotci (575A)

    题意: 定义类循环序列为 长度无限,且除了有限个元素外,均满足s[i] ≡ s[i mod N] (i≥N). 现在有数列F,定义为 F[i] = s[i-2]*F[i-1] + s[i-1]*F[i ...

  10. SQL Server监控报警架构_如何添加报警

    一.数据库邮件报警介绍 数据库邮件是从SQL Server数据库引擎发送电子邮件企业解决方案,使用简单传输协议(SMTP)发送邮件.发送邮件进程与数据库的进程隔离,因此可不用担心影响数据库服务器. 数 ...