c# - 使用C#比较本地数据库的两个表

标签 c# .net sql database compare

我是 C# 的新手。

我在 VS2010 中创建了一个本地数据库(.sdf 文件)。我正在尝试在数据库列之间创建一些比较。我使用下面的连接字符串成功连接到数据库:

 string connectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;data source=c:\\users\\user\\documents\\visual studio 2010\\Projects\\myapp\\myapp\\mydb.sdf";

我的数据库有两个表。昵称和名字。 Nicknames 有一个名为“Alias”的字段,它简单地列出了存储的昵称。 名称有一个名为“文本”的字段,它仅列出存储的名称。

例如:

别名

Masher
Jones
Jaime
John
Joker

名字

John
Adam
Matt
Jones

假设这些是我数据库中的值。我想要的是找到不在名称表中的昵称,在我的示例中是 -> Masher、Jaime 和 Joker。

我该怎么做?我正在使用 C# 和 VS2010。

这是我在 SQL 代码方面的尝试:

 "SELECT Alias FROM nicknames WHERE (NOT (Alias IN(SELECT Text FROM Names))) ";
         "SELECT Alias FROM nicknames EXCEPT SELECT Text FROM Names";
         "SELECT Alias FROM nicknames t LEFT JOIN Names m ON m.Text = t.Alias WHERE m.Text IS NULL";
         "SELECT Alias FROM nicknames UNION SELECT Text FROM Names";

我该怎么办?

编辑

 OleDbConnection conn = new OleDbConnection(connectionString);
        conn.Open();
 string sql = "MYQUERYFROMTHEABOVEEXAMPLE";
 OleDbCommand cmd = new OleDbCommand(sql, conn);
             OleDbDataReader reader;
             reader = cmd.ExecuteReader();
             string result = "";
             while (reader.Read())
            {
            result += reader.GetString(0) + "\n";
  }  

这是我用来读取结果的。

最佳答案

尝试:

SELECT Alias FROM nicknames WHERE Alias not in (SELECT Text FROM Names)

编辑:试试这个:

select a.Alias
from nicknames a left outer join Names n on a.alias = n.text 
where n.text IS NULL

我尝试@你的代码(忽略我使用 SQL 语法的事实,因为那是我使用的语法):

enter image description here

关于c# - 使用C#比较本地数据库的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971688/

相关文章:

c# - XNA 倍数立方体

c# - 在非托管回调委托(delegate)中抛出异常的含义

c# - 如何删除DataTable中的多行?

mysql - 有人可以告诉我这段sql代码做错了什么吗

mysql - 更新大表中的查询

c# - 如何从内容页检索母版页中的控件

c# 你的 SQL 语法有错误

c# - 强制安装程序在 VS 2008 中需要 .NET 4.0

.net 多线程

mysql - 标量子查询需要花费大量时间来执行