Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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# SQL Server:插入带有转义字符的文本,然后以相同格式读取_C#_Asp.net_Sql Server - Fatal编程技术网

C# SQL Server:插入带有转义字符的文本,然后以相同格式读取

C# SQL Server:插入带有转义字符的文本,然后以相同格式读取,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有一个ASP网页,从用户那里获取字符串。这些字符串通常是复杂的SQL查询或代码段,所以我需要将它们插入到数据库中,并使用类似\n\r的字符。然后以相同的格式读取代码,这样其他用户所要做的就是复制代码并运行它 问题是,当插入到数据库时,它们被剪切。我正在使用SQL Server,以下是我插入数据库的代码: OdbcConnection conn = new OdbcConnection(); StringBuilder query = new StringBuilder(); OdbcComma

我有一个ASP网页,从用户那里获取字符串。这些字符串通常是复杂的SQL查询或代码段,所以我需要将它们插入到数据库中,并使用类似\n\r的字符。然后以相同的格式读取代码,这样其他用户所要做的就是复制代码并运行它

问题是,当插入到数据库时,它们被剪切。我正在使用SQL Server,以下是我插入数据库的代码:

OdbcConnection conn = new OdbcConnection();
StringBuilder query = new StringBuilder();
OdbcCommand command = new OdbcCommand();

string db= null;
db = connectionstr;
conn.ConnectionString = veritabani;
conn.Open();

db = null;
string detail = this.txtdetail.Text;

command = conn.CreateCommand();

if (string.IsNullOrEmpty(hdnFilename.Value))
{
    query.Append(" INSERT INTO SUPPORT (title, detail, date) VALUES (?,?,?) ");
    command.CommandText = query.ToString();

    command.Parameters.Add("@title", OdbcType.VarChar).Value = this.txtbaslik.Text;
    command.Parameters.Add("@detail", OdbcType.NVarChar).Value = detail;
    command.Parameters.Add("@date", OdbcType.DateTime).Value = DateTime.Now.ToString();
}
else
{
    query.Append(" INSERT INTO SUPPORT (baslik, detail, date, file) VALUES (?,?,?,?) ");
    command.CommandText = query.ToString();

    command.Parameters.Add("@title", OdbcType.VarChar).Value = this.txtbaslik.Text;
    command.Parameters.Add("@detail", OdbcType.NVarChar).Value = detail;
    command.Parameters.Add("@date", OdbcType.DateTime).Value = DateTime.Now.ToString();
    command.Parameters.Add("@file", OdbcType.VarChar).Value = hdnFilename.Value;
}

command.ExecuteNonQuery();

command = null;

conn.Close();
conn = null;

代码可以很好地工作,并插入到数据库中,必须翻译一些变量才能让你们更好地理解,原始代码没有语法错误。

问题是,sql语句中有注释行,所以如果我复制粘贴查询,它将无法工作。除去它们,我将把这个问题留给子孙后代。谢谢你的回答。

你说他们被剪掉是什么意思?在SSMS中,您只能看到给定列中返回的部分文本。如果有新行数据并在网格中查看结果,则只会看到第一行数据。您可以更改为以文本形式查看。此外,您还可以在SSMS中的“选项”下调整查询结果中显示的文本量。稍微附带一点,您应该始终为(n)varchar之类的内容指定参数的长度。当您查询DB时,您会看到,当您检索结果时,它是否被剪切?在数据库中,具有所述查询的行剪切了一些空格,有内部连接语句聚集在一起。整个查询保留为一行。我需要的是添加换行符和空格、转义符,这样格式就不会中断,任何其他阅读查询的人都可以用相同的格式阅读它。为什么要使用旧的、不推荐的
OBDC
东西?对于SQL Server,我始终建议使用SQL本机客户端工具--
System.Data.SqlClient
类,如
SqlConnection
SqlCommand
。另外:如果定义类型为
OdbcType.VarChar
的参数,则不确定会发生什么情况,但您没有为其提供长度。。。请尝试指定数据库中该列的实际长度,修改代码使其不使用odbc是否可以解决此问题?我还删除了NVARCHAR,但我仍然无法插入转义字符@marc_s字符串是用新行读取的,但在数据库插入中它们不存在了。