string  conString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + Server.MapPath("News.mdb");
       OleDbConnection con = new OleDbConnection(conString);
       con.Open();
       OleDbCommand cmd = new OleDbCommand("select News_Main.Title,News_Menu.Name from News_Main,News_Menu where News_main.MenuID = News_Menu.MenuID", con);
       datagrid1.DataSource = cmd.ExecuteScalar();
       datagrid1.DataBind();
我使用的是ACCESS数据库,连表查询总要出错,请问怎么会事 ?News_Main 和 News_Menu 表
还有就是,我想问哈这三个有什么区别?cmd.ExecuteScalar();cmd.ExecuteReader();cmd.ExecuteNonQuery();
什么时候,在什么情况下用哪个?

解决方案 »

  1.   

    楼主应该用cmd.ExecuteReader();cmd.ExecuteScalar();返回第一行第一列
    cmd.ExecuteReader();相当于java中的ResultSet,它是一直与数据库连接的,但是只读向前,读取数据非常快,不过不能修改
    cmd.ExecuteNonQuery(); 执行增删改语句或存储过程
      

  2.   


    执行查询数据集方法
    class DBCon
    {
        public static DataSet executeQuery(string sql)
        {
            OleDbConnection con =new OleDbConnection(conString); 
            DataSet ds = new DataSet();
            OleDbDataAdapter dap = new OleDbDataAdapter(sql, con);
            dap.Fill(ds);
            return ds;
        }
    }
        DataSet ds=DBCon.executeQuery(sql);
        datagrid1.DataSource = ds;
        datagrid1.DataBind();