我有文本文件。我正在阅读文本文档,并将其拆分为一个数组。我尝试删除空白。所以我将数组的元素移到字符串列表中。
这里的部分代码
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'在当前上下文中不存在
如何修复代码?
答案 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(" ", "");