C# 参数化SQL

参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。

在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行,因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行。(这两段摘自百度百科,http://baike.baidu.com/view/3061939.htm )

----

try
{
    using (var connection = new SqlConnection(PubConstant.ConnectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand("insert into FeedbackData(username, avatar, title, location, content, datetime)" +
            " values(@username, @avatar, @title, @location, @content, @datetime)"
        );
        SqlParameter parameter = null;

        parameter = new SqlParameter("@username", SqlDbType.NVarChar);
        parameter.Value = item.Username;
        command.Parameters.Add(parameter);

        parameter = new SqlParameter("@avatar", SqlDbType.NVarChar);
        parameter.Value = item.Avatar;
        command.Parameters.Add(parameter);

        parameter = new SqlParameter("@title", SqlDbType.NVarChar);
        parameter.Value = item.Title;
        command.Parameters.Add(parameter);

        parameter = new SqlParameter("@location", SqlDbType.NVarChar);
        parameter.Value = item.Location;
        command.Parameters.Add(parameter);

        parameter = new SqlParameter("@content", SqlDbType.NVarChar);
        parameter.Value = item.Content;
        command.Parameters.Add(parameter);

        parameter = new SqlParameter("@datetime", SqlDbType.DateTime);
        parameter.Value = item.Datetime;
        command.Parameters.Add(parameter);

        command.Connection = connection;
        command.ExecuteNonQuery();
        connection.Close();
        return true;
    }
}
catch (Exception ex)
{
    return false;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值