我的函数为:
public string Dlookup(string table, string field, string sWhere)
{
string sSQL = "SELECT " + field + " FROM " + table + " WHERE " + sWhere; OleDbCommand command = new OleDbCommand(sSQL, Connection);
OleDbDataReader reader=command.ExecuteReader(CommandBehavior.SingleRow);
string sReturn; if (reader.Read()) 
{
sReturn = reader[0].ToString();
if (sReturn == null)
sReturn = "";

else 
{
sReturn = "";
} reader.Close();
return sReturn;
}在调用这个函数时
articler.Text=Utility.Dlookup("members","name","member_id='"+Session["UserID"].ToString().Trim()+"'").Trim();
总是出错!说System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配
请问这是怎么回事?

解决方案 »

  1.   

    跟蹤看看你的SQL語句是否正確。
    另外將表名Name-->[Name]試試〉
      

  2.   

    同意楼上在Access中,Name是关键字。必须得加上〔〕以区别
      

  3.   

    按你们的做法还是不行~
    OleDbException (0x80040e07): 标准表达式中数据类型不匹配。]
       System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
       System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
       System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleRow(tagDBPARAMS dbParams, Object& executeResult) +206
       System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +107
       System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
       System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
       System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) +69
       ArticleBBS.CCUtility.Dlookup(String table, String field, String sWhere) in C:\Inetpub\wwwroot\ArticleBBS\CCUtility.cs:256
       ArticleBBS.UserControl.UserLogin.Login_Show() in c:\inetpub\wwwroot\articlebbs\usercontrol\userlogin.ascx.cs:77
       ArticleBBS.UserControl.UserLogin.login_Click(Object sender, ImageClickEventArgs e) in c:\inetpub\wwwroot\articlebbs\usercontrol\userlogin.ascx.cs:131
       System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109
       System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
       System.Web.UI.Page.ProcessRequestMain() +1277最后我把数据库的字段名改成names却出现了
    IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。 
      

  4.   

    行 254:
    行 255: OleDbCommand command = new OleDbCommand(sSQL, Connection);
    行 256: OleDbDataReader reader=command.ExecuteReader(CommandBehavior.SingleRow);
    行 257: string sReturn;
    行 258:
      

  5.   

    先把你的sSQL Response.Write出来 看看对簿对, 空格啊的 什么的
      

  6.   

    我的另一个语句都可以啊
    Announce.Text=Utility.Dlookup("Announce","Announce","id=1").Trim();
    就是和
    welcome.Text=Utility.Dlookup("[members]","[names]","[member_id]='"+Session["UserID"]+"'").Trim();扯上关系的都不行
      

  7.   

    问题出在这里!"[member_id]='"+Session["UserID"]+"'"