我用asp.net开发了一个系统,数据库是oracle,一直都没有问题的,昨天我在开发的系统中输入用户名和密码后就出现下面的错误了,我检查服务器上的oracle并没有出错,一切正常,我不知道是怎么回事,请高手帮忙:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
Error while trying to retrieve text for error ORA-12154
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OracleClient.OracleException: Error while trying to retrieve text for error ORA-12154
源错误:
行 27: OracleDataAdapter odaAdapter = new OracleDataAdapter(cmd);
行 28: DataSet dsDataSet = new DataSet();
行 29: odaAdapter.Fill(dsDataSet); //这里红色显示警告(由于这里没
有颜色设置,我自己添加的注释,
方便大家看问题)
行 30:
行 31: if(dsDataSet.Tables.Count != 0)
源文件: E:\project\yaya\yayasln\Framework\Authentication.cs 行: 29
堆栈跟踪:
[OracleException: Error while trying to retrieve text for error ORA-12154
]
System.Data.OracleClient.DBObjectPool.GetObject(Boolean& isInTransaction) +469
System.Data.OracleClient.OracleConnectionPoolManager.GetPooledConnection(String encryptedConnectionString, OracleConnectionString options, Boolean& isInTransaction) +165
System.Data.OracleClient.OracleConnection.OpenInternal(OracleConnectionString parsedConnectionString, Object transact) +836
System.Data.OracleClient.OracleConnection.Open() +32
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +38
TongHua.Framework.Authentication.ExecuteSql(String strSQL, OracleParameter[] commandParameters) in E:\project\yaya\yayasln\Framework\Authentication.cs:29
TongHua.Framework.Authentication.Login(String strUserName, String strPwd) in E:\project\yaya\yayasln\Framework\Authentication.cs:44
TongHua.Web.Pages.MainFrame.Login.btLogin_Click(Object sender, EventArgs e) in E:\project\yaya\yayasln\yayaerp\Login.aspx.cs:60
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
Error while trying to retrieve text for error ORA-12154
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.OracleClient.OracleException: Error while trying to retrieve text for error ORA-12154
源错误:
行 27: OracleDataAdapter odaAdapter = new OracleDataAdapter(cmd);
行 28: DataSet dsDataSet = new DataSet();
行 29: odaAdapter.Fill(dsDataSet); //这里红色显示警告(由于这里没
有颜色设置,我自己添加的注释,
方便大家看问题)
行 30:
行 31: if(dsDataSet.Tables.Count != 0)
源文件: E:\project\yaya\yayasln\Framework\Authentication.cs 行: 29
堆栈跟踪:
[OracleException: Error while trying to retrieve text for error ORA-12154
]
System.Data.OracleClient.DBObjectPool.GetObject(Boolean& isInTransaction) +469
System.Data.OracleClient.OracleConnectionPoolManager.GetPooledConnection(String encryptedConnectionString, OracleConnectionString options, Boolean& isInTransaction) +165
System.Data.OracleClient.OracleConnection.OpenInternal(OracleConnectionString parsedConnectionString, Object transact) +836
System.Data.OracleClient.OracleConnection.Open() +32
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +38
TongHua.Framework.Authentication.ExecuteSql(String strSQL, OracleParameter[] commandParameters) in E:\project\yaya\yayasln\Framework\Authentication.cs:29
TongHua.Framework.Authentication.Login(String strUserName, String strPwd) in E:\project\yaya\yayasln\Framework\Authentication.cs:44
TongHua.Web.Pages.MainFrame.Login.btLogin_Click(Object sender, EventArgs e) in E:\project\yaya\yayasln\yayaerp\Login.aspx.cs:60
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292
{
....
}
catch(Exception ex)
{
MessageBox.show(ex.Message);
}
finally
{
...
}
{
//ScriptMsgBox("UserName =" + tbUserName.Text.Trim()); bool bReturn = false;
string strUserID = tbUserName.Text.Trim(), strPwd = tbPwd.Text.Trim();
bReturn = Authentication.Login(strUserID, strPwd); if(false == bReturn)
{
Response.Write("您没有访问的权限!");
Response.End();
return;
} Session["UserID"] = tbUserName.Text.Trim(); if(Request["ReturnUrl"] == null)
{
System.Web.Security.FormsAuthentication.SetAuthCookie(strUserID, true);
//this.JumpMain();
Response.Redirect("Pages\\MainFrame\\MainForm.aspx");
}
else
{
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(strUserID, true);
}
}这是登陆按钮的代码,我点了一下就出现上面问题提示的错误,希望谁能告诉我try...catch如何写!!!
{
try{
//ScriptMsgBox("UserName =" + tbUserName.Text.Trim()); bool bReturn = false;
string strUserID = tbUserName.Text.Trim(), strPwd = tbPwd.Text.Trim();
bReturn = Authentication.Login(strUserID, strPwd); if(false == bReturn)
{
Response.Write("您没有访问的权限!");
Response.End();
return;
} Session["UserID"] = tbUserName.Text.Trim(); if(Request["ReturnUrl"] == null)
{
System.Web.Security.FormsAuthentication.SetAuthCookie(strUserID, true);
//this.JumpMain();
Response.Redirect("Pages\\MainFrame\\MainForm.aspx");
}
else
{
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(strUserID, true);
}
catch(Exception ex)
{
Response.write( ex );
} }
//另外在Authentication.Login(strUserID, strPwd);里面也可加上try...catch....finally
根据error ORA-12154 ,有可能是你的table与索引有关系统.
能描述一下你的Authentication.Login()所访问到的table设计情况.
/*==============================================================*/
/* Table: TB_ROLEINFO */
/*==============================================================*/
create table YAYA.TB_ROLEINFO (
GLOBALID VARCHAR2(36) not null,
ROLEID NUMBER not null,
DISCRIPTION VARCHAR2(32),
constraint PK_TB_ROLEINFO primary key (GLOBALID, ROLEID)
)
/
/*==============================================================*/
/* Table: TB_USERINFO */
/*==============================================================*/
create table YAYA.TB_USERINFO (
GLOBALID VARCHAR2(36) not null,
USERID VARCHAR2(16) not null,
PASSWORD VARCHAR2(16) not null,
ROLEID NUMBER,
USERNAME VARCHAR2(16),
constraint PK_TB_USERINFO primary key (GLOBALID, USERID)
)
/