C# 如何插入数据库读取txt文件中的四个值?

C# 如何插入数据库读取txt文件中的四个值?,c#,model-view-controller,C#,Model View Controller,我正在使用c#MVC项目。 我有一个customer类和customer表。我有一个Insert函数,它有四个参数name,name,phone,address。我想逐行读取.txt文件并用“,”拆分,然后使用这个Insert函数,但我不知道如何创建算法 static void AddCustomer(string Name, string Surname, string Phone, string Address) { using (var session = NHi

我正在使用c#MVC项目。 我有一个customer类和customer表。我有一个Insert函数,它有四个参数
name
name
phone
address
。我想逐行读取.txt文件并用“,”拆分,然后使用这个Insert函数,但我不知道如何创建算法

 static void AddCustomer(string Name, string Surname, string Phone, string Address)
    {
        using (var session = NHibernateHelper.OpenSession())
        {
            using (var transaction = session.BeginTransaction())
            {
                var customer = new Customer
                {
                    Name = Name,
                    Surname = Surname,
                    Phone = Phone,
                    Address = Address,
                };
                session.Save(customer);
                transaction.Commit();
            }
        }
    }



            while ((line = file.ReadLine()) != null)
            {
                string text = file.ReadToEnd();
                string[] lines = text.Split(',');
                for (int i = 0; i < lines.Length; i++)
                {
                    //HOW CAN I USER ADDCUSTOMER()
                }  

                counter++;
            }
static void AddCustomer(字符串名称、字符串姓氏、字符串电话、字符串地址)
{
使用(var session=NHibernateHelper.OpenSession())
{
使用(var transaction=session.BeginTransaction())
{
var客户=新客户
{
Name=Name,
姓,
电话,
地址,
};
session.Save(客户);
Commit();
}
}
}
而((line=file.ReadLine())!=null)
{
string text=file.ReadToEnd();
string[]行=text.Split(',');
对于(int i=0;i
这将完成您的工作

        string fileContent = System.IO.File.ReadAllText("YOUR_FILE_PATH");

        //assumeing each customer record will be on separate line
        string[] lines = fileContent.Split(new string [] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);

        foreach (string line in lines)
        {
            //assuming a single line content will be like this "name,surname,phone,address"
            string[] items = line.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

            Customer cust = new Customer();
            cust.Name = items[0];
            cust.Surname = items[1];
            cust.Phone = items[2];
            cust.Address = items[3];

            //now use this 'cust' object
        }

你几乎成功了。假设
file
StreamReader
,您可以用逗号拆分当前行,并将单独的部分传递给
AddCustomer
方法:

while ((line = file.ReadLine()) != null)
{
    // Split the line on comma
    var lineParts = line.Split(',');

    string name = lineParts[0];
    string surname = lineParts[1];
    string phone = lineParts[2];
    string address = lineParts[3];

    AddCustomer(name, surname, phone, address);
}
请注意,这根本不进行错误检查(
lineParts[1]
如果给定行中没有逗号,则会爆炸),并且这是解析CSV的一种不好的方法(如果数据包含逗号,地址通常会这样做,它将无法正常工作)。使用CSV解析库

请参阅和其他许多关于CSV的问题,建议您使用。映射到CSV文件和从CSV文件映射的类将如下所示:

[DelimitedRecord(",")]
[IgnoreEmptyLines()]
public class MyProduct
{
    [FieldOrder(0)]
    public string Name { get; set; }

    [FieldOrder(1)]
    public string Surname { get; set; }

    [FieldOrder(2)]
    public string Phone { get; set; }

    [FieldOrder(3)]
    public string Address { get; set; }
}
以及读取文件的代码:

var engine = new FileHelperEngine<CustomerCsvRecord>();
CustomerCsvRecord[] customers = engine.ReadFile(fileName);

foreach (var customer in customers)
{
    AddCustomer(customer.Name, customer.Surname, customer.Phone, customer.Address);
}
var engine=new FileHelperEngine();
CustomerCsvRecord[]customers=engine.ReadFile(文件名);
foreach(客户中的var客户)
{
AddCustomer(customer.Name、customer.姓氏、customer.Phone、customer.Address);
}

+1:我一直很喜欢读你的答案。但有一件事,你不能做这样的事吗<代码>变量引擎=新文件HelperEngine();var customers=engine.ReadFile(文件名)。没问题。:)实际上,
var
很好。这是我认为不必要的演员阵容。@JohnH谢谢,这些评论使它值得努力。。)我已将代码更改为使用通用的
FileHelperEngine
,这确实使代码更具可读性。