C#连接Oracle数据库

实习期间接手一个开发WebService的任务,开发语言是C#,数据库是Oracle,当时并没有做过C#连接Oracle,网上关于C#连接Oracle的说法莫衷一是,
经过自己多次尝试找到可以正常访问Oracle数据库的方法。我连接Oracle采用的是动态链接库Oracle.ManagedDataAccess引用文件(这里说明一下
采用System.Data.OracleClient可能会报错"尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle客户端组件的
情况下运行,将出现此问题。")由于我没有安装Oracle客户端,所以采用PL/SQL工具查看数据库。需要在tnsnames.ora配置数据库,格式为:
数据库名=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库远程主机地址 )(PORT = 端口号))
    (CONNECT_DATA =
      (SERVER = 服务器)
      (SERVICE_NAME = 服务名)
    )
  )
再附上C#连接Oracle数据库代码:
using System.Data;
using Oracle.ManagedDataAccess.Client;
        public String OracleConnection()
        {
            try
            {
                string connString = "data source=此处放tnsnames.ora配置的"数据库名="后面的内容;User ID=数据库用户名;password=数据库密码";
                OracleConnection conn = new OracleConnection(connString);

                conn.Open();
                String sql = "select * from student";
                //getDataTable()是把查询结果封装到DataTable中的方法
                DataTable dataTable = getDataTable(sql, conn);
                //arrayConversion()是把DataTable转换成数组的方法
                String[] array = arrayConversion(dataTable);
                return array[0];
            }
            catch (Exception e)
            {
                return e.ToString();
            }
        }
        //将查询数据保存到DataTable中
        private DataTable getDataTable(string sqlSearch, OracleConnection conn)
        {
            OracleDataAdapter dataAdapter = new OracleDataAdapter(sqlSearch, conn);
            DataTable dataTable = new DataTable();
            dataAdapter.Fill(dataTable);
            dataTable.Dispose();
            return dataTable;
        }

        //将DataTable转换成字符串数组
        private string[] arrayConversion(DataTable dataTable)
        {
            int length = dataTable.Rows.Count;
            string[] strArray = new string[length];
            for (int i = 0; i < length; i++)
            {
                strArray[i] = dataTable.Rows[i][0].ToString();
            }
            return strArray;
        }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值