【发布时间】:2014-06-27 21:04:47
【问题描述】:
我正在尝试从 SQL Server 导出查询中的 csv 文件。
我收到错误 Object reference not set to an instance of an object on the line
foreach (DataColumn dc in dt.Columns)
{
}
这是我为此运行的代码。
private DataTable GetData()
{
SqlConnection sqlCon = new SqlConnection("...");
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = "SELECT top 10 * from products.products";
sqlCmd.Connection = sqlCon;
sqlCon.Open();
sqlCmd.ExecuteScalar();
sqlCon.Close();
return dt;
}
protected void Button3_Click(object sender, EventArgs e)
{
DataTable dt = GetData();
string attachment = "attachment; filename=DataTable.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.ms-excel";
string tab = "";
foreach (DataColumn dc in dt.Columns)
{
Response.Write(tab + dc.ColumnName);
tab = "\t";
}
Response.Write("\n");
foreach (DataRow dr in dt.Rows)
{
tab = "";
for (int i = 0; i < dt.Columns.Count; i++)
{
Response.Write(tab + dr[i].ToString());
tab = "\t";
}
Response.Write("\n");
}
Response.End();
}
我不知道该怎么办。
【问题讨论】:
-
dt.Columns 中有什么?你调试了吗?
-
它编译没有错误? DataTable GetData() 没有 dt 声明。 ExecuteScalar 返回一个...标量而不是表;)
-
是的,编译时没有错误
标签: c# asp.net sql-server csv ado.net