我正在使用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");
}
}
}
答案 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
的文件,并在此处发布该文件的内容。
还有一些提示:
为您的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服务时,它对我有用....
希望这可以帮助面临同样问题的人......