【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

篇一:WinForm开发总体概述与技术实现

篇二:WinForm开发扇形图统计和Excel数据导出

篇三:Access远程连接数据库和窗体打包部署



【小记】:最近基于WinForm+Access数据库完成一个法律咨询管理系统。本系统要求类似网页后台管理效果,并且基于局域网内,完成多客户端操作同一数据库,根据权限不同分别执行不同功能模块。核心模块为级联统计类型管理、数据库咨询数据扇形统计、树的操作、咨询数据的管理、手写分页、Excel数据的导出、多用户操作服务器数据等。并支持多用户同时操作,远程连接数据库且对数据IP信息的修改。开发过程中特别对界面的要求和事后多用户操作显得略为麻烦。自此,本项目得以完善交付,然后对其进行小结。依旧采用整个框架认识,核心知识逐个梳理分析,以便于二次开发和需要之程序员共享。



篇三:Access远程连接数据库和窗体打包部署

【开篇】本章概述



一、Access实现远程连接数据库 

所遇问题和解决方案:之前介绍多,之前大都采用Oracle和Server已经MySQL开发,虽然Access数据库开发倒也使用过。但是远程配置还是第一次,所以开始就遇到棘手问题。那么如果配置数据库,如何达到远程的效果?

第一思路:采用ftp配置服务器,其他客户端访问我的IP地址和端口即可。于是下载一个简易的FTP软件,将本地数据库上传。可以连接数据库遇到问题了,无法访问此文件。原则上是可行的,后来项目总结发现当时自己本地配置,外加sql连接语句的问题。导致原因所在吧。后来采用第二种思路。

第二思路:局域网内使用VPN进行访问,然后连接共享文件夹。于是对VPN进行配置(VPN配置,文件共享,远程设置等信息随后会在技术梳理具体展开),在配置完成后,共享文件,安装客户端程序依旧无法实现连接。那么几经折腾之后决定采用第三种思路。

第三思路:直接采用远程连接数据库,在服务器共享文件配置IP地址,前期还是无法实现局域网共享的效果。后来得以解决,如何解决随后小结中结合VPN失败原因对比分析。

以上三种思路,最终得以实现远程效果,效果图如下:

以上问题分析:

1、首先解决远程共享,如何连接成功?

前提是局域网内远程连接数据库,随后服务器进行数据文件共享,如何保证文件的安全性随后介绍。然后访问IP地址,IP地址可以更改的,因为如果服务器稳定尚可。我所遇到的客户服务器就是本地笔记本电脑,在联网时候IP地址随时可以变化,或者更换服务器时。IP地址灵活性显得重要,故不可写死。但是问题出现了,很多人或许开始时候也遇到过,IP地址保存的问题。笔者最终没有找到更好的解决方案,只是以config文件中写入数据库连接语句,然后将其保存到本地磁盘中。这样修改IP时候,在服务器本地保存。

2、如何控制数据库文件安全性?

安全性问题一直是程序员最为关注问题之一,由于本人针对的客户是同一个公司,10多人操作,基本都不懂软件方面技术,再则拥有共同利益,不会对外开放,利益分配上对安全性起一定作用。故做些简单操作即可,但是面对更多用户,如何更好完善,大家有好的想法可供讨论。我则直接采用在accdb文件中进行数据库加密。

3、如此远程连接会有隐患问题?

因为远程连接可以查看服务器所有信息,特别针对服务器为本地电脑。假如管理员服务器电脑有些隐私,私人信息,密码复制文本或你懂的视频什么的,遇到女同事访问,也显得不好不是。故此,远程连接可以解决问题,但是远程的同时,你的信息无意全部暴露。基于此如何解决呢?可以采用VPN设置,通过VPN共享出来的文件,进行连接即可,其他非共享隐藏的。至于ftp,我认为可以达到最终效果的,笔者没有尝试,有兴趣的可以试试。

二、窗体的打包

1、选中解决方案->新建项目->其他项目类型->安装和部署->Visual Studio Installer->安装项目->更改名字和保存路径

2、1在应用程序文件夹右键选择输出文件->主输出->确定。

2再次 应用程序文件夹 属性添加文件,分别选择ico格式的安装和卸载快捷方式图片。再同样方式在C:\Windows\System32下找到mstsc.exe文件,进行添加。

3选择主输出,属性,创建快捷方式;选择mstsc,属性,创建快捷方式。

4在新建项目Setup1,按住F4查看属性,复制属性中producecode:{E9B10DB2-B42A-4CA5-9F12-B419BC939738}

5点击卸载某某管理系统,F4,参数,x/{E9B10DB2-B42A-4CA5-9F12-B419BC939738}.配置Icon图片

6同样方式设置安装某某管理系统的Icon

7应用程序文件夹,F4查看属性,[ProgramFilesFolder][Manufacturer]\[ProductName]中的删除[Manufacturer]

8选择生成项目Setup生成

【篇中】知识梳理



1、如何配置连接VPN?

