当前位置:编程学习 > C#/ASP.NET >>

C#连接oracle

捣鼓了一天了,崩溃了。。
在做一个项目需要连接多种数据库 mssql mysql 都很简单的连接成功,可操蛋的oracle就是连接不上
查了很多资料,又说oracle目录权限的,有说环境变量的,还说要安装客户端!客户端5 6百M,坑爹啊!!!
我用SqlDeveloper远程很简单就连上了,说明数据库配置没有问题,对oracle不熟悉,请高人指点。

--------------------编程问答-------------------- 贴你的连接字符串出来瞅瞅 --------------------编程问答--------------------

OracleConnection conn = null;
string fuwuqi = this.textBox1.Text.ToString();
            string shili = this.textBox2.Text.ToString();
            string user = this.textBox3.Text.ToString();
            string pwd = this.textBox4.Text.ToString();
            string connString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + fuwuqi + ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=" + shili + ")));User Id=" + user + ";Password=" + pwd + ";";
            conn = new OracleConnection(connString);
--------------------编程问答-------------------- debug报什么错误?

引用
C# code?12345678 OracleConnection conn = null; string fuwuqi = this.textBox1.Text.ToString();             string shili = this.textBox2.Text.ToString();             string user = this.textBox3.Text.ToString();             string pwd = this.textBox4.Text.ToString();             string connString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" + fuwuqi + ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=" + shili + ")));User Id=" + user + ";Password=" + pwd + ";";             conn = new OracleConnection(connString); 

可能是你的连接字符串有问题 --------------------编程问答-------------------- 各种字符串都试过了 2#的也试过
用OLE也连过。。。

老是报错 System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本 --------------------编程问答-------------------- 各位高人你们都练成功过吗? --------------------编程问答--------------------

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;

namespace ScanWebService
{
    public class Oracle
    {
        public OracleConnection conn;
        private readonly string connectionString = "data source=JYDB;user=cserp;password=cserp;";
        private bool Open()
        {
            // 打开数据库连接
            if (conn == null)
            {
                conn = new OracleConnection(connectionString);
            }
            else
            {
                conn.Close();
                conn.Dispose();
                conn = new OracleConnection(connectionString);

            }
            if (conn.State == System.Data.ConnectionState.Closed)
                try
                {

                    conn.Open();

                }
                catch (OracleException e)
                {
                    conn.Close();
                    conn.Dispose();
                    return false;

                }
            return true;


        }

        


        public int test(string id,string name) {
            this.Open();
            string sql = "insert into A_TEST(id,name) values(:id,:name)";
            OracleCommand cmd = new OracleCommand(sql, conn);
            OracleParameter pari = new OracleParameter(":id", id);
            cmd.Parameters.Add(pari);  
            OracleParameter parn = new OracleParameter(":name", name);
            cmd.Parameters.Add(parn);
            int result = cmd.ExecuteNonQuery();
            conn.Close();
            cmd.Dispose();
            return result; 


        }
    }
}


--------------------编程问答--------------------
引用 6 楼 whf102611 的回复:

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;

namespace ScanWebService
{
    public class Oracle
    {
        public OracleConnection conn;
        private readonly string connectionString = "data source=JYDB;user=cserp;password=cserp;";
        private OraOLEDB.dllol Open()
        {
            // 打开数据库连接
            if (conn == null)
            {
                conn = new OracleConnection(connectionString);
            }
            else
            {
                conn.Close();
                conn.Dispose();
                conn = new OracleConnection(connectionString);

            }
            if (conn.State == System.Data.ConnectionState.Closed)
                try
                {

                    conn.Open();

                }
                catch (OracleException e)
                {
                    conn.Close();
                    conn.Dispose();
                    return false;

                }
            return true;


        }

        


        public int test(string id,string name) {
            this.Open();
            string sql = "insert into A_TEST(id,name) values(:id,:name)";
            OracleCommand cmd = new OracleCommand(sql, conn);
            OracleParameter pari = new OracleParameter(":id", id);
            cmd.Parameters.Add(pari);  
            OracleParameter parn = new OracleParameter(":name", name);
            cmd.Parameters.Add(parn);
            int result = cmd.ExecuteNonQuery();
            conn.Close();
            cmd.Dispose();
            return result; 


        }
    }
}


这位大哥,JYDB是数据库名?我需要远程连接 --------------------编程问答-------------------- 连接oracle需不需要再本地安装什么组件啊?连Mysql我是添加了个COM组件才连接成功的 --------------------编程问答-------------------- JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊 --------------------编程问答-------------------- 连接字符串1: 
                   OracleConnection orcl_conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.251)(PORT=1521))(CONNECT_DATA=(SID=abc)));User Id=sys;Password=123456;");
                    orcl_conn.Open();

