2015-08-21 2 views
1

Я хотел бы сохранить определенный текст в моей базе данных. Вместо записей, содержащих текст 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

Я не хочу, чтобы вставить как, что "имя = Джо". Как я могу сохранить без слов «name =»?

+1

Вы можете использовать '.split (новый [] { '='}) [1];' Но это зло. – Stefan

+0

Я не могу написать строку [] items = allLines [index] .Split ('=') [1]; он дает ошибку – anilleuss

ответ

0

Сначала вы разделите на '|', а затем на '='. Это даст вам возможность получить эти ценности.

Вы можете сделать разделение на ваши вопросы [] массив следующим образом:

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

Я так пробовал, но не вставлял данные – anilleuss

+0

Отредактировал свой ответ, чтобы показать вам, как для одного из них. Вы можете повторить все остальное. – Vahlkron

+0

Возможно, вы захотите посмотреть на ответ Джонсополиса. Он немного более изящный. – Vahlkron

0

Вы можете использовать .split() таким же образом, как вы сделали, чтобы удалить «|» от входа

2

использовать другой Split:

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

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

Select будет действовать по каждому пункту, разделив его снова на =, и принимая во втором пункте он возвращает

+0

Ницца, мне нравится этот ответ. – Vahlkron

+0

его работы так много – anilleuss

0

После первого раскола вы заканчивающиеся вверх с товарами, такими как "name=joe". Вам нужно сделать еще Split() на '=' и взять вторую часть, то есть значение joe.

Поместите это сразу после раскола, и вы будете в порядке:

items = items.Select(x => x.Split('=')[1]).ToArray(); 
Смежные вопросы