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