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

ASP。NET select 连表查询问题
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();
什么时候,在什么情况下用哪个?


------解决方案--------------------
楼主应该用cmd.ExecuteReader();

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

执行查询数据集方法
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();