oledbparameter(oledbparameter用法)
错误:当前上下文中不存在名称“data”,麻烦各位帮我看下下面的代码有没有出错,还是要加什么
using?System.Data.OleDb;//所加的头文件???
public?int?AddAdmin(AdminManage?adminmanage)????????
{????????????
??用户的数据处理类?data?=?new?用户的数据处理类();?//?用户的数据处理类?具体是什么你懂的
??OleDbParameter[]?prams?=?
??{
????data.MakeInParam("@id",?OleDbType.VarChar,50,adminmanage.ID),?
????data.MakeInParam("@name",?OleDbType.VarChar,50,adminmanage.Name),
????data.MakeInParam("@pwd",?OleDbType.VarChar,50,adminmanage.Pwd),?
??};????????????
??return?(data.RunProc("inset?into?tb_admin(id,name,pwd)?values(@id,@name,@pwd)",?prams));????????
}
oledbparameter无法转换命令参数
出现这样的错误,一般是因为写进去的数据长度超过了数据库字段的长度或者是数据类型不匹配导致,请留意检查:rs("pwd")=pwd这段写入语句所针对的字段的类型和长度。
从你说的情况来看,rs("PWD")所针对的PWD字段太短的可能最大。解决多步OLEDB操作产生错误的方法如下:最近做国土系统的时候出现:MicrosoftOLEDBProviderforSQLServer错误'80040e21'多步OLEDB操作产生错误。如果可能,请检查每个OLEDB状态值。没有工作被完成。引起这个问题的原因简单的说就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数。例如自动编号字段的就不应该指定值;限制50个字符的字段你就不应该提交多于50个字符的字符串。
C#连接access数据库,如何向一个表中参数化插入操作
先给你一个方法,你可以让到相应的地方
public bool ExecuteSql(string SqlString,params OleDbParameter[] parameters)
{
bool result = false;
OleConnection conn = new OleConnection("连接字符串")
OleDbCommand cmd = new OleDbCommand(SqlString, conn);
cmd.CommandType = CommandType.Text;
if(parameters!=null)
{
foreach(OleDbParameter p in parameters)
{
if((p.Direction== ParameterDirection.Output)p.Value==null) p.Value = DBNull.Value;
cmd.Parameters.Add(p);
}
}
try
{
conn.Open();
cmd.ExecuteNonQuery();
result = true;
}
catch
{
}
finally
{
conn.Close();
}
return result;
}
调用时:
string sql = "insert into tablename(name,sex,brithday,address,zip) values(@name,@sex,@brithday,@address,@zip)";
OleDbParameter[] parameters = new OleDbParameter[]{
new OleDbParameter("@name",namevalue),
new OleDbParameter("@sex",sexvalue),
new OleDbParameter("@brithday",brithdayvalue),
new OleDbParameter("@address",addressvalue),
new OleDbParameter("@zip",zipvalue)
};
bool flag = ExecuteSql(sql,parameters);
运行成功会返回真,否则为假,上面的值我没有写具体的,你自己写就行了
asp.net中的OLEDBParameter对象的作用是什么?
OleDBParameter是针对SQL以外数据库的参数传递对象
比如说 在程序中要执行一个SQL语句: select * from 表 where 表id = @id
如果是在SQL中可以用 declare @id int set @id = ? 来实现
但在C#中有更规范的方法 就是这个Parameter
OleDBParameter id = new OleDBParameter("@id",?);
由于构造中(第一项,第二项)第一项是定义参数名的string 第二项是参数的值
而这个值的类型是object 所以你可以传递任何值 同样的 你可以传递一个脚本的字符串 这个字符串会被存储到数据库中 但再次读出的时候只是以字符串的形式提取 所以是的 用这种方式可以防SQL注入 而在定义的时候只需要
new OleDBParameter("@id",?);这样即可 不需要再次过滤了 OleDBParameter会结合语句与数据库结构自动分析参数 但有些情况也会抛出SQL异常或空值异常 所以在使用的时候仍然需要加try catch