sql server查询没有在C#中给出输出

时间:2013-08-15 14:06:53

标签: c# sql sql-server

string query = @"select p.package_id, pd.download_id
                     from Tools.ftp.package p
                     join Tools.ftp.package_download pd 
                     on p.package_id = pd.package_id
                     where p.package_name = 'foo'";

尝试使用SqlConnection类从C#中的sql server中提取数据,我得到的输出没有where语句但是留下了一个空白文件,也有奇怪的行为和更复杂的连接。这是为什么。在C#中编写查询时,有什么需要注意的行为,即格式化问题和诸如此类的东西。

这就是整个事情。

StreamWriter fileout = new StreamWriter(@"C:\test\output9.csv");

    string myConnectionString = @"Data Source=foobar;Initial Catalog=DB;User id=user;Password=pw";
    SqlConnection Conn = new SqlConnection(myConnectionString);


    string query = @"select p.package_id, pd.download_id
                 from Tools.ftp.package p
                 join Tools.ftp.package_download pd 
                 on p.package_id = pd.package_id
                 where p.package_name = 'foo'";

    SqlCommand cmd = new SqlCommand(query, Conn);
    cmd.Connection = Conn;
    Conn.Open();

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();

    da.Fill(dt);
    Conn.Close();
    da.Dispose();


    foreach (DataRow dataRow in dt.Rows)
    {
        foreach (var item in dataRow.ItemArray)
        {
            fileout.Write(item+ ",");
        }
        fileout.Write("\n");
    }
    fileout.Close();

1 个答案:

答案 0 :(得分:2)

  

我可以取出join子句并保留where子句,它给出了输出

这意味着Tools.ftp.package_download中没有匹配的记录尝试左连接:

select p.package_id, pd.download_id
     from Tools.ftp.package p
     LEFT join Tools.ftp.package_download pd 
     on p.package_id = pd.package_id
     where p.package_name = 'foo'