C# 如何将杂乱的长文本写入数据库

C# 如何将杂乱的长文本写入数据库,c#,sql,C#,Sql,我想取一些长的、混乱的字符串,基本上将其转储到字符串数据库字段中。问题是我遇到了各种各样的问题,文本把插入查询搞得一团糟。有没有一种方法可以让我忽略内容,写下全文而不必担心其中的内容 string connectionstring = @"connectionstring omitted"; // Omitted using (SqlConnection sqlConnection = new SqlConnection(connectionstring)) { try {

我想取一些长的、混乱的字符串,基本上将其转储到字符串数据库字段中。问题是我遇到了各种各样的问题,文本把插入查询搞得一团糟。有没有一种方法可以让我忽略内容,写下全文而不必担心其中的内容

string connectionstring = @"connectionstring omitted"; // Omitted
using (SqlConnection sqlConnection = new SqlConnection(connectionstring))
{
    try
    {
        sqlConnection.Open();

        string s = " This is an email
           It has very  bad spacing and other special characters such as '' and (), it includes contact info like:

           John@john.com
           Tel :Office +(27) 082345674 3435667 / Mobile +(23)83562 4326556423
           Email: john@john123.com
           More complex numbers (1234) (122445123) ";

        SqlCommand command = new SqlCommand();
        command.CommandType = CommandType.Text;
        command.Connection = sqlConnection;
        command.CommandText = "INSERT INTO [dbo].[Emails] ([EmailText]) VALUES('" + s + "')";

        command.ExecuteNonQuery();
    }
    catch(Exception e)
    {
        throw e;
    }
}
如何保存此文本而不使查询出现问题

这就是错误:

System.Data.SqlClient.SqlException:“ve”附近的语法不正确
在预期条件的上下文中指定的非布尔型表达式,靠近“are”
在预期条件的上下文中指定的非布尔类型的表达式,靠近“have”
“e”附近的语法不正确
“必需”附近的语法不正确
字符串“')”后未闭合的引号。'

你用的是一个。这将防止中提到的攻击

有示例代码

正如在评论中所建议的那样

下面是代码的一般概念:

string command = "SOMESQL @someId SOMEMORESQL";
SqlCommand sqlCommand = new SqlCommand(command, connection);
sqlCommand.Parameters.AddWithValue("@someId", theData);

我建议您看看使用
Add
AddWithValue
之间的区别。两者都可能有令人不快的惊喜。(第一个是在使用int(0)时-请参阅链接,第二个是在系统不知道您到底想做什么时-请参阅和。)

如果您希望我们能够帮助您,您需要发布一个。我很确定你是在串接字符串而不是使用参数,尽管这是个好问题。OP不知道如何编写正确的代码。@ispiro不,不是“我遇到了各种各样的问题,文本把insert查询搞砸了”。我们只能假设发生了什么,而看不到code@CamiloTerevinto你真的怀疑OP没有使用参数吗?你可以遵循以下几种方法:1。如果使用字符串,则使用参数化查询。但是,根据要持久化的文本,这可能无法避免sql错误。2.将字符串转换为中的字节数组,然后存储字节或blob。3) 如果这是您可以访问的计算机,请将字符串保存到具有guid名称的文本文件中,并将文件的路径保存到数据库中。@您想解释一下原因吗?显然,OP不知道它们,正在尝试手动清理输入。他们做了正确的事情,在这里问了一个问题,意识到一定有更好的方法。考虑到代码示例,也许有更好的链接?@Nigelwhattling可以随意编辑到我的答案中。谢谢,这是我一直在寻找的,它解决了我的问题,也为糟糕的问题感到抱歉字符串中有一些信息,由于明显的原因,我无法透露。@KNLBST您的问题一开始就很好。这个网站已经变得相当令人兴奋。至于机密信息——这是一个比一开始看起来更糟糕的问题——如果你决定删除信息——它仍然在问题的历史记录中可见(点击“编辑..分钟前”链接查看我的意思)。即使你删除了这篇文章,它仍然可见(尽管不可搜索),我们的代表人数超过10k!此外,还有一些网站从StackOverflow中获取信息。。。