使用ado控件插入数据出现的奇怪的事情。

Henry.6 Henry.6 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
报了这样的错误“违反了 PRIMARY KEY 约束 'PK_xxx'。不能在对象 'dbo.tablename' 中插入重复键。”
为什么说奇怪呢?
1,程序已经运行有三年了,一直都没有报这样错误;
2,在别的客户服务器上运行的程序同样的代码却没出错;
3,我已经把数据从该表移出,用truncate清除数据,再导入原来的数据,没报错。
4,第二天跑程序还是报这个错误,并且不是每次插入都出现。
环境:
sql2005数据库做了镜像热备
表结构是这样,

CREATE TABLE tablename(
guid BIGINT NOT NULL,
content VARCHAR(2000),
CONSTRAINT [PK_xxx] PRIMARY KEY CLUSTERED
(
[GUID] ASC
))ON [PRIMARY]

代码如下:

TRY
SqlString := 'SELECT * FROM tablename WHERE (GUID=' + GUID + ')';
P_ADOQuery_data.Close;
P_ADOQuery_data.SQL.Text := SqlString;
P_ADOQuery_data.Open;
if P_ADOQuery_data.RecordCount<=0 then
begin
P_ADOQuery_data.Append;
P_ADOQuery_data.FieldByName('GUID').Value:=GUID;
P_ADOQuery_data.FieldByName('CONTENT').Value:=CONTENT;

P_ADOQuery_data.Post;
WriteNR(0,GUID+'|'+CONTENT );
end;
Except
On e: Exception Do
Begin
WriteNR(1, '处理 信息失败:' + e.message + '(' + SqlString + ')');

End;
End;

执行中日志这样打印的:
2016-09-25 08:01:06:004:0|5856127|信息内容12345|2016-09-25 00:41:12
2016-09-25 08:01:06:050:0|5856128|信息内容abcde|2016-09-25 00:41:12
2016-09-25 08:01:06:050:1|处理信息失败:违反了 PRIMARY KEY 约束 'PK_xxx'。不能在对象 'dbo.tablename' 中插入重复键。(SELECT * FROM tablename WHERE (GUID=5856128))
...全文

相关推荐

SQLDependency 使用解說 - 1

針對 ADO.NET 中的 SQLDependency 使用解說

nobel12

C#面试题附答案绝对别错过

C#面试题附答案绝对别错过 C#面试题附答案绝对别错过 C#面试题附答案绝对别错过

chenjun1989

ASP.NET 数据库入门经典C#篇pdg

对任何 Web 站点而言,最重要的要求就是能够准确而安全地发送和存储信息。这种信息可以是任何形式,包括信贷公司提供的信用卡资料到市场信息网站的民意投票结果。不管将 ASP.NET Web 页面用于何种目的,您迟早都会需要处理涉及数据库的访问、读取和写入数据以及一般的控制操作。 幸运的是,操纵 Web 应用程序的数据库比以前更容易。 .NET Framework 改进了开发复杂的 Web 站点的方式。 ASP.NET 对如何开发复杂和交互的 Web 站点作了重大的改进, ADO.NET 提供了强大而灵活的数据访问功能,从根本上改变了从 Web 应用程序中检索、处理和存储数据的方式。 本书将介绍如何创建能够支持数据的 ASP.NET 应用程序。本书根据一些实践经验进行编写,并列举了演示基础原理的代码示例。本书要求读者对 ASP.NET 和 C# 有一些基本的认识,如果对操纵数据库没有任何经验也没有关系,作者将指导每个过程,包括将 ASP.NET 页面与数据库连接,研究各种读取、处理和更新数据的方法。接下来研究所有涉及侧重于数据的 ASP.NET 编程的问题,包括一些高级的主题,例如使用存储过程和组件。本书还给出了案例分析,将前面几章讨论的内容都置于同一个环境中加以运用。 0.1 本书主要内容 第 1 章介绍创建数据驱动的 Web 站点的一般性概念。特别讨论了 Web 站点与数据之间的关系,在此过程中介绍了 ADO.NET 。在这一章的末尾,还为本书其余章节创建了一个开发环境,讨论了一些可能会遇到的问题。 到底什么是数据库呢?这似乎是个奇怪的问题。第 2 章介绍了不同类型的数据库,如何设计它们,以及如何使用它们存储和检索信息。接下来又概述了 SQL 语言,并与 Microsoft 的数据库方案作了一个简单的比较。 了解了数据库以后,就需要学习如何将它们与 ASP.NET 代码连接。第 3 章首先概述了第 1 章提到的 ADO.NET ,阐明了需要掌握的重要术语。接着是创建和测试对 Northwind 示例数据库的连接,本书将通篇使用该数据库。本章演示了大量例子,演示如何连接不同的数据源,例如 Access , SQL Server , Excel 和 XML ,以便在任何开发环境中都游刃有余。 第 4 章通过一些例子,运用 DataReader 对象读取和显示数据。首先讨论了在 ASP.NET 和 ADO.NET 中处理数据的原理,在 ADO.NET 中引入了 Command 对象。然后介绍如何运用 DataReader 获取数据,接着将那些数据绑定到像单选按钮、复选框这样的不同控件上和最重要的 DataGrid 上。 第 5 章讨论了一个重要的 ADO.NET 对象: DataSet ,它用于存储和检索服务器上任何复杂形式的数据。在介绍完原理之后,使用大量的例子来演示使用 DataSet 的不同方法。 当然,我们并不总是读取其他人的数据,因此第 6 章介绍了如何在现有的数据库中创建自己的记录。该章的主题包括 ASP.NET 的验证控件,以及使用 Command 对象和 DataSet 对象实现插入记录。

wyf19790923

數據庫程式:尚未完成的<>

一個尚未完成的數據庫萬能查詢工具,由於遇到奇怪的錯誤現象(當出現一次未有返回結果的操作就不能再查詢)請大家共同研究......

chenxh

Delphi Access violations

Delphi Access violations 问题的解决之道 -

hangzhou_hammer
评论 2
收藏 已收藏
分享
返回顶部