MySql查询合并表并填充dataGridView

时间:2014-09-11 16:57:46

标签: c# mysql sql forms datagridview

我正在创建一个链接到在线MySql数据库的小型c#应用程序,以进一步了解这两件事。

在我的数据库中,我有2个表“user”和“dvd”,它们的构建如下:

  • 用户:ID,GEBRUIKERSNAAM,PASWOORD
  • dvd:ID,TITLE,DUUR,USERID,...

我现在要做的是从每个表中取一个列并在dataGridView中显示它们。 我想要的colum是来自table dvd:TITEL和表用户:GEBRUIKERSNAAM。

DVD使用表用户的ID和表dvd中的外键USERID链接到用户(一个用户多个DVD)。

因此,我希望在我的dataGridView中显示2个用于dvd标题的列和用于DVD的所有者的第一个用于第一个(女巫是GEBRUIKRSNAAM列)。

为此,我编写了以下代码:

SELECT  'TITEL', dvd.TITEL
FROM xxx.dvd
UNION ALL 
SELECT  'GEBRUIKERSNAAM', user.GEBRUIKERSNAAM
FROM xxx.user
INNER JOIN xxx.dvd ON user.ID = dvd.USERID
WHERE user.ID = xxx.dvd.USERID;

然而,这给了我两个问题:

  • 如果我直接在我的数据库上使用它(使用来自的SQL选项卡) phpMyAdmin)它可以工作,但将2个colums合并为一个我不想要的。我认为这里的问题是“全联盟”,但我不知道怎么做。

  • 如果我尝试使用我的c#应用程序使用此代码,我会收到以下错误:“功能SelectCommand.Connection未初始化”。我知道问题是在这个查询中有一些问题,因为如果我尝试使用不同的查询,我的代码就像它应该的那样工作。 (它填充dataGridView)。

         try
    {
    
        MySqlCommand SelectCommand = new MySqlCommand("SELECT TITEL FROM xxx.dvd UNION ALL SELECT  GEBRUIKERSNAAM FROM xxx.user INNER JOIN xxx.dvd ON user.ID = dvd.USERID WHERE user.ID = xxx.dvd.USERID;");
        myConn.Open();
        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = SelectCommand;
        DataTable dbdataset = new DataTable();
        sda.Fill(dbdataset);
        BindingSource bSource = new BindingSource();
    
        bSource.DataSource = dbdataset;
        dataGridView1.DataSource = bSource;
        sda.Update(dbdataset);
    
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    myConn.Close();
    

欢迎任何有关此问题的帮助,提示或正确的做法(最佳做法) 感谢

2 个答案:

答案 0 :(得分:0)

我并不完全清楚你的目标是什么,但也许其中一部分可以帮助你:

SELECT U.GEBRUIKERSNAAM, D.TITLE 
FROM dvd D JOIN user U ON D.USERID = U.ID 
WHERE D.ID = 1

这将采用dvd表,并为每个条目查找ID与D.USERID匹配的用户。从该合并行中,它将选择U.GEBRUIKERSNAAM和D.TITLE,但仅限于dvd ID为1的结果。

如果还有其他问题,请发表评论。我希望我能正确理解你的目标。如果你给我一个你想要的输出应该是什么样子的例子可能会更容易。让我写下查询。

答案 1 :(得分:0)

如果我正确理解您的问题,那么您需要显示2列,您可以在其中显示用户已经雇用DVD的那些,您应该使用该查询:

选择d.TITLE,u.GEBRUIKERSNAAM 来自dvd d 内部联接用户u ON u.ID = d.USERID