//如果是 mssql SqlParameter("@name","郭德纲")这样写,完全可以,而 ACCESS中 却要为每个参数类型 小心地指定 数据类型!
//我想知道这是数据库的问题,还是.net的问题?
// MSsql 可以自动判断数据类型吗?还是 SqlParameter类做的自动判断好像不是后者
public class test
{
public static void method()
{
//SqlParameter
string sql = "insert into Tab_User(name,age,birthday,gongzi,sex) values(@name,@age,@birthday,@gongzi,@sex)";
OleDbConnection ocon = new OleDbConnection();
ocon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\myData.accdb;Persist Security Info=False";
ocon.Open();
OleDbCommand ocmd = new OleDbCommand();
ocmd.Connection = ocon;
ocmd.CommandText = sql;
//如果是 mssql 这么写就没问题,完全可以
//OleDbParameter[] opars= {
// new OleDbParameter("@name","郭德纲")
// ,new OleDbParameter("@age",38)
// ,new OleDbParameter("@birthday",DateTime.Now.AddMonths(-38*12))
// ,new OleDbParameter("@gongzi",5000000)
// ,new OleDbParameter("@sex",true)
// };
//而 ACCESS中 却要为每个参数类型 小心地指定 数据类型!
OleDbParameter[] opars = {
new OleDbParameter("@name",OleDbType.LongVarWChar)
,new OleDbParameter("@age",OleDbType.Integer)
,new OleDbParameter("@birthday",OleDbType.Date)
,new OleDbParameter("@gongzi",OleDbType.Double)//工资 双精度
,new OleDbParameter("@sex",OleDbType.Boolean)
};
opars[0].Value = "郭德纲";
opars[1].Value = 38;
opars[2].Value = DateTime.Now.AddMonths(-38 * 12);
opars[3].Value = 5000000.12;
opars[4].Value = true;
foreach(OleDbParameter p in opars)
{
ocmd.Parameters.Add(p);
}
ocmd.ExecuteNonQuery();
ocon.Close();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货