首页 新闻 赞助 找找看

MSsql 可以自动判断数据类型吗?还是 SqlParameter类做的自动判断好像不是后者

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-05 10:14
    //如果是 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();
        }
    }
钢的锅的主页 钢的锅 | 初学一级 | 园豆:10
提问于:2012-06-24 09:20
< >
分享
最佳答案
0

为了安全可靠,最好都指定数据类型,免得后患。。。。。。!!

收获园豆:10
Angkor--:-- | 小虾三级 |园豆:1086 | 2012-06-24 09:36
其他回答(1)
0

MS SQL Server 不能自动判断

dudu | 园豆:31075 (高人七级) | 2012-06-25 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册