我编写了一个与Sqlite非常合作的Windows桌面应用程序.它是一个单用户应用程序,数据库就位于运行应用程序的计算机上.
但是,应用程序已经增长,现在多个用户应该能够运行应用程序并连接到一个共享数据库.
我想能够在网络驱动器上共享sqlite文件,但这显然会导致数据损坏,除非有人有任何想法.
我想我可能需要安装数据库服务器,但商业MySQL许可证没有意义,PostgreSQL与我不得不重写我的应用程序.我根本没有和Firebird合作,所以我不确定这是不是一个好的解决方案.
是否有可以安装的Sqlite数据库服务器来处理Sqlite数据库文件上的传入事务?
如果我要求客户自行下载和安装MySQL,我是否必须拥有商业许可证?
任何建议或方向都会很棒,谢谢.
让我解释一下这个标题.
我在应用程序(TestApp)中使用Entity Framework Code First .出于调试目的,TestApp连接到SQLExpress数据库(中央数据库服务器).
为了简单起见这里,该数据库包含一个表的"产品"和TestApp显示在数据网格数据库中的所有"产品"和TestApp可以添加/删除"产品"或修改的产品名称.
public class Product {
public int ProductId { get; set; }
public string ProductName { get; set; }
}
public DbSet<Product> Products { get; set; }
Run Code Online (Sandbox Code Playgroud)
我有3台PC安装并运行TestApp(我称之为Client_X).如果我通过Client_1添加新的"产品",则不会在Client_2和Client_3上的TestApp中直接显示.仅当Client_2和Client_3再次获取所有数据(手动刷新)时,才会看到新添加的记录.
我想知道的是:如何通过EF Code First了解数据库中的更改?Client_2和Client_3如何自动更新其数据网格,因为添加或删除了新项目?
我不确定它是否被要求太多,但是一个简单的示例项目或简单的代码来证明这将是有用的.
仅供参考:我是EF Code First的新手.(我使用的是.NET 4.0和EF Code First 4.3.1)
提前致谢.
方案:
Client_3<
\
\
\
\
\>
Client_1 <---> [Central Database] <----> Client_2
Run Code Online (Sandbox Code Playgroud)
更新/编辑:
好的,很明显,实体框架本身不会在多个客户端之间进行任何同步.
所以我会问另一个问题: 我正在考虑使用Client-Server方式:
与该单个服务器应用程序通信的多个客户端.
现在什么是确保客户使用相同数据并查看每个人更新/更改的最佳方法?(我希望代码示例.)
在多用户环境中:如何确保所有客户端都能看到每个客户端的更改?做这个的最好方式是什么?
在过去,我创建了一个C#应用程序并将其安装在2台PC上.它连接到中央SQL Express服务器(客户端应用程序使用Entity Framework Code First作为ORM).当client1向数据库添加记录时,这并不直接显示给client2.仅当client2再次获取所有数据(硬刷新)时,才会看到更改.
现在我正在寻找一个关于如何"同步"(?)可以或应该完成的解决方案.我喜欢工作实体框架代码首先,一个解决方案可以保持这个很好.该应用程序仍处于非常早期阶段.我想有一个中央数据库和多个客户端连接到它,但我不确定这是否是一个很好的解决方案.如果您的建议/解决方案需要客户端连接到的中央服务器应用程序(以及服务器应用程序执行数据库处理的位置),这将没有问题.
如果可能的话,基本的示例解决方案或一些显示如何始终使用最新数据的基本代码可能会非常有用!
类似的问题:
提前致谢
初始条件:我在通过Linux(OpenSuse)命令行访问的远程计算机上运行Python Flask服务器.服务器运行完美.它为xyz.com:5000呈现html.
问题:我是新添加的用户.我希望服务器读取我的.py文件.我该怎么办?我需要新的端口号吗?或者它是xyz.myusername.com:5000?我需要更改哪些配置?超级用户是否需要干预?
谢谢!
通过使用"ACTION_DELETE"意图,调用应用程序卸载应用程序的正常方法是:
startActivity(new Intent(Intent.ACTION_DELETE, Uri.parse("package:" +packageName)));
Run Code Online (Sandbox Code Playgroud)
从一些Android版本(不记得哪个)开始,可以在同一设备上为多个用户安装应用程序.
这意味着有一种卸载应用程序的新方法,将为所有用户卸载该应用程序(图片取自Lollipop - Android 5.0):

