C# 用C语言比较两个本地数据库表#
我是C#的新手 我在VS2010(.sdf文件)中创建了一个本地数据库。我试图在数据库列之间创建一些比较。我使用下面的connectionstring成功连接到数据库:C# 用C语言比较两个本地数据库表#,c#,.net,sql,database,compare,C#,.net,Sql,Database,Compare,我是C#的新手 我在VS2010(.sdf文件)中创建了一个本地数据库。我试图在数据库列之间创建一些比较。我使用下面的connectionstring成功连接到数据库: string connectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;data source=c:\\users\\user\\documents\\visual studio 2010\\Projects\\myapp\\myapp\\mydb.sdf";
string connectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;data source=c:\\users\\user\\documents\\visual studio 2010\\Projects\\myapp\\myapp\\mydb.sdf";
我的数据库有两个表。昵称和名字。
昵称有一个名为“别名”的字段,该字段仅列出存储的昵称。
Names有一个名为“Text”的字段,它只列出存储的名称
例:
别名
名字
假设这些是我数据库中的值。我想要的是找到那些不在名字表中的昵称,在我的例子中是->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";
我该怎么办
编辑
这就是我用来阅读结果的方法。试试:
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
我在@your代码中的尝试(忽略我使用SQL语法的事实,因为这正是我所使用的):
应该做你想做的事。其他人给了你正确的查询,但是你问的是C,你的意思是你想知道如何从C运行查询吗?事实上,正确的查询对于我来说不起作用。我不明白出了什么问题。值得注意的是,您的“SQL代码”末尾有分号,这对我来说意味着您在后面的代码中使用了分号。我强烈建议粘贴用于检索数据的其余代码,因为我猜这是您的问题。请查看我在文章底部的编辑。你的代码运行得很好。很高兴我能帮你,如果你需要更多的帮助,或者如果你在相关主题上发布了类似的问题,请回复我的答案,我会看一看。祝您编程顺利。然后您需要提供更多信息,因为这正是您需要执行的查询。连接字符串在代码方面对我们来说是相当无用的,我们需要看看您是如何从代码中实际运行命令的。代码看起来不错,您刚刚对每个表进行了选择以检查是否应该有结果。可能Nickmanes是空的,或者名称包含昵称中的所有名称。
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
Select [Alias] from [nicknames] where [Alias] not in (select [text] from [names])