我在Visual Studio 2008中使用Visual Studio 2008 C#创建了一个应用程序项目。
数据库有20个表,每个表都有很多字段。
我已根据用户的预定义需求创建了一个添加删除编辑和检索数据的界面。
现在我必须
制作软件,我可以提供给我的教授。也就是说,他只需双击图标即可启动软件。无需Visual Studio 2008即可开始调试。
数据库将位于一台功能强大的计算机上(双核最新Windows XP),用户将从另一台使用LAN连接的计算机访问它。每当服务器发生变化时,我都可以使用Visual Studio 2008 /调试器将连接字符串更改为共享数据库,但是当它是软件时我该怎么做呢?
会有很多客户。我应该给每个人提供相同的软件,所以他们都可以连接到数据库吗?如何维护数据库的完整性和正确性?我的意思是db.mdf文件将位于一个文件夹中,该文件夹将与读写访问共享。因此,一次只有一个用户不必写。那么有什么编码吗?
答案 0 :(得分:2)
1)一种选择是使用Installshield打包和部署您的应用程序。
2)让您的应用程序从应用程序配置中提取连接字符串。我已经看到(并且已经完成)这个有一般配置设置的XML文件(比如数据库连接字符串),它位于文件系统上并且与可执行文件位于同一目录中,并且在您的可执行文件启动时被读取。
3)通常,SQL Server将处理大多数并发数据读/写并保持数据的完整性(只要您正确地构建了表)。
由于您要将此应用程序部署到多台计算机上,听起来您只需在X计算机上安装应用程序客户端,他们就可以访问数据库计算机上的SQL Server数据库。如果执行此方法,则不需要共享db.mdf文件,因为只需要SQL Server可以访问该文件,应用程序将访问该文件。
我希望有所帮助。
答案 1 :(得分:2)
维护数据完整性的最佳方法是将其设计到数据库中:
您需要正式设计的主键。
您需要正式定义主键/外键关系(并索引这些外键;它们不会自动编入索引)。
如果您使用代理键,则需要对自然键的唯一约束。
您需要不能为null的字段的默认值,而且它们是否允许空值或不需要在表定义中。
您需要数据类型的正确数据类型(例如,不要将日期存储为varchar数据类型)。
如果您对某些字段的值有特定限制,那么您需要约束来强制执行数据库或应用程序中的那些。
答案 2 :(得分:1)
如何维护数据库的完整性和正确性?
数据库应使用约束保持自己的内部一致性。
用户应该使用事务中的SQL语句写入数据库,这样所有相关的写入都会以原子方式发生(它们都会成功或者都会失败)。通过维护表,页或行级别的锁,事务还有助于处理更高级别隔离的用户之间的冲突。
<强>更新强>
根据要求,这里有一些假装是C#的代码(我自己也不太习惯):
private Method(SqlConnection connection)
{
using (SqlTransaction transaction = connection.BeginTransaction())
{
try
{
// Use the connection here
....
transaction.Commit();
}
catch
{
transaction.Rollback();
throw;
}
}
}
如果try块中的所有语句都成功完成,它们将一起提交。如果任何语句失败,则将回滚事务,并且不会更改数据库。
严格地说,如果没有提交事务, using 语句将处理Rollback,所以如果你没有进行任何错误处理,你也可以编写相同的代码:
private Method(SqlConnection connection)
{
using (SqlTransaction transaction = connection.BeginTransaction())
{
// Use the connection here
....
transaction.Commit();
}
}
答案 3 :(得分:0)
3)不要使用MS访问,您应该使用真正的SQL Server来处理并发用户访问。 (SQL Server,MySQL,PostgreSQL,Oracle等)您需要使用SQL重写数据库访问层,这样您就不会破坏数据。
甚至不要考虑按原样部署此项目,否则您将面临维护噩梦。您是否有经验丰富的开发人员甚至是您的教授可以寻求帮助?这里有许多工作要做功能性应用。