我在网上了一圈儿 好像都是在asp中用到此方法的在 asp.net中好像没有相关例子 我试着写了下边代码,可是CreateParameter()方法怎么没有有参数的重载呢?
在ACCESS中:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\sexSystem.mdb;";
OleDbConnection con = new OleDbConnection(connectionString);
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO [userInfo]([userName],[userPwd])VALUES(@userName,@userPwd) ";
cmd.CreateParameter();
在SQL中:
string connectionString = "server=(local);uid=sa;pwd=lkf6505563;database=user1";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO userinfo(userName,userPwd)VALUES(@userName,@userPwd)";
cmd.CreateParameter();
在ACCESS中:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\sexSystem.mdb;";
OleDbConnection con = new OleDbConnection(connectionString);
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO [userInfo]([userName],[userPwd])VALUES(@userName,@userPwd) ";
cmd.CreateParameter();
在SQL中:
string connectionString = "server=(local);uid=sa;pwd=lkf6505563;database=user1";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO userinfo(userName,userPwd)VALUES(@userName,@userPwd)";
cmd.CreateParameter();
这里面的@userName,@userPwd两个参数是给CreateParameter()的.
这样可以有效防址sql注入.还可以防止类型长度产生的相关问题
Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
返回值
返回 Parameter 对象。参数
Name
可选。String 值,包含 Parameter 对象的名称。
Type
可选。DataTypeEnum 值,指定 Parameter 对象的数据类型。
Direction
可选。ParameterDirectionEnum 值,指定 Parameter 对象的类型。
Size
可选。Long 值,指定参数值的最大长度(以字符或字节为单位)。
Value
可选。Variant,指定 Parameter 对象的值。
说明
使用 CreateParameter 方法创建具用指定的名称、类型、方向、大小和值的新的 Parameter 对象。在参数中传送的任何值都将写入相应的 Parameter 属性。此方法不会将 Parameter 对象自动追加到 Command 对象的 Parameters 集合。这样就可以设置附加属性,在将 Parameter 对象追加到集合时,ADO 将使这些附加属性的值生效。如果在 Type 参数中指定变长数据类型,在将其追加到 Parameters 集合之前必须传送 Size 参数或者设置 Parameter 对象的 Size 属性;否则将发生错误。如果在 Type 参数中指定数字型数据类型(adNumeric 或 adDecimal),也必须设置 NumericScale 和 Precision 属性。
我在C#中好像不行呀!
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO userinfo(userName,userPwd)VALUES(@userName,@userPwd)";
cmd.Parameters.Add(),可用这个方法
cmd.ActiveConnection = cnn
cmd.CommandText = "insert into test(date,number,name) values (?,?,?)"
cmd.CommandType = adCmdTextcmd.Parameters.Append cmd.CreateParameter("date", adDate, adParamInput)
cmd.Parameters.Append cmd.CreateParameter("number", adVarChar, adParamInput, 255)
cmd.Parameters.Append cmd.CreateParameter("name", adWChar, adParamInput, 255)
最后自己给三个parameter设置值吧