我在文档中搜索过,但无法找到答案:
有没有办法通过意图执行此操作?也许有些东西要添加到我上面写的意图中?
ADB是否有新命令为所有用户删除应用程序?
有没有办法检查是否为多个用户安装了应用程序?
android uninstall multi-user android-intent android-5.0-lollipop
我创建了一个MS Access 2003应用程序,设置为拆分前端/后端配置,用户组大约有五个人.前端.mdb位于网络文件服务器上,它包含所有查询,表单,报告和VBA代码,以及指向后端.mdb中所有表的链接以及一些指向ODBC数据源的链接,如AS/400.后端位于同一网络文件服务器上,它只包含表数据.
这一点运行良好,直到我"上线",我的少数用户开始提出增强请求,错误报告等.我已经通过在我自己的前端.mdb副本中开发/测试来推出新代码另一个网络文件夹(链接到同一个后端.mdb),然后将我完成的文件发布到"come-and-get-it"文件夹中,提醒用户,然后他们复制/粘贴新的前端将文件归档到网络上的自己的文件夹中.这样,每个用户都可以在他们处于"停止点"时更新他们的前端,而无需立即启动所有人.
我发现,当我正在开发时,有时Access变得极其缓慢.就像,当我开发一个表单并尝试单击属性框上的下拉列表时,下拉箭头将会推入,但是在选项列表出现之前需要几秒钟.或者在表单上选择和移动控件时存在大量延迟.或许多键盘滞后.
然后,在其他时候,根本没有滞后.
我想知道是不是因为我与其他用户链接到同一个后端.我确实做了一些合理的努力来设置查询,表单,报告等,最小的记录锁定,如果有的话,根据需要.但我可能错过了一些东西,或者可能还有一些我需要解决的性能问题.
但我想知道是否有更好的方法来设置我自己的开发后端.mdb,所以我可以在"安全"数据上测试我的代码而不是与其他用户相同的实时数据.我担心损坏一些数据只是时间问题,可能是在最糟糕的时刻.
显然,我可以设置一个单独的后端.mdb,并使用链接表管理器每次手动重新配置前端的表链接.但我希望有一个更优雅的解决方案.
我想知道在这个多用户拆分数据库配置中是否还有其他性能问题需要考虑.
编辑:我应该补充说,我坚持使用MS Access(不是MS-SQL或任何其他"真正的"后端); 有关详细信息,请参阅我对此帖的评论.
我想确保只有我可以连接到我初始化的emacs服务器.我经常使用其他人可以通过SSH连接的机器,我不知道阻止它们打开emacsclient和运行的是M-x kill-emacs什么会让我感到困惑.
我查看了文档emacsserver,emacsclient但找不到我要找的内容.
有没有办法做到这一点?
我真的不想在这里重新发明,所以我要求在多用户数据库应用程序中实现简单(行)锁机制的想法.
假设我有一个表Products,当然它有一个ID(PK),还有一个rowversion列(到目前为止还没有使用),我想只允许一个用户编辑一个特定的行.
当此用户正在编辑记录时(在"签入"之后),其他用户只能查看此记录(只读),但不能修改或删除它.当用户完成并保存记录("结账")时,该记录将再次可供其他用户编辑/删除.
我有一些想法(例如添加"状态"列,或者可能创建一个"锁定"表),但是如果"锁定用户"长时间保持记录(也就是说他去了周末,他的电脑在编辑模式下打开).如果程序在客户端机器上崩溃/系统断电,如何解锁记录......
我想知道是否有一个好的和相对简单的模式(可能包括SQL-Server功能)?
顺便说一句,我的客户端应用程序是Delphi/ADO(不是它非常相关).
背景:
拆分访问数据库,最多两个用户.后端位于映射驱动器上的两台计算机之一,前端是本地的.计算机通过wifi连接到路由器.(我试图让他们通过电缆连接电脑失败)
编辑:此问题现在发生在单个用户环境中.
问题:
这只发生在一个特定的形式上.它的基础表有一个多值字段.
问题1:我们的情况是编辑一个字段,但只要焦点移动到另一个字段,编辑就会恢复为原始值.
问题2:编辑一个字段时,其他一些字段将获取先前显示的记录的值.
注意:从一个记录到另一个记录的导航操作如下:
Me.RecordsetClone.FindFirst "ID = " & cmbLocateRecipientID
Me.Bookmark = Me.RecordsetClone.Bookmark
Run Code Online (Sandbox Code Playgroud)
问题只发生在偶然.
这在Access方面是一种非常奇怪的行为,因此当用户首次报告问题时,我确信他们错误地将信息输入到另一条记录中.但是,他们已经向我展示了现场发生的问题.
关闭并重新打开表单可以解决问题.但是,它们显然不能以这种方式工作.
我无法在我的开发机器上重现这个问题.
我正在使用以下标准构建应用程序:
注意:'工作项'只能使用一次.这不是一个维基页面,它更像是一个匹配练习,只能由一个用户执行一次.一旦"工作项目"工作,它就会从系统中消失(除了一些审计/报告),有点像错误跟踪系统
您认为哪个选项更好?你能举出任何支持你观点的主流应用吗?
选项1:
选项2:
我个人喜欢选项2.请问?
multi-user ×10
c# ×2
database ×2
ms-access ×2
android ×1
concurrency ×1
editing ×1
emacs ×1
emacsclient ×1
firebird ×1
flask ×1
locking ×1
port ×1
security ×1
sql-server ×1
sqlite ×1
testing ×1
uninstall ×1