首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-07-30 
MSsql 可以自动判断数据类型吗?还是 SqlParameter类做的自动判断好像不是后者C# code//如果是 mssql SqlPa

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

C# code
    //如果是 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();        }    }


[解决办法]
SqlParameter具有类型转换,可以将(如果你不写的话).net类型转换为sql server类型声明(SqlDbType)。
[解决办法]
oleparameter,看起来跟你说的一样,必须自己制定OleDbType。

热点排行