我想在没有文字文件的几个字的情况下插入数据

时间:2015-08-21 13:47:05

标签: c# text-files sql-insert insert-into

我想将某些文本保存到我的数据库中。它应该只是阅读name=joe

,而不是包含文字joe的条目

这是我的文字文件这样的话

name=joe|surname=clark|phone=23132131|address=jdsakldjakldja|date=11.02.2015 14:30:45
name=betty|surname=ugly|phone=32112121|address=dsadaewqeqrsa|date=11.02.2015 14:30:45

这是我的代码

string connStr = @"Data Source=ANLZ\SQLEXPRESS;Initial Catalog=testdb; Trusted_Connection=True;";
string createQuery = "INSERT INTO tbl_test(name,surname,phone,address,date) VALUES(@name,@surname,@phone,@address,@date)";

SqlConnection conn;
SqlCommand cmd;
string[] importfiles = Directory.GetFiles(@"C:\Users\An\Desktop\", "test.txt");

            using (conn)
            {
                using (cmd = new SqlCommand(createQuery, conn))
                {

                    cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50);
                    cmd.Parameters.Add("@surname", SqlDbType.NVarChar, 50);
                    cmd.Parameters.Add("@phone", SqlDbType.NVarChar, 50);
                    cmd.Parameters.Add("@address", SqlDbType.NVarChar, 200);
                    cmd.Parameters.Add("@date", SqlDbType.DateTime);

                    foreach (string importfile in importfiles)
                    {
                        string[] allLines = File.ReadAllLines(importfile);
                        baglanti.Open();

                        for (int index = 0; index < allLines.Length; index++)
                        {
                            string[] items = allLines[index].Split(new char[] { '|' });
                            //new char[] {'|'}
                            cmd.Parameters["@name"].Value = items[0];
                            cmd.Parameters["@surname"].Value = items[1];
                            cmd.Parameters["@phone"].Value = items[2];
                            cmd.Parameters["@address"].Value = items[3];
                            cmd.Parameters["@date"].Value = items[4];
                            cmd.ExecuteNonQuery();
                        }
                        conn.Close();
                    }
                }
            }

enter image description here

我不想像那样插入&#34; name = joe&#34;。没有&#34; name =&#34;我怎么能保存?字?

4 个答案:

答案 0 :(得分:2)

使用另一个分裂:

string[] items = allLines[index]
                   .Split(new []{ '|' })
                   .Select(i => i.Split(new []{ '=' })[1])
                   .ToArray();

//items[0] = "joe"
//items[1] = "clark"
//etc

Select将对每个项目采取行动,在=上再次拆分,并将其返回的第二个项目

答案 1 :(得分:0)

首先拆分'|',然后拆分'='。这将使您能够获得这些价值。

您可以对items []数组进行拆分,如下所示:

string[] val = items[0].Split(new char[] { '=' });
cmd.Parameters["@name"].Value = val[1];

答案 2 :(得分:0)

您可以像删除“|”一样使用.split()来自输入

答案 3 :(得分:0)

在您第一次分割后,您最终会使用"name=joe"等项目。您需要在Split()上执行另一个'='并获取第二部分,即值joe

在你分手后立即把它放好,你就没事了:

items = items.Select(x => x.Split('=')[1]).ToArray();