Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从文本文件读取将创建三个点_C#_.net_String - Fatal编程技术网

C# 从文本文件读取将创建三个点

C# 从文本文件读取将创建三个点,c#,.net,string,C#,.net,String,我正在使用StreamReader读取一个包含sql查询的长文本文件,然后使用StringBuilder创建一个针对数据库运行的字符串。创建字符串后,我检查了值和三个点。。。出现在字符串中,导致在对数据库运行查询时失败。为什么会这样?我能做些什么来阻止它发生 string script; if (File.Exists(path)) { using(StreamReader sr = File.OpenText(path)) { StringBuilder sb

我正在使用StreamReader读取一个包含sql查询的长文本文件,然后使用StringBuilder创建一个针对数据库运行的字符串。创建字符串后,我检查了值和三个点。。。出现在字符串中,导致在对数据库运行查询时失败。为什么会这样?我能做些什么来阻止它发生

string script;
if (File.Exists(path))
{

    using(StreamReader sr = File.OpenText(path))
    {
        StringBuilder sb = new StringBuilder();
        while(!sr.EndOfStream)
        {
            sb.Append(sr.ReadLine());

        }
        script = sb.ToString();
    }
}
更新:我应该补充一点,每次字符位置16384处都会出现三个点。不知道这有什么意义


更新:字符串似乎在运行时被截断。该文件共有48080个字符,但在中间位置截断,使得字符串变量32768为16384。这是字符串的最大字符数吗?

我感觉您正在检查调试器中的值,其中长查询文本部分显示,并以省略号(…)结束

在这里再次猜测,但似乎您将SQL行连接到一行中,如果文件中的行没有以空格字符结尾,那么查询将变得混乱。这可能就是SQL查询无法工作的原因

顺便说一句,您可以更简洁地编写代码,如下所示

if (File.Exists(path))
    script = string.Join(" ", File.ReadLines(path));

在调试很长的查询字符串时,我遇到了同样的问题

事实证明,VisualStudio(我的是2015)调试器将在一定数量的字符后截断长字符串,以便于阅读。所以,即使您在文本可视化工具中看到三个点(…),实际值也没有这三个点

据我所知,VisualStudio2012调试器没有添加三个点。我还没有找到在VS2015中关闭该功能的方法,但您可以使用html可视化工具或json可视化工具作为替代解决方案


我有一个明确的答案给你:微软说你正在经历的是Visual Studio 2015中的一个bug。他们发布了VisualStudio2015的“更新2”,据报道该更新旨在纠正该问题

我试图让我的管理员安装这个更新,但与此同时,一个可行的解决办法是将文本加载到JSON可视化工具中。它将显示一个错误,即它当然不是有效的JSON,因为它是SQL,但它将显示字符串的整个文本

从此处下载更新2:

请参见此处的错误报告:


您调试了吗?其他所有的文本都读得很好,没有任何问题吗?如果是,你确定你的文章没有这些点吗?为什么不用从文本文件中读取数据来传递sql中的查询,而只创建一个存储过程呢?不幸的是,在我的情况下,我没有创建sp的权限(我不高兴,因为这样会使我的生活简单得多)。我检查了我的文件,三个点没有出现在任何地方。还有,更奇怪的是,当我将字符串写入文本时,三个点不会出现。它们只存在于字符串变量中。关于第二个问题,是的,其余的文本(之前和之后)看起来是正确的。我想知道是否有一个隐藏的角色在做这件事。。。我已经在notepad++中进行了检查,但找不到任何您知道可以执行的操作
string script=File.ReadAllText(path)?我认为这个问题被否决是不公平的。OP清楚地说明了问题的症结所在,这个问题有一个明确的答案,我在下面贴了出来。:-)是的,我认为这和省略号一样好,但是当我在VS中使用文本可视化工具时,我可以看到。。。被追加的,每次都不在同一个地方。我按照你的建议重写了代码,但没有修改success@brdahlgren我建议你用一个简单的SQL查询试试,我试过了,但用一个简单的查询,它没有添加三个点。我应该纠正我之前的评论,我试着读取不同长度的文件,三个点确实每次都显示为字符位置16384,这不是一个功能。这是一个错误:-)