2:Data Source=192.168.1.251;User Id=sys;Password=123456;
--------------------编程问答--------------------
引用 9 楼 whf102611 的回复:
JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊

那我自己开发程序也需要安装客户端?发布程序的时候还得让用户自己安装客户端?那oracle也太操蛋了吧
还有客户端是哪个? --------------------编程问答--------------------
引用 11 楼 wodemuyecun 的回复:
Quote: 引用 9 楼 whf102611 的回复:

JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊

那我自己开发程序也需要安装客户端?发布程序的时候还得让用户自己安装客户端?那oracle也太操蛋了吧
还有客户端是哪个?

你没装客户端就连了?话说装了客户端自己的机子卡的要死了,太大了,如果是用的时候一般都禁止它,实在是大 --------------------编程问答--------------------
引用 12 楼 u011130289 的回复:
Quote: 引用 11 楼 wodemuyecun 的回复:

Quote: 引用 9 楼 whf102611 的回复:

JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊

那我自己开发程序也需要安装客户端?发布程序的时候还得让用户自己安装客户端?那oracle也太操蛋了吧
还有客户端是哪个?

你没装客户端就连了?话说装了客户端自己的机子卡的要死了,太大了,如果是用的时候一般都禁止它,实在是大

远程连接都必须装那玩意?Mysql MSSQL SyBase都不需要安装什么客户端,用ODBC 或OLE什么的就可以连了啊,Oracle这么麻烦? --------------------编程问答-------------------- 还有我用SQLDeveloper连接远程oracle也没装什么客户端就连接成功了啊。。 --------------------编程问答--------------------
引用 13 楼 wodemuyecun 的回复:
Quote: 引用 12 楼 u011130289 的回复:

Quote: 引用 11 楼 wodemuyecun 的回复:

Quote: 引用 9 楼 whf102611 的回复:

JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊

那我自己开发程序也需要安装客户端?发布程序的时候还得让用户自己安装客户端?那oracle也太操蛋了吧
还有客户端是哪个?

你没装客户端就连了?话说装了客户端自己的机子卡的要死了,太大了,如果是用的时候一般都禁止它,实在是大

远程连接都必须装那玩意?Mysql MSSQL SyBase都不需要安装什么客户端,用ODBC 或OLE什么的就可以连了啊,Oracle这么麻烦?

远程可以不用装的,http://wenku.it168.com/d_000265853.shtml --------------------编程问答--------------------
引用 13 楼 wodemuyecun 的回复:
Quote: 引用 12 楼 u011130289 的回复:

Quote: 引用 11 楼 wodemuyecun 的回复:

Quote: 引用 9 楼 whf102611 的回复:

JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊

那我自己开发程序也需要安装客户端?发布程序的时候还得让用户自己安装客户端?那oracle也太操蛋了吧
还有客户端是哪个?

你没装客户端就连了?话说装了客户端自己的机子卡的要死了,太大了,如果是用的时候一般都禁止它,实在是大

远程连接都必须装那玩意?Mysql MSSQL SyBase都不需要安装什么客户端,用ODBC 或OLE什么的就可以连了啊,Oracle这么麻烦?
不知道LZ是远程连接,我看了上面的代码以为LZ本地连接呢 --------------------编程问答--------------------
引用 16 楼 u011130289 的回复:
Quote: 引用 13 楼 wodemuyecun 的回复:

Quote: 引用 12 楼 u011130289 的回复:

Quote: 引用 11 楼 wodemuyecun 的回复:

Quote: 引用 9 楼 whf102611 的回复:

JYDB 是本地配的服务名a,你连oracle,在本地先装客户端啊。配好了客户端,就可以连了啊

那我自己开发程序也需要安装客户端?发布程序的时候还得让用户自己安装客户端?那oracle也太操蛋了吧
还有客户端是哪个?

你没装客户端就连了?话说装了客户端自己的机子卡的要死了,太大了,如果是用的时候一般都禁止它,实在是大

远程连接都必须装那玩意?Mysql MSSQL SyBase都不需要安装什么客户端,用ODBC 或OLE什么的就可以连了啊,Oracle这么麻烦?
不知道LZ是远程连接,我看了上面的代码以为LZ本地连接呢
难道你们做项目都是本地连的?没有远程连接过? --------------------编程问答-------------------- 我记着以前在Linux下用OTL连过,也没这么费劲! --------------------编程问答-------------------- 需要安装客户端的,以前用VB里,应用程序要与数据连接的机子上都要安装客户端,配置也麻烦,记得要修改oracle客户端安装目录中的tnsnames.ora文件.也有方法说不用安装客户端的,看http://download.csdn.net/detail/gaohuaiyan/782720
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,