0

我想在 sqlserver 2008 数据库中插入特殊字符。例如 ('/@#&*$) 等。

我尝试了以下代码,但它从原始字符串中删除了这些字符串。

string[] arrtime = postingtime.Split(',');
                            string sss = arrtime[1];
                            string sss1 = "EDT";
                            bool first2 = true;
                            string s33 = Regex.Replace(sss, sss1, (m) =>
                            {
                                if (first2)
                                {
                                    first2 = false;
                                    return "";
                                }

                                return sss1;

                            });

但我不想从原始字符串中删除这些字符串......因为我想插入法语语言数据并且删除这些特殊字符会改变句子的含义。

我的插入查询是:

  cn.Open();
        adp.InsertCommand = new SqlCommand("insert into ttt values('r=DE'S''C/pa-ge=1/$@')", cn);
        adp.InsertCommand.ExecuteNonQuery();
        cn.Close();

当我单击插入按钮时,它会给出错误(数据类型错误)。我的问题是,插入带有特殊字符的字符串而不是删除这些字符。我想将这些字符从 c# 应用程序传递给我们的 sql server 2008。提前谢谢

4

3 回答 3

3

使用像这样的参数化查询:

using (SqlConnection cn = new SqlConnection(...))
{
    cn.Open();

    using (SqlCommand cmd = new SqlCommand("insert into ttt values (@testvalue)", cn))
    {
        cmd.Parameters.AddWithValue("@testValue", "r=DE'S'C@4593§$%");
        cmd.ExecuteNonQuery();
    }
}
于 2013-08-27T07:17:47.320 回答
2

使用参数

adp.InsertCommand = new SqlCommand("insert into ttt values(@p1)", cn);
adp.InsertCommand.Parameters.Add(new SqlParameter("@p1", SqlDbType.NVarChar)).Value = "r=DE'S''C/pa-ge=1/$@";
于 2013-08-27T07:20:49.690 回答
1

您的插入查询容易受到 SQL 注入的影响。尝试使用 SqlParameters。并在 SQLServer 用户 NVarchar 数据类型中。

using (SqlConnection con = new SqlConnection(dc.Con))
            {
                using (SqlCommand cmd = new SqlCommand("insert into ttt values(@paramValue)", con))
                {

                    cmd.Parameters.AddWithValue("@paramValue", "r=DE'S'C@4593§$%");
                    con.Open();
                    cmd.ExecuteNonQuery();
                }

            }
于 2013-08-27T07:18:06.460 回答