在JAVA连接的数据库中插入数据时如何避免重复信息~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JAVA连接的数据库中插入数据时如何避免重复信息~相关的知识,希望对你有一定的参考价值。

求完整代码~ 那查询 插入 什么的 怎么用函数将它们串在一起

参考技术A 很简单,在插入数据库之前,先查询一下信息在数据库中是否存在。
如数据表(User)字段有:
id
name
age
即将插入一条信息【1,“名字”,22】
在插入数据之前,先
select
count(*)
from
User
where
id=1
and
name='名字'
and
age=22
假若查询出来不为0,那么数据就重复了。
根据这条线,很容易写出完整代码了。
参考技术B 给你要避免重复的字段建立唯一性约束,到时候java里捕获异常就可以了

如何在SQL Server中使用用户定义的表类型插入数据时避免重复记录

我试图使用我的.net应用程序在数据库中插入整个模型。我使用的是用户定义的表类型。

这是我的程序和用户定义的表;我正在使用SQL Server 2012。

CREATE TYPE [dbo].[TmpAccessRequest] AS TABLE
(
    [RequestId] [int] NULL,
    [RequesterID] [int] NULL,
    [RequestType] [int] NULL,
    [NextApprover] [int] NULL,
    [RequestStatus] [varchar](100) NULL,
    [Delegation] [int] NULL,
    [CreatedOn] [date] NULL,
    [CreatedBy] [varchar](100) NULL,
    [Description] [varchar](max) NULL,
    [IsSepecialRequest] [bit] NULL,
    [DelegationDetailID] [int] NULL,
    [IsActive] [bit] NULL,
    [IsDeleted] [bit] NULL,
    [ModifiedOn] [date] NULL
)
GO

CREATE PROCEDURE [dbo].[proc_SaveAccessRequest] 
   (@TmpAR TmpAccessRequest READONLY,
    @IsUAMSRequest BIT,
    @RequestID INT OUTPUT) 
AS  
BEGIN
    INSERT INTO tblRequests (RequesterID, RequestType, NextApprover, RequestStatus,
                             Delegation, CreatedOn, CreatedBy, Description,
                             IsSepecialRequest, DelegationDetailID, IsActive, IsDeleted, ModifiedOn)
        SELECT
            RequesterID, RequestType, NextApprover, RequestStatus,
            Delegation, CreatedOn, CreatedBy, Description,
            IsSepecialRequest, DelegationDetailID, IsActive, IsDeleted, ModifiedOn
        FROM
            @TmpAR  

    SET @RequestID = SCOPE_IDENTITY()

    --SET @RequestID=IDENT_CURRENT('tblRequests') 
    SELECT @RequestID
END

我想检查重复数据是否不应同时插入。那么我该如何使用用户定义的表类型呢?

答案

请查找对脚本所做的更改,以避免插入重复记录。所以我认为两列数据应该是唯一的,以避免重复用于用户理解目的

 CREATE PROCEDURE [dbo].[proc_SaveAccessRequest] 
(
  @TmpAR TmpAccessRequest READONLY,
  @IsUAMSRequest bit,
  @RequestID int OUTPUT
) 
AS  
BEGIN

     Insert into tblRequests
    (
       RequesterID
      ,RequestType
      ,NextApprover
      ,RequestStatus
      ,Delegation
      ,CreatedOn
      ,CreatedBy
      ,[Description]
      ,IsSepecialRequest
      ,DelegationDetailID
      ,IsActive
      ,IsDeleted
      ,ModifiedOn
    )
    SELECT
       RequesterID
      ,RequestType
      ,NextApprover
      ,RequestStatus
      ,Delegation
      ,CreatedOn
      ,CreatedBy
      ,Description
      ,IsSepecialRequest
      ,DelegationDetailID
      ,IsActive
      ,IsDeleted
      ,ModifiedOn
     FROM @TmpAR  
     WHERE NOT EXISTS ( SELECT 1 
                        FROM tblRequests i
                        INNER JOIN @TmpAR o  
                            ON i.RequesterID = o.RequesterID
                         AND i.RequestType = o.RequestType 
                         AND i.NextApprover = o.NextApprover)

     SELECT @RequestID = SCOPE_IDENTITY()

     SELECT @RequestID
END

以上是关于在JAVA连接的数据库中插入数据时如何避免重复信息~的主要内容,如果未能解决你的问题,请参考以下文章

java怎么避免向数据库重复插入数据,多台服务器下

php 如何避免刷新页面重复插入数据到数据库

如何避免在核心数据中使用唯一键重复插入?

向数据库插入的数据不重复,如何用Java做验证

如何避免插入重复记录?

使用asp.net插入数据时如何避免数据库中的不同记录?