自己写了个分页控件,查询条件是根据用户输入动态生成的。
平时使用SqlParameter时只是将列字段的值作为参数,现在我要将整个where后面的条件(包括多个值,以及sql语句。如:string sqlCondition = "id='"+txtID.Text+"' and type='"txtType.Text+"'")作为参数传入。这样的话能不能保证安全,能不能防止sql注入。另外SqlParameter的原理什么,网上很多文章都只是讲SqlParameter的用法,有谁能给篇介绍的文章吗?
平时使用SqlParameter时只是将列字段的值作为参数,现在我要将整个where后面的条件(包括多个值,以及sql语句。如:string sqlCondition = "id='"+txtID.Text+"' and type='"txtType.Text+"'")作为参数传入。这样的话能不能保证安全,能不能防止sql注入。另外SqlParameter的原理什么,网上很多文章都只是讲SqlParameter的用法,有谁能给篇介绍的文章吗?
set QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[InsertUsers]
(
@UserName varchar(255),@Password varchar(255),@UserID int output
)
as
insert into Users(UserName,Password)values(@UserName,@Password)
set @UserID=@@Identity
调用
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
conn.Open();
SqlCommand cmd = new SqlCommand("[InsertUsers]", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@UserName", TextBox1.Text));
cmd.Parameters.Add(new SqlParameter("@Password", TextBox2.Text));
cmd.Parameters.Add(new SqlParameter("@UserID", 0)).Direction = ParameterDirection.Output;
int result = cmd.ExecuteNonQuery();
Response.Write(result + " UserID:" + cmd.Parameters["@UserID"].Value);
}