2012-11-09 44 views
-3

我在c#中工作,并使用sql命令来获取,添加,更改Access数据库中的数据。我想要做的是检查数据库中的表格中的特定数据或记录。我需要命令返回一个值(真/假,0/1),这将指示数据是否存在。我的总体目标是能够运行此检查,如果数据存在,则不执行任何操作。如果数据不存在,则创建它。有谁知道如何做到这一点。我认为有一种方法可以用sql来做到这一点,但我可能是错的。就是这样。我希望我正确地提出了我的问题和问题。在C#中,如何使用SQL来检查数据库中的现有数据?

+1

除非我误解了你,只是做一个'SELECT COUNT(*)FROM ....',如果没有任何返回你知道数据不存在于第一位?另外值得注意的是,如果你的表有一个主键,并且你插入一个重复的主键,它将会出错。 – Arran

+0

我没有想到COUNT()的想法。我会试一试。 – woods

回答

0

我会采取的方法是获得匹配数据的所有行。

SELECT * 
FROM yourTable 
WHERE 
     yourTable.field1=value1 
     AND 
     yourTable.field2=value2 

从这一点,你可以简单地说,如果有任何记录,不要添加新的记录。

//we will assume the dt is a DataTable containing the data retrieved from the query 
if(dt.rows.count==0) 
{ 
     //add the record 
} 

如果您喜欢在SQL中使用COUNT你可以选择记录

SELECT COUNT(*) 
FROM yourTable 
WHERE 
yourTable.field1=value1 
AND 
yourTable.field2=value2 

而且使用的ExecuteScalar人数(选择第一行的第一列返回)

//cmd is a command object that is set up to query your database 
try 
{ 
     int count=Convert.ToInt32(cmd.ExecuteScalar()) 

     if(count==0) 
     { 
      //add the record 
     } 
} 
catch(Exception ex) 
{ 
    //do something with the error 
} 
+0

说到将数据导入DataTable,请参阅Derek的答案。 – Cityonhill93

+0

这就是我现在正在尝试的方式。 – woods

+0

我不得不解决这里出现的错误。我正在使用COUNT(),但COUNT()将始终返回1条记录(包含记录数)。我这次做的是用条件选择所有数据并计算行数。 – Cityonhill93

0

您可以运行一个简单的SELECT查询,其中包含一个WHERE子句,该WHERE子句由与每个添加项目对应的唯一值组成,并取决于您可以进行检查。

+0

我在想这种方式。 – woods

+0

如果你这么认为,那么就做吧,一切顺利:) –

1

您需要了解带数据适配器,命令和SQL搜索字符串的OledbConnection。

http://msdn.microsoft.com/en-us/library/aa288452(v=vs.71).aspx

**编辑** 您可以创建这样一个私人的布尔方法: -

Private Bool RecordMatch() 
{ 
// Perform SQL Search On Data Here, using Data Adapter and populating DataTable. 
// If DataTable is null reference return false 
// Else Return True 

} 
+0

我正在使用这些。 – woods

+0

我会知道,你是否提供了代码。 – Derek

0

如果行可以使用foreach语句,在您检查表中的所有行,是等于想要的行,比返回true,否则返回false ...

+0

这可行,但不会很快(大规模的租赁......想象一下,以这种方式观看50000行......嗨!) – Cityonhill93

相关问题