我目前正在研究一种将CSV导入数据库的方法(自定义方法也可以获得更多关于C#的知识)我遇到了以下问题。
我正在尝试将拆分字符串插入数据库,每个值都插入到不同的列中。
我目前有:
ID | ClientName | ShopName |地址| PostCode | ContactNumber
作为我的专栏。 ID是识别和自我增量
我的代码是:
public void FileContents(string Str)
// private System.Collections.Generic.List<Tuple<string,string,string,string,string>> FileContents(string Str)
{
int Counter = 0;
//string QueryString = "INSERT INTO "
string[] split = Str.Split(',');
foreach (string Element in split)
{
Element.Trim(new Char[] { ' ', '\t' });
Console.WriteLine(Element);
Counter++;
}
Console.ReadKey(true);
}
使用foreach循环似乎产生了正确的结果,如:
DummyName夫人
ShopName Place Holder
地址持有人
PostCode占位符
ContactNumber Place Holder
这是预期的。关于如何将每个元素插入正确列的方法使我无法理解。我考虑过使用:
Console.WriteLine(split[0]);
但这不会产生被删除的结果。期待的是:
ClientName占位符
ClientName占位符
但相反产量:
ClientName占位符#1
ClientName占位符#2
ClientName占位符#3
地址占位符 ClientName占位符3
所以它不会遍历每个客户端名称而不跳转到该地址。
那么,获取foreach循环中每个元素然后插入数据库的最佳方法是什么?
答案 0 :(得分:1)
由于字符串不可变,此行不会改变元素...
Element.Trim(new Char[] { ' ', '\t' });
您需要以下内容:
var newElement = Element.Trim(new Char[] { ' ', '\t' });
Console.WriteLine(newElement);
如果没有看到输入,我会假设你有一个文件......
var lines = new List<string>();
lines.AddRange(File.ReadAllLines(@"test.txt"));
foreach(var lineToSplit in lines)
{
string[] split = lineToSplit.Split(',');
foreach (string element in split)
{
var curElement = element.Trim(new Char[] { ' ', '\t' });
Console.WriteLine(curElement);
}
}
你可以创建一个类
public class Clients
{
public string ClientName { get; set; }
public string ShopName { get; set; }
public string Address { get; set; }
public string PostCode { get; set; }
public string ContactNumber { get; set; }
}
然后填充客户列表......
lines.AddRange(File.ReadAllLines(@"test.txt"));
var clients = new List<Clients>();
foreach (var lineToSplit in lines)
{
var split = lineToSplit.Split(',');
clients.Add(new Clients
{
ClientName = split[0]
//etc
});
}