C# 使用Asp.net C中的文件上载将特定字段从.csv导入SQL Server L#
有20列的csv文件,我使用FileUpload控件上传了它,现在我只想在数据库中添加这20列中的一列数据,我如何实现这一点。。 我的代码是-C# 使用Asp.net C中的文件上载将特定字段从.csv导入SQL Server L#,c#,asp.net,.net,c#-4.0,csv,C#,Asp.net,.net,C# 4.0,Csv,有20列的csv文件,我使用FileUpload控件上传了它,现在我只想在数据库中添加这20列中的一列数据,我如何实现这一点。。 我的代码是- DataTable tblReadCSV = new DataTable(); tblReadCSV.Columns.Add("EmailId"); string path = System.IO.Path.GetFileName(fupEmails.PostedFile.FileName); fupEmails.Post
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值行中的正确值插入该行,然后将该行添加到数据表
。大致如下
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
}
这将读取第一行,然后启动循环将从第二行开始读取,这样您就不会在列中添加标题我认为在internet上发布(在连接字符串中)您的用户名和密码是不明智的。即使是这样。我已经“x”了。非常感谢您的建议,但它与我以前的代码相同,它还添加了第一行,即csv文件中列的标题,我不需要第一行。您以前的代码无法编译。你也可以在进入循环之前通过阅读一次跳过第一行。。。