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();
答案 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'