VPN服务器:  进入网络共享中心->更改适配器设置->是否有菜单栏(没有则点击Alt建)->文件->新建传入连接->添加新的用户->设置用户名、密码->确定->下一步->最后配置完成。

客户端连接:   进入网络共享中心->设置新的网络和连接->连接到工作区->下一步->使用我的Inter连接(VPN)->输入连接的IP地址->创建->输入用户名、密码(类似宽带连接)。

2、如何使用FTP?

两种方式:1.下载个迷你FTP服务器,设置IP地址,端口号。选择是否需要登陆验证,如果选中则提示设置账户密码。启动后进行测试。测试成功后,可以点击浏览选中生成文件。

2.下载FTP软件,特别在发布网站时候,通过输入你的域名空间。然后将VS中的项目打包生成,将生成后的文件进行上传到空间中即可。

3、如何设置文件共享?

1 将需要共享的文件放到一个文件夹中,右键点击文件夹,查看共享->特定用户->点击下拉框选择用户,点击添加->对权限级别进行设置->共享

2 打开控制面板->网络和Internet->网络和共享中心->更改高级共享设置->所有网络->关闭密码共享保护

4、如何进行远程?

点击win+R->输入mstsc->确定->输入IP地址、用户名、密码.

注意一点:有时候都ok,但是还是连接失败,去查看远程设置中是否允许远程连接

点击计算机属性->远程设置->远程->选择允许连接

5、 Access数据库怎样完成连接,保存的?

两种Access的连接语句:

1.本地连接:<add name="sql" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‘C:\Users\bncPc\db\Legal.accdb‘" />

2.远程连接:<add name="sql" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=//10.130.16.137/db/Legal.accdb" />

6、保存IP地址的方法?

通过控制操作config文件,具体方法如下:

        private void save()
        {
            try
            {
                if (textBox3.Text != "")
                {
                    XDocument doc = XDocument.Load(file);
                    //sql数据库数据库配置
                    //string connstring = "initial catalog=Highway;Data Source=" + this.textBox3.Text + ";uid=" + this.textBox4.Text + ";pwd=" + this.textBox5.Text + ";";
                   //access数据库远程配置
                    //Provider=Microsoft.ACE.OLEDB.12.0;Data Source=//10.130.16.136/db/Legal.accdb
                    string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=//" + textBox3.Text.ToString()+ "/db/Legal.accdb";
                    doc.Elements("configuration").Elements("connectionStrings").Elements("add").Attributes("connectionString").FirstOrDefault().SetValue(connstring);
                    doc.Save(file);
                    //由于DBHelperSQL中的ConnectionString(公共静态变量)未被修改引发的bug
                    XDocument xdoc = XDocument.Load(file);
                    string val = doc.Elements("configuration").Elements("connectionStrings").Elements("add").Attributes("connectionString").FirstOrDefault().Value;
                    SQLHelper.connstr = val;
                }
                else
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message+ex.StackTrace);
                //MessageBox.Show("数据库保存失败!!");
            }
        }

 

附件:配置文档



【使用介绍】

一 本系统采用VS2010+Access完成,运行要求如下:

1 win7以上 操作系统

2 安装Office 2010以上版本

3 安装FromWork4.0插件和AccessDatabaseEngine.exe

二 管理员操作配置  

1,将【法律咨询系统】文件夹下的【db文件夹】复制到c盘

2,设置db文件夹为共享

(1)右击文件夹-》共享-》特定用户-》添加Everyone用户,并设置读写。-》共享

(2)打开控制面板-》网络和Internet-》网络和共享中心-》更改高级共享设置-》所有网络-》关闭密码共享保护

3,安装db下的Microsoft.NET.exe

4,安装:法律咨询中心\Debug\Setup1.msi      卸载:法律咨询中心\Debug\setup.exe

三 客户端的使用  

1,将【法律咨询系统】文件夹下的【client文件夹】复制到c盘

2,安装client下的Microsoft.NET.exe和AccessDatabaseEngine.exe

3,win+R打开cmd-》mstsc-》远程IP地址

4,打开软件服务器设置下更改管理员IP地址登录

四 初始化设置

1,管理员初始化:用户名:admin 密码:admin

2,用户初始化:用户名:ad 密码:123

五 常见登录失败解答  

1 db/client文件夹是否拷贝到C盘

2 远程服务器是否成功

3 服务器设置下的IP地址是否配置正确。

【篇末】本章总结



截止此刻,Access远程连接数据库和窗体打包部署系列文章全部结束,本系列主要介绍一些Access远程连接操作,以及这个探索过程中,对ftp,vpn,文件共享等理解。中间对Excel和统计图的介绍,并推荐几篇相关文件。整体采用分割法进行分析。先介绍思路和整体效果。然后进行知识点梳理总结,最后汇总。这样形成知识分离化,随后需要直接使用,也帮助需要之人。

 源码:Access远程访问XXXX系统.zip

时间: 2024-08-09 13:33:18

【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署的相关文章

