我有imports.aspx
和ASP:FileUpload
函数。ASP C#|使用DataSets和DataTableAdapters导入CSV
在我的代码隐藏我有这样的:
SEPTA_DSTableAdapters.ServiceTBLTableAdapter sta = new SEPTA_DSTableAdapters.ServiceTBLTableAdapter();
SEPTA_DSTableAdapters.RoutesTBLTableAdapter rta = new SEPTA_DSTableAdapters.RoutesTBLTableAdapter();
protected void Page_Load(object sender, EventArgs e)
{
ServiceDDL.DataBind();
}
protected void Submit_Click(object sender, ImageClickEventArgs e)
{
if (ImportRoutes.HasFile)
{
//Parse CSV
StreamReader reader = new StreamReader(ImportRoutes.FileContent);
var pathOfCsvFile = reader;
var adapter = new GenericParsing.GenericParserAdapter(pathOfCsvFile);
DataTable data = adapter.GetDataTable();
foreach (DataRow row in data.Rows)
{
int insertData = Convert.ToInt32(rta.InsertRoutes(Convert.ToInt32(row["RouteID"]), ServiceDDL.SelectedValue, row["ShortName"].ToString(), row["LongName"].ToString(), row["Type"].ToString(), row["Url"].ToString()));
}
}
}
这里是我的导入代码示例:
route_id,route_short_name,route_long_name,route_desc,agency_id,route_type,route_color,route_text_color,route_url
AIR,AIR,Airport Line, ,SEPTA,2,44697D,FFFFFF,
CHE,CHE,Chestnut Hill East, ,SEPTA,2,44697D,FFFFFF,
CHW,CHW,Chestnut Hill West, ,SEPTA,2,44697D,FFFFFF,
CYN,CYN,Cynwyd, ,SEPTA,2,44697D,FFFFFF,
我的数据库列:
RouteID
Category
ShortName
LongName
Type
Url
这是我的插入查询:
INSERT INTO [dbo].[RoutesTBL] ([RouteID], [Category], [ShortName], [LongName], [Type], [Url]) VALUES (@RouteID, @Category, @ShortName, @LongName, @Type, @Url)
这里是堆栈跟踪
[ArgumentException: Column 'RouteID' does not belong to table .]
System.Data.DataRow.GetDataColumn(String columnName) +1775301
System.Data.DataRow.get_Item(String columnName) +13
Import.Submit_Click(Object sender, ImageClickEventArgs e) in c:\Documents and Settings\abpa\Desktop\ASP\SEPTAWeb\Import.aspx.cs:32
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +108
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +118
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
现在,我有两个问题。
我得到一个错误
row does not exist
在int insertData
部分,我该怎么解决呢?该文件的第一行显然是CSV的列名,但插入时我需要跳过这一行。
预先感谢所有。
是否可以从SEPTA_DSTableAdapters发布任何相关的代码和GenericParserAdapter? – 2010-08-26 16:14:35
@Abe Miessler我发布了在datatableadapter中使用的查询,并且GenericParserAdapter是一个引用.dll,用于将CSV分割成单独的列。 – balexander 2010-08-26 16:18:27
您是将参数添加到命令还是严格的文本查询? (即“INSERT INTO ...”) – XstreamINsanity 2010-08-26 16:25:02