![](/img/trans.png)
[英]Import Data from .csv to SQL Server using File Upload in Asp.net C#
[英]Import Specific fields from .csv to SQL Serverl using File Upload in Asp.net C#
具有20列的csv文件,我已经使用FileUpload Control上传了该文件,现在我想从这20列中仅在数据库中添加一列数据,我该如何实现..我的代码是-
DataTable tblReadCSV = new DataTable();
tblReadCSV.Columns.Add("EmailId");
string path = System.IO.Path.GetFileName(fupEmails.PostedFile.FileName);
fupEmails.PostedFile.SaveAs(Server.MapPath("~/Contacts/" + path));
path = Server.MapPath("~/Contacts/" + path);
TextFieldParser csvParser = new TextFieldParser(path);
csvParser.Delimiters = new string[] { "," };
csvParser.TrimWhiteSpace = true;
//csvParser.ReadLine();
while (!csvParser.EndOfData)
{
string[] fields = csvParser.ReadFields();
tblReadCSV.Rows.Add(fields.);
}
string connection = @"Data Source=ANURAG-PC; Initial Catalog=MailServer; Persist Security Info=True; User ID=xx; Password=xxxxxx";
string strSql = "Insert into EmailData(EmailId) Values(@Email)";
SqlConnection con=new SqlConnection(connection);
SqlCommand cmd=new SqlCommand();
cmd.CommandType=CommandType.Text;
cmd.CommandText=strSql;
cmd.Connection=con;
cmd.Parameters.Add("@Email",SqlDbType.NVarChar,250,"EmailId");
SqlDataAdapter daAdapter=new SqlDataAdapter();
daAdapter.InsertCommand=cmd;
int result=daAdapter.Update(tblReadCSV);
lblError.Text="Send Successfully";
问题出在这三行中
while (!csvParser.EndOfData)
{
string[] fields = csvParser.ReadFields();
tblReadCSV.Rows.Add(fields.Equals("Email");
}
这里的字段包含所有列标题,所以我只希望从整体发送一个字段,我该如何实现呢,上面的行对此不起作用。
您需要创建一个与数据表的架构匹配的DataRow
,然后将已解析的CSV值行中的正确值插入该行,然后将该行添加到DataTable
。 大致如下所示
while (!csvParser.EndOfData)
{
var fields = csvParser.ReadFields();
var row = tblReadCSV.NewRow();
row["EmailId"] = fields[ordinalPositionOfEmailField];
tblReadCSV.Rows.Add(row)
}
将以下行放在while循环之前
var FirstRowfields = csvParser.ReadFields();
while(!csvParser.EndOfData)
{
//your code
}
这将读取第一行,然后开始循环,将从第二行开始读取,因此您不会向列标题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.