-3

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

4

4 回答 4

1

您需要学习 OledbConnection,包括数据适配器、命令和 SQL 搜索字符串。

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

}
于 2012-11-09T15:52:40.793 回答
0

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

于 2012-11-09T15:44:42.390 回答
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
 }
于 2012-11-09T15:48:47.127 回答
0

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

于 2012-11-09T15:57:13.113 回答