【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库完成一个法律咨询管理系统.本系统要求类似网页后台管理效果,并且基于局域网内,完成多客户端操作同一数据库,根据权限不同分别执行不同功能模块.核心模块为级联统计类型管理.数据库咨询数据扇形统计.树的操作.咨询数据的管理.手写分页.Excel数据的导出.多用户操作服务器数据等.并支持多用户同时操作,远程连

【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库完成一个法律咨询管理系统.本系统要求类似网页后台管理效果,并且基于局域网内,完成多客户端操作同一数据库,根据权限不同分别执行不同功能模块.核心模块为级联统计类型管理.数据库咨询数据扇形统计.树的操作.咨询数据的管理.手写分页.Excel数据的导出.多用户操作服务器数据等.并支持多用户同时操作,远程连

部署基于Gitlab+Docker+Rancher+Harbor的前端项目这一篇就够了

部署基于Gitlab+Docker+Rancher+Harbor的前端项目这一篇就够了 安大虎 ? momenta 中台开发工程师 6 人赞同了该文章 就目前的形势看,一家公司的运维体系不承载在 Docker+Harbor(或 Pouch 等同类平台)之上都不好意思说自己的互联网公司.当然这些技术也不适用于全部公司,技术在迭代,平台也一样,把我使用的工具和大家分享下,一起成长(文章中扩展可按需Google). Docker docker的架构图如下: 从图中可以看出几个组成部分 docker c

多租户实现之基于Mybatis,Mycat的共享数据库,共享数据架构

前言 SaaS模式是什么? 传统的软件模式是在开发出软件产品后,需要去客户现场进行实施,通常部署在局域网,这样开发.部署及维护的成本都是比较高的. 现在随着云服务技术的蓬勃发展,就出现了SaaS模式. 所谓SaaS模式即是把产品部署在云服务器上,从前的客户变成了"租户",我们按照功能和租用时间对租户进行收费. 这样的好处是,用户可以按自己的需求来购买功能和时间,同时自己不需要维护服务器,而我们作为SaaS提供商也免去了跑到客户现场实施的麻烦,运维的风险则主要由IaaS提供商来承担. S

项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享

因业务发展需要现在的系统不足以支撑现在的用户量,于是我们在一周之前着手项目的性能优化与分布式部署的相关动作. 概况 现在的系统是基于RabbitHub(一套开源的开发时框架)和Rabbit.WeiXin(开源的微信开发SDK)开发的一款微信应用类系统,主要业务是围绕当下流行的微信元素,如:微官网.微商城.微分销.营销活动.会员卡等. 关于RabbitHub详情请戳: .NET 平台下的插件化开发内核(Rabbit Kernel) RabbitHub开源情况及计划 关于Rabbit.WeiXin详

在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreSQL.IBM DB2.或者国产达梦数据库等等,这些数据库的共同特点是关系型数据库,基本上开发的模型都差不多,不过如果我们基于ADO.NET的基础上进行开发的话,那么各种数据库都有自己不同的数据库操作对象,微软企业库Enterprise Library是基于这些不同数据库的操作做的抽象模型,适合多数据

基于Qt的局域网即时通信系统设计与实现(一)

本系统主要实现了注册登录.好友管理.即时通信(文本.视频).群组功能.消息管理.邮件收发.文件收发等主要功能.用户通过简单的注册以后,便可以登录系统.随后进行好友.群以及讨论组的添加,就可以与其他在线的用户进行行即时通信.对于消息记录,服务器以及客户端都会在各自文件或者数据库中进行相应的存储,用户可以随时进行本地消息以及网络消息的管理.当然文件的收发也得到了很好的实现,并且也集成了简单邮件收发功能. 本想分模块展示,但是要把单独模块的代码o出来,真的很麻烦,所以还是偷懒一点,直接整个来吧,不明白

Tair LDB基于Prefixkey的范围查找性能优化项目测试及完成总结报告

项目这周就截止了,这算是我第一个有导师指导的真正意义上的C++项目,项目基本完成,想要实现的功能也已经实现,并做了大量的性能测试.不过这对于业界来说,可能完成的还不够成熟,还有许多待改进的地方,还不能马上投入使用,还需要进行严格的考验,毕竟tair的应用场景太重要了,不容一丝疏忽.但于我个人而言,帮助还是挺大的,不仅是多了一次有价值的项目经验,更是学到了一些项目之外的东西,比如计划的重要性,惰性的控制,时间的分配管理(找工作与项目进度产生冲突)等.好了,不多说了,在这最后一篇总结报告里首先给出性

一个数据库操作类,适用于Oracle,ACCESS,SQLSERVER

最近做了一个数据诊断的项目,里面自己写了一个数据库的操作类,包含:连接数据库.读数据表.执行SQL操作,释放数据库等组成,希望对大家有用,由于水平有限,若有错误或者代码不足地方欢迎指正,谢谢. ADOOperate.H [cpp] view plaincopy ////////////////////////////////////////////////////////////////////// // 类功能:用于数据库的操作 主要实现 连接数据库 读数据表 检查数据表 执行SQL语句 //