c#编写的代码无法连接Oracle数据库问题

C#编写的代码无法连接Oracle数据库
我这里拿到的Oracle数据库配置是这样的,不知道我下面的代码对不对,请求指导

img

下面是代码:

using Oracle.ManagedDataAccess.Client;
        private OracleConnection myConnection;
        public void Open(string ip, string 数据库名, string 服务名称, string 用户名, string 密码)
        {
            //(SERVER=DEDICATED)
            string connectionString = "Password=" + 密码 + ";User ID=" + 用户名 + ";Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ip + ")(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=" + 服务名称 + ")));";
            try
            {
                // 建立连接
                myConnection = new OracleConnection(connectionString);

                // 打开连接
                myConnection.Open();
                MessageBox.Show("数据库已连接!");
            }
            catch ()
            {
                MessageBox.Show("数据库连接失败!");
            }
        }

你的本地有没有Oracle客户端程序,最好还是配置一个监听,Data Source写的太长,有的时候会因为链接字符串过长,链接失败

你的数据库连接串需要引用Oracle.DataAccess.dll
而你实际引用的dll需要连接本地oracle客户端,连接需要在客户端里配好,连接串里只需要填写连接名称而不要写协议和ip

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/231091
  • 除此之外, 这篇博客: 创建线程的两个方法(Oracle官网说两种)中的 一.有多少种实现多线程的方法? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.不同的角度有不同的答案
    2.典型的答案有两种,分别是实现Runnable接口和继承Thread类
    3.但是看原理,其实Thread类实现了Runnable接口,并且看Thread类的run方法,会发现其两者本质是一样的,run方法发代码如下:

    @Override
    Public void run(){
    	if(target != null){
    		target.run();
    	}
    }
    

    方法1和方法2,也就是说“实现Runnable类”和“继承Thread类然后重写run()”在实现多线程本质上,并没有区别,都最终调用了start()方法来新建线程,这两种方法主要区别在于run()方法来源:
    方法1:最终调用target.run();
    方法2:run()整个都被重写
    4.还有其他的实现线程的方法,例如线程池定时器等,他们也能新建线程,但是看源码,从没有逃出本质,也就是实现Runnable接口和继承Thread类。
    5.所以总结来说,我们只能通过新建Thread类这一种方式来创建线程,但是类里面的run方法有两种方式来实现,第一种是重写run方法,第二种实现Runnable接口的run方法,然后再把该runnable实例传递给Thread类。除此之外,从表象上看线程池,定时器等工具类也可以创建线程,但是它们的本质都逃不过上面的范围。

  • 以下回答由chatgpt基于相关博客总结生成:

    您好!根据您给出的问题和参考资料,目前我没有找到相关的C#代码。参考资料提到了一个超时任务的处理机制的实现,但没有给出具体的C#代码。要提供更准确的解决方案,需要更多的信息和具体的代码实现。如果您能提供更多的背景信息和要求,我可以更好地帮助您解决问题。如果您有任何其他问题或需要进一步的帮助,请随时告诉我。