从c#向SQL Server 2008数据库插入特殊字符

时间:2013-08-27 07:15:27

标签: c# sql

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

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

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;

                            });

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

我的插入查询是:

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

当我点击插入按钮然后它给出错误(数据类型错误)。 我的问题是,插入带有特殊字符的字符串不要删除这些字符。我想将这些字符从c#application传递给我们的sql server 2008。 提前谢谢

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分: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/$@";

答案 2 :(得分:1)

您的插入查询容易受到SQL注入攻击。请尝试使用Sql参数。并在SQLServer User 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();
                }

            }