出现此错误" ORA-06413:连接未打开"

时间:2012-01-06 08:35:21

标签: c# visual-studio-2010 oracle10g

我正在使用visual studio 2010和Oracle 10g。操作系统:Windows 7家庭基础。如果我在visual studio 2005中使用以下代码,我将获得正确的输出。但在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");
        }
    }
}

5 个答案:

答案 0 :(得分:0)

您没有为命令分配连接,在执行命令之前需要类似下面的内容:

cmd.Connection = con;

答案 1 :(得分:0)

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;");

答案 2 :(得分:0)

从页面加载中删除打开的连接,并在执行前添加以下内容:

if(con.State == ConnectionState.Closed)
{
        con.Open();
}

dr = cmd.ExecuteReader();

答案 3 :(得分:0)

请在您的硬盘中搜索名为tnsnames.ora的文件,并在此处发布该文件的内容。

还有一些提示:

  • 每次页面加载时,con对象都会实例化并打开。
  • 按钮单击会强制页面加载和页面加载事件。请参阅“General Page Life-Cycle Stages”。
  • 将代码移至button-clíckHandler。
  • 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";

答案 4 :(得分:0)

VS 2010: 当我通过WCF服务汇集oracel连接并在开发服务器上托管该WCF时,我想分享经验。得到该错误“ORA-06413:连接未打开”。无法找到网页搜索的实际帮助。最后,我在生产服务器上部署了WCF的编译版本。当我从我的应用程序中使用该WCF服务时,它对我有用....

希望这可以帮助面临同样问题的人......