Сохранить арабский список строк в базе данных - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть текстовый файл.Я читаю текстовый документ и делю его на массив.Я пытаюсь удалить пробел.Поэтому я перемещаю элементы массива в список строк.
Здесь часть кода

 List<string> words =new List<string>();
           string allcomments = File.ReadAllText("D:\\all comment.txt");//read text flile
           string[] tc = allcomments.Split(' '); //split contains of text flie into tokens
           foreach (string t in tc) 
           {
               string token = t;
               token = token.Trim();//to remove white spaces
               words.Add(token);
           }
                            //save list of words in the database
                      SqlConnection connection = new SqlConnection("Server=DESKTOP-JRS3DQ4; DataBase=My_Project; Integrated Security=true");
              connection.Open();

              SqlCommand command = new SqlCommand("INSERT INTO tokens_all_comments (tokens) VALUES (@tokens)", connection);
              command.Parameters.Add("@tokens", SqlDbType.NVarChar, 250); //size and type must match your DB

              foreach(var w in words)
              {
                  command.Parameters["@tokens"].Value = _words[w];
                  command.ExecuteNonQuery();
              }
              connection.Close();

Когда я пытаюсь запустить код, появляется следующая ошибка

Ошибка3Имя '_words' не существует в текущем контексте

Как я могу исправить код?

1 Ответ

0 голосов
/ 22 февраля 2019

Здесь:

foreach(var w in words)
{
  command.Parameters["@tokens"].Value = _words[w];
  command.ExecuteNonQuery();
}

Вы пытаетесь использовать _words, который нигде не объявлен.Это опечатка, я думаю, вы хотели использовать words (без подчеркивания).


Вы уже зацикливаете слова в foreach, поэтому вам не нужно обращаться к words как массив, но непосредственно переменная w, объявленная в foreach.Кроме того, в настоящее время вы оставляете только последнее слово в качестве параметра sql, поскольку вы не объединяете их значение, оно всегда присваивается.

Вы можете объединить все слова без foreach, используя String.Join():

command.Parameters["@tokens"].Value = String.Join("", words.ToArray());

Вы также можете опустить все разбиение и foreach и напрямую удалить все пробелы с помощью простого replace():

command.Parameters["@tokens"].Value = allcomments.Replace(" ", "");
...