将阿拉伯字符串列表保存在数据库中

时间:2019-02-22 08:43:17

标签: list sql-server-2012 c#-2.0

我有文本文件。我正在阅读文本文档,并将其拆分为一个数组。我尝试删除空白。所以我将数组的元素移到字符串列表中。
这里的部分代码

 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();

当我尝试运行代码时,出现以下错误

  

Error3名称'_words'在当前上下文中不存在

如何修复代码?

1 个答案:

答案 0 :(得分:1)

在这里:

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

您正在尝试使用_words,它没有在任何地方声明。这是一个错字,我相信您想使用words(不带下划线)。


您已经循环foreach中的单词,因此不必以数组形式访问words,而是直接在foreach中声明的变量w。另外,目前,您只会将最后一个字保留为sql参数,因为您没有串联它们的值,因此始终会对其进行赋值。

您可以使用foreach连接所有没有String.Join()的单词:

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

您还可以省略所有split和foreach并使用简单的replace()直接删除所有空白:

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