using System; 
using System.Data; 
using MyChatRoom.DataAccessLayer; 
/// <summary> 
/// Message 的摘要说明 
/// </summary> 
namespace MyChatRoom.BusinessLogicLayer 

    public class Message 
    { 
        public static Database LoadTop10() 
        { 
            Database db = new Database(); 
            string sql = "select top10 * from [Message] order by CreateTime desc"; 
            Database ds=db.GetDataSet(sql); 
            return ds; 
        }         public void Add(string username, string createTime, string content, string color, string emotion) 
        { 
            Database db = new Database(); 
            string sql = "Insert Into [Message] Values(" 
            + "'" + username + "'," 
            + "'" + createTime + "'," 
            + "'" + content + "'," 
            + "'" + color + "'," 
            + "'" + emotion + "')"; 
            db.ExecuteSQL(sql); 
        } 
    } 
} -------------------------------------------------------------------------- 
using System; 
using System.ComponentModel; 
using System.Collections; 
using System.Diagnostics; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data.SqlTypes; /// <summary> 
/// Databaes 的摘要说明 
/// </summary> 
namespace MyChatRoom.DataAccessLayer 

        public class Database: IDisposable 
        { 
            /// <summary> 
            /// 保护变量,数据库连接。 
            /// </summary> 
            protected SqlConnection Connection; 
            protected String ConnectionString; 
            public Database() 
            { 
                ConnectionString = ConfigurationManager.AppSettings["DBConnectionString"]; 
            } 
            ~Database() 
        { 
            try 
            { 
                if (Connection != null) 
                    Connection.Close(); 
            } 
            catch{} 
            try 
            { 
                Dispose(); 
            } 
            catch {} 
        } 
            protected void Open() 
            { 
                if (Connection == null) 
                { 
                    Connection = new SqlConnection(ConnectionString); 
                } 
                if(Connection.State.Equals(ConnectionState.Closed)) 
                { 
                    Connection.Open(); 
                } 
            } 
            protected void Close() 
            { 
                if (Connection != null) 
                    Connection.Close(); 
            } 
            protected void Dispose() 
            { 
                if(Connection != null) 
                { 
                  Connection.Dispose(); 
                    Connection = null; 
                } 
            } 
            public DataSet GetDataSet(String SqlString) 
            { 
                Open(); 
                SqlDataAdapter adapter = new SqlDataAdapter(SqlString, Connection); 
                DataSet dataset = new DataSet(); 
                adapter.Fill(dataset); 
                Close(); 
                return dataset; 
            } 
            public DataRow GetDataRow(String SqlString) 
            { 
                DataSet dataset = GetDataSet(SqlString); 
                dataset.CaseSensitive = false; 
                if(dataset.Tables[0].Rows.Count>0) 
                { 
                    return dataset.Tables[0].Rows[0]; 
                } 
                else 
                { 
                    return null; 
                } 
            } 
            public int ExecuteSQL(String SqlString) 
            { 
                int conut = -1; 
                Open(); 
                try 
                { 
                    SqlCommand cmd =new SqlCommand(SqlString,Connection); 
                    conut = cmd.ExecuteNonQuery(); 
                } 
                catch 
                { 
                    conut = -1; 
                } 
                finally 
                { 
                    Close(); 
                } 
                return conut;             } 
            #region IDisposable 成员             void IDisposable.Dispose() 
            { 
                throw new Exception("The method or operation is not implemented."); 
            }             #endregion 
        }  
} 大家帮我看一下以上的两个类!~~~~我调试时在db.GetDataSet()出错了!~~~~ 
无法将类型“System.Data.DataSet”隐式转换为“MyChatRoom.DataAccessLayer.Database“ 大家帮忙改一改

解决方案 »

  1.   

     public static Database LoadTop10() 
            { 
                Database db = new Database(); 
                string sql = "select top10 * from [Message] order by CreateTime desc"; 
                Database ds=db.GetDataSet(sql); 
                return ds; 
            } 
    Database 是什么?db.GetDataSet(sql)的返回类型是DataSet,这样当然有问题了。
      

  2.   

    另外getDataSet()是返回一个DataSet类型.而你的DataBase没有继承它
      

  3.   

    public static Database LoadTop10() 
            { 
                Database db = new Database(); 
                string sql = "select top10 * from [Message] order by CreateTime desc"; 
                Database ds=db.GetDataSet(sql); 
                return ds; 
            } 
    你是不是想获取前10条记录,用数据集保存就行了;
    public static DataSet LoadTop10() 
            { 
                string sql = "select top10 * from [Message] order by CreateTime desc"; 
                DataSet ds=db.GetDataSet(sql); 
                return ds; 
            } 
      

  4.   

    想要也行啊,那你把下面的方法
    public DataSet GetDataSet(String SqlString) 
                { 
                    Open(); 
                    SqlDataAdapter adapter = new SqlDataAdapter(SqlString, Connection); 
                    DataSet dataset = new DataSet(); 
                    adapter.Fill(dataset); 
                    Close(); 
                    return dataset; 
                } 的返回值类型改成DataBase也行,不过你还是会出现同样的问题的,就是说DataSet无法转换成DataBase.
      

  5.   

    三楼~~~不要db.DetDataSet的话!~~那下面的db.Database不就成了没有定义的变量了??
      

  6.   

    现在的问题是你没有弄清楚DataSet和DataBase之间的关系,DataBase是你自己写的类,你既没有继承DataSet也没有其他和DataSet有关的操作,那你怎么能将两者联系上呢?它们两之间又无法转换;
      

  7.   

    不好意思,我看错了
     public static Database LoadTop10() 
            { 
                Database db = new Database(); 
                string sql = "select top10 * from [Message] order by CreateTime desc"; 
                Database ds=db.GetDataSet(sql); 
                return ds; 
            } 
    只要改成
     public static DataSet LoadTop10() 
            { 
                Database db = new Database(); 
                string sql = "select top10 * from [Message] order by CreateTime desc"; 
                DataSet ds=db.GetDataSet(sql); 
                return ds; 
            } 
      

  8.   

    改成public static DataSet LoadTop10() 
            { 
                Database db = new Database(); 
                string sql = "select top10 * from [Message] order by CreateTime desc"; 
                DataSet ds=db.GetDataSet(sql); 
                return ds; 
            }这样后!~~~return的值ds不是又不能转换了??
      

  9.   

    你是说转换成DataBase吗?那又回到了这个问题了。
    要不你试试强制转换
    DataBase a=(DataBase)ds;
    应该也是不行的。
      

  10.   

    我想!!~~~Database类下有个DataSet方法!~~那这样算不算是有联系了??
      

  11.   

    晕!CSDN可以在线聊的,不过还是加你算了。