Access的参数查询问题?
我用参数更新一个access数据库里的记录,不报错,但是更新没有成功:看下面代码
using System;
using System.Data;
using System.Data.OleDb;
using System.Collections;
public class MyClass
{
public static void Main()
{
OleDbConnection conn = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0; data source=C:\Inetpub\wwwroot\fiveXdotNet_Oledb\db\fivexdb.mdb");
conn.Open();
string sSQL = "UPDATE [classmates] "+
"SET " +
"[Name] = @vchName, "+
"[Sex] = @bSex, " +
"[IsAgree] = @bIsAgree," +
"[IsMate] = @bIsMate," +
"[Address] = @vchAddress," +
"[LastLogin] = @dtLastLogin," +
"[LoginTimes] = @iLoginTimes, " +
"[IsOnline] = @bIsOnline " +
" WHERE ([ID] = @iID)";
//Console.WriteLine(sSQL);
//Console.Read();
OleDbParameter[] paParams = {
MyClass.GetParam("@iID", OleDbType.Integer,8, 12),
MyClass.GetParam("@vchName", OleDbType.VarWChar, 50, "老孙"),
MyClass.GetParam("@vchAddress", OleDbType.VarWChar, 100, "address111111"),
MyClass.GetParam("@bSex", OleDbType.Boolean,4, false),
MyClass.GetParam("@bIsMate", OleDbType.Boolean,4, false),
MyClass.GetParam("@bIsAgree", OleDbType.Boolean,4, false),
MyClass.GetParam("@bIsOnline", OleDbType.Boolean,4, false),
MyClass.GetParam("@iLoginTimes", OleDbType.Integer, 4, 200),
MyClass.GetParam("@dtLastLogin",OleDbType.Date,4, DateTime.Now)
};
OleDbCommand cmd = new OleDbCommand(sSQL,conn);
foreach (OleDbParameter parameter in paParams)
cmd.Parameters.Add(parameter);
try{
cmd.ExecuteNonQuery();
}
catch(Exception e){
Console.WriteLine(e.Message);
}
finally{
//cmd.Close();
conn.Close();
}
}
public static OleDbParameter GetParam(string sName,OleDbType DbType, int iSize, object oValue){
OleDbParameter para = new OleDbParameter(sName,DbType,iSize);
para.Value = oValue;
return para;
}
}
然后改用只更新一个name字段,用了两个参数@name和@id后,报数据类型不匹配,我已经按照
http://support.microsoft.com/default.aspx?scid=kb;en-us;320435
这个进行数据类型mapping 了,为什么仍报错啊?