日期:2014-05-18  浏览次数:20464 次

Database类和Dbcommand
Database db = DatabaseFactory.CreateDatabase();
string sqlCommand = "Select CustomerID, LastName, FirstName From Customers";
DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
以上代码有几点疑问。
1、DataBase不是系统.net framework中定义的类吧?
2、Dbcommand的用法。
3、DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);这段话时什么意思?DbCommand是抽象类,不能实例化,所以用db.GetSqlStringCommand来实现吗,怎么理解?
小弟在这先谢过了

------解决方案--------------------
1、首先,database不是NET定义的类,应该是自定义的,你去看看sqlHeleper相关的代码。自定义的
2、表示要对数据源执行的 SQL 语句或存储过程。为表示命令的、数据库特有的类提供一个基类。 
MSDN
3、抽象类是不能实例的,抽象方法也是不能直接调用的,确实是这样.给段代码吧
C# code

 /// <summary>
        /// 返回Command实例,并且设置Connection和CommandText
        /// </summary>
        /// <param name="DataBaseType"></param>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DbCommand CreateCommand(int DataBaseType, string sql)
        {
            DbCommand cm = null;
            switch (DataBaseType)
            {
                case 2:
                    cm = new System.Data.OracleClient.OracleCommand(sql, (System.Data.OracleClient.OracleConnection)CreateConnection());
                    break;
                case 3:
                    cm = new System.Data.OleDb.OleDbCommand(sql, (System.Data.OleDb.OleDbConnection)CreateConnection());
                    break;
                case 4:
                    cm = new System.Data.Odbc.OdbcCommand(sql, (System.Data.Odbc.OdbcConnection)CreateConnection());
                    break;
                default:
                  [color=#FF0000]  cm = new System.Data.SqlClient.SqlCommand(sql, (System.Data.SqlClient.SqlConnection)CreateConnection());
                    break;[/color]
            }

            return cm;
        }