Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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# NET中长SQL字符串的字符串连接错误_C#_Sql_String_Concatenation - Fatal编程技术网

C# NET中长SQL字符串的字符串连接错误

C# NET中长SQL字符串的字符串连接错误,c#,sql,string,concatenation,C#,Sql,String,Concatenation,我在C语言中发现了一种非常奇怪的行为,即用SQL语句连接字符串。 我执行这个方法几千次了,但是这个错误很少发生,而且只有在字符串中有很多换行符时才会发生。它似乎与字符串的长度无关 不幸的是,我不能在这里发布完整的SQL,因为这些是我公司的商业秘密 考虑生成的SQLINSERT语句,它的值之一是SQLSELECT语句。Select语句中所有可能的内容都会在之前被删除,因此关闭字符串时不会出错 string myString = "INSERT INTO ... (COLUMN_NAMES, SQL

我在C语言中发现了一种非常奇怪的行为,即用SQL语句连接字符串。 我执行这个方法几千次了,但是这个错误很少发生,而且只有在字符串中有很多换行符时才会发生。它似乎与字符串的长度无关

不幸的是,我不能在这里发布完整的SQL,因为这些是我公司的商业秘密

考虑生成的SQLINSERT语句,它的值之一是SQLSELECT语句。Select语句中所有可能的内容都会在之前被删除,因此关闭字符串时不会出错

string myString = "INSERT INTO ... (COLUMN_NAMES, SQL_SELECT_STATEMENT) 
                   VALUES (SOME_VALUES, '{VERY_LONG_SQL_SELECT_STATEMENT}',1)"
奇怪的是,myString包含所有内容,直到非常长的SQL SELECT语句。字符串}',1的最后一部分不在该字符串内。当我在代码窗口中创建一个断点并执行它时,错误不会发生,字符串也就完成了


有什么建议吗?在我看来,这显然是C语言中的一个错误。有人有过类似的问题吗?

默认情况下,您需要跨换行符连接字符串。或者,您可以使用@符号,如下所示:

var myString=@INSERT-INTO。。。列名称,SQL SELECT语句
值一些_值,{VERY_LONG_SQL_SELECT_STATEMENT}',1

在我看来这显然是C中的一个错误。-不,我不认为是,除非它的长度超过2GB,但那将是愚蠢的…字符串有一个最大长度。。。你肯定没有达到int.MaxValue?字符串的使用没有错误。。如果有,我会感到惊讶。我们在代码库中连接了巨大的字符串,而不是SQL。。因此,您可以确定它是经过良好测试的。您是否使用ado.net中的DbParameter?通过参数,可以指定数据库类型并避免sql中的字符串问题。as'或chars。听起来您没有正确转义字符。可能您正在添加而不是\I正在从OracleDataReader获取非常长的\u SQL\u SELECT\u语句-字符串,方法是从dba\u hist\u sqltext执行SELECT SQL\u text,其中。。。。我发现,当使用selectstring=selectstring.substring0,selectstring.Length-1剪切最后一个字符时,它似乎可以工作。这对我很管用,但我觉得还是很奇怪。也许OracleDataReader发送一个不可见的字符串结束符号,该符号由C解释?