access基本操作(c#操作,远程连接,执行sql,加密,备份)
前言
最近项目用到了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,加密,备份)的更多相关文章
- 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷
原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...
- 使用C# 操作存储过程,执行sql语句通用类
如何使用C# 操作存储过程,执行sql语句? 闲话不多说,直接上代码: /// <summary> /// Sql通用类 /// </summary> ...
- ecshop 全系列版本网站漏洞 远程代码执行sql注入漏洞
ecshop漏洞于2018年9月12日被某安全组织披露爆出,该漏洞受影响范围较广,ecshop2.73版本以及目前最新的3.0.3.6.4.0版本都受此次ecshop漏洞的影响,主要漏洞是利用远程代码 ...
- 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷
通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEclipse中的window->show View->ot ...
- DB操作-用批处理执行Sql语句
用批处理在命令行状态下调用查询分析器来执行这个sql文件里的语句.下面就是sqlserver帮助里对于查询分析器(isqlw)命令行参数的解释:isqlw 实用工具(SQL 查询分析器)使您得以输入 ...
- Mysql的下载,安装,远程连接,密码加密规则修改。
第一次接触mysql,,很多地方不懂,出了很多问题.本来应该在Linux系统中安装mysql的,但是奈何各种电脑限制,所以在公司电脑的Windows service R2 系统上装了mysql数据库. ...
- Python3.0 操作MySQL数据库执行SQL语句
py3不支持MySQLdb,需要导入pymysql模块 # coding: utf-8 # Team : Quality Management Center # Author:Carson # Dat ...
- 断开所有远程连接(sql server)
DECLARE @d VARCHAR(8000) SET @d = ' ' SELECT @d = @d + ' kill ' + CAST(spid AS VARCHAR) + CHAR(13)FR ...
- windows 10 远程连接出现CredSSP加密Oracle修正错误
以下方法只受用于windows专业版或者企业版 . 解决方法: 运行 gpedit.msc 本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并 ...
随机推荐
- LinuxMint配置Git(图文教程)
1.生成秘钥(直接回车,秘钥存放路径看命令行信息) 2.打开秘钥,需要注意的是.ssh可能是隐藏的,这时需要Ctrl+H显示隐藏文件夹 3.复制秘钥,添加到GitHub(Settings), 4.添加 ...
- Day10-线程进程
什么是进程? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次 ...
- NoSQL和MongoDB
NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”.关系数据库关注在关系上,NoSQL关注在存储上. 发展背景 (1)传统关系型数据库遇到了性能瓶颈. 高并发读写(High ...
- 2016 年 11 月 12 个轻量级的 JavaScript 库
https://www.oschina.net/news/79316/2016-11-javascript-library?from=20161127
- C# TCP socket发送大数据包时,接收端和发送端数据不一致 服务端接收Receive不完全
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...
- 在使用 HttpWebRequest Post数据时候返回 400错误
笔者有一个项目中用到了上传zip并解压的功能.开始觉得很简单,因为之前曾经做过之类的上传文件的功能,所以并不为意,于是使用copy大法.正如你所料,如果一切很正常的能运行的话就不会有这篇笔记了. 整个 ...
- beaglebone black 烧写系统后释放空间。
执行 ./opt/script/toolsgrow_partition.sh就能将2g的空间变为sd卡的大小,我的是8g,执行后就是7.7g
- REDHAT一总复习1 NTP更改时区,并验证时区设置是否正确
把计算机时区调整到巴哈马(这是个啥地方?听都没听过.) 使用 tzselect 进行确定时区,并进行可对话性的设置,按照对应的序号,射进去就行了. 使用:timedatectl set-timezo ...
- mysql 主主复制搭建用的命令
# mysql 容器的启动docker run -d -p 3306:3306 -v /database_files/products/data:/var/lib/mysql -v /database ...
- SQLServer日期函数用法
--1.显示本月第一天 ,) ),)) --2.显示本月最后一天 ,),,))) ,,,)) --3.上个月的最后一天 ,,)) --4.本月的第一个星期一 , ) --5.本年的第一天 ,) --6 ...