得到这个错误“;ORA-06413:连接未打开”;
本文关键字:连接 ORA-06413 错误 | 更新日期: 2023-09-27 18:19:32
我使用的是visual studio 2010和Oracle 10g。操作系统:Windows 7家庭基本版。如果我在visualstudio2005中使用以下代码,我将得到正确的输出。但在Visual Studio 2010中,我得到了一个错误
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OracleClient;
using System.Windows.Forms;
public partial class Default2 : System.Web.UI.Page
{
OracleConnection con = new OracleConnection("uid=scott;pwd=tiger;data source=");
OracleCommand cmd = new OracleCommand();
OracleDataReader dr;
string name1, pass1;
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
}
protected void Button1_Click(object sender, EventArgs e)
{
cmd = new OracleCommand("Select* from tb1 where name='" + TextBox1.Text + "'and pass='"+TextBox2.Text + "'", con);
dr = cmd.ExecuteReader();
while (dr.Read())
{
name1 = dr[0].ToString();
pass1 = dr[1].ToString();
}
if (name1 == TextBox1.Text && pass1 == TextBox2.Text)
{
Response.Redirect("Home.aspx");
}
else
{
MessageBox.Show("Incorrect user name or password");
}
}
}
这可能是定义连接的tnsnames.ora
的问题。
您可以使用以下连接字符串省略tnsnames.ora
:
OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = !!!!!!!!YOURDBNAME!!!!!!!!!)(SERVER = DEDICATED))); User Id=Scott;Password=tiger;");
从页面加载中删除打开的连接,并在执行之前添加以下内容:
if(con.State == ConnectionState.Closed)
{
con.Open();
}
dr = cmd.ExecuteReader();
请在硬盘上搜索名为tnsnames.ora
的文件,并在此处发布该文件的内容。
还有一些提示:
- 每次加载页面时,con对象都会被实例化并打开
- 单击按钮将强制执行页面加载和页面加载事件。请参阅"通用页面生命周期阶段"
- 将代码移动到按钮clíck Handler
- MessageBox总是显示在服务器上,来自客户端的用户永远不会看到此消息。当您开发服务器和客户端时,它们位于同一台物理机器上
-
在
default2.aspx
中添加一个div。
并呼叫:
error.InnerText="Incorrect user name or password";
检查名称和密码两次,一次在SQL语句中,另一次在代码中。这更好:
dr.Read();
If (dr.HasRows())
Response.Redirect("Home.aspx");
else
error.InnerText="Incorrect user name or password";
您尚未将连接分配给命令,在执行命令之前需要以下内容:
cmd.Connection = con;
VS 2010:我想分享一个经验,当我通过WCF服务池化oracel连接并在开发服务器上托管WCF时。得到错误"ORA-06413:连接未打开"。找不到web serach的实际帮助。最后,我在生产服务器上部署了WCF的编译版本。当我使用我的应用程序中的WCF服务时,它对我有效…
希望这能帮助到面临同样问题的人。。。