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

Luc*_*vin 6 .net c# 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";
Run Code Online (Sandbox Code Playgroud)

我的数据库有两个表.昵称和名字.Nicknames有一个名为"Alias"的字段,它只列出存储的昵称.名称有一个名为"Text"的字段,它只列出存储的名称.

例如:

别号

Masher
Jones
Jaime
John
Joker
Run Code Online (Sandbox Code Playgroud)

名称

John
Adam
Matt
Jones
Run Code Online (Sandbox Code Playgroud)

假设这些是我数据库中的值.我想要的是找到名字中没有的昵称 - 在我的例子中是 - > 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";
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

编辑

 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";
  }  
Run Code Online (Sandbox Code Playgroud)

这是我用来阅读结果的内容.

Kre*_*epN 4

尝试:

SELECT Alias FROM nicknames WHERE Alias not in (SELECT Text FROM Names)
Run Code Online (Sandbox Code Playgroud)

编辑:试试这个:

select a.Alias
from nicknames a left outer join Names n on a.alias = n.text 
where n.text IS NULL
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述