从不同的客户端同时插入不同的数据
本文关键字:数据 插入 客户端 | 更新日期: 2023-09-27 18:37:19
我用 C# 创建了一个 Windows 窗体应用程序和一个数据库MS SQL server 2008 Express
,我使用LINQ-to-SQL
查询来插入和编辑数据。
数据库位于具有Windows Server 2008 R2 (standard edition)
的服务器上。现在,我在五台不同的计算机上运行该应用程序,并且用户通过活动目录进行身份验证。
向我报告的一个投诉是,有时当输入和提交不同的数据时,包含该应用程序的列表中不会出现相同的数据。我使用 try catch 块发送错误,但应用程序中没有出现错误;但数据只是消失了。
表记录的 id 是整数自动递增。由于我必须告诉他们输入的注册号,我使用以下代码段:
try{
ConectionDataContext db = new ConectionDataContext();
Table_Registers tr = new Table_Registers();
tr.Name=textbox1.text;
tr.sector=textbox2.text;
db.Table_Registers.InsertOnSubmit(tr);
db.SubmitChanges();
int numberRegister=tr.NumberRegister;
MessageBox.Show(tr.ToString());
}
catch{Exception e}
我想知道我是否做错了什么,或者您是否知道网络上的任何文章谈到如何在 MSSQL Server 数据库中插入来自不同客户端的数据,请告诉我。
谢谢。
这就是数据库服务器的作用:"同时插入来自不同客户端的数据"。
您可以做的一件事是考虑"交易":
- http://www.sqlteam.com/article/introduction-to-transactions
您可以(并且应该!)做的另一件事是通过使用"存储过程"来确保在服务器上完成尽可能多的工作:
- http://www.sql-server-performance.com/2003/stored-procedures-basics/
还应检查 SQL Server 错误日志,尤其是潜在的死锁。 可以在 SSMS GUI 或 SQL Server 安装下的"日志"目录中看到这些内容。
但你需要做的第一件事是确定到底发生了什么。 由于您只有MSSQL Express(这对于生产用途来说不是一个好的选择!),也许最简单的方法是创建一个"日志"表:每次在实际表中插入一行时,在"日志"中插入一个条目,并查看内容是否"丢失"(即日志表中的条目比数据表中的条目多)。