ADO.NET与Oracle(一):获取多行记录集

最近接触ADO.NET和Oracle,将我平常遇到的一些问题和大家共享。

我觉得要想入门ADO.NET操作Oracle,最基本的要求就是要会通过ADO.NET更新Oracle中的数据。

该文简单讲些利用Command对象更新数据库

所有内容基于VS2010和Oracle11g(32bit)

1、连接数据库

连接数据库依靠OracleConnection对象

OracleConnection con = new OracleConnection("data source=orcl;uid=system;pwd=********");

orcl是数据库的名字,这是安装oracle时系统默认的。

安装好数据库后,也可以通过Database Configuration Assistant工具来删除或创建数据库

uid是登录名,pwd是登陆口令

要想连接到数据库,只需执行con.Open()方法

而要断开连接时,只需执行con.Close()或con.Dispose()方法。

2、操作数据库

连接好数据库,就可以对数据库进行操作了

从最简单的操作做起,即从数据库中返回所有记录

现在在数据库中创建一个product表

如下:

ID Name Price Count
001 Apple 6 3
002 Orange 5 4
003 Pear 4 2

上表记录了苹果和橙子的ID以及单价和数量。

其中ID、Name都是varchar类型的数据,而Price和Count都是Number类型的数据

现在尝试读取表中的所有数据,再将这些数据完全显示的屏幕上。

代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OracleClient;

namespace DataReader
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (OracleConnection con = new OracleConnection("data source=orcl;uid=system;pwd=wu92890910xu"))
                {
                    using (OracleCommand cmd = new OracleCommand("select * from product", con))
                    {
                        con.Open();

                        OracleDataReader dataReader = cmd.ExecuteReader();

                        if (dataReader.HasRows)
                            Console.WriteLine("读取到数据...");
                        else
                            Console.WriteLine("未读取到数据...");

                        while (dataReader.Read())
                        {
                            Console.WriteLine(dataReader.GetString(1) + ": " + dataReader.GetDouble(2) * dataReader.GetDouble(3));
                        }

                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }                                    

            Console.ReadKey();
        }
    }
}

你可以尝试把select * from product  改成select id,name from product之类的语句

附:如果要使用ADO.NET操作Oracle,必须包括命名空间

using System.Data.OracleClient;

该命名空间是由Oracle公司提供的,NET本身不提供。

如果你需要那个.dll文件,可以e-mail:[email protected]

时间: 2024-10-08 09:29:41

ADO.NET与Oracle(一):获取多行记录集的相关文章

Oracle EBS 获取完全的值集信息

SELECT fvs1.flex_value_set_name, fvs1.description, decode(upper(fvs1.longlist_flag), 'N', '值列表', 'Y', '长值列表', 'X', '弹出式列表') 列表类型, decode(upper(fvs1.security_enabled_flag), 'N', '无安全性', 'H', '分层安全性', 'Y', '不分层安全性') 安全性类型, decode(upper(fvs1.format_type

[转].net 调用oracle存储过程返回多个记录集

CREATE OR REPLACE PROCEDURE p_query_cs ( p_infotype IN VARCHAR2, p_fromareacode IN VARCHAR2, p_toareacode IN VARCHAR2, p_keytype IN NUMBER, r_cursor1 OUT sys_refcursor, --结果集 r_cursor2 OUT sys_refcursor --结果集 ) IS BEGIN OPEN r_cursor1 FOR SELECT * FR

oracle 与sql serve 获取随机行数的数据

Oracle 随机获取N条数据    当我们获取数据时,可能会有这样的需求,即每次从表中获取数据时,是随机获取一定的记录,而不是每次都获取一样的数据,这时我们可以采取Oracle内部一些函数,来达到这样的目的1) select * from (select * from tablename order by sys_guid()) where rownum < N; 2) select * from (select * from tablename order by dbms_random.va

ado.net 之 oracle 数据库

ado.net 操作oracle 数据库 跟操作mssql 的原来基本一样.只是使用不同的命名空间而已.下面举两个例子: 一. C#读取oracle数据库的表格 ///ado.net 读取table 列子 ///需要添加命名空间 : using System.Data.OracleClient //链接字符串 string connString = @"User ID=system;Password=123456;Data Source=(DESCRIPTION = (ADDRESS_LIST=

linux c 获取文件行数

源代码如下: /*获取文件行数*/ int file_wc(const char *filename) { int fd; register int linect = 0; char buf[MAXBSTZE]; int len; char *p = NULL; if(filename) { if((fd = open(filename, O_RDONLY)) < 0) { fprintf(stderr, "open %s\n",strerror(errno)); return

Oracle随机获取记录

1 SELECT A.* FROM TableA A CROSS JOIN (SELECT TRUNC(DBMS_RANDOM.VALUE(0, 999999999999999999999)) RANDOMNUM FROM DUAL) B ORDER BY B.RANDOMNUM Oracle随机获取记录,布布扣,bubuko.com

SQL Server获取指定行的数据

SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , number = row_number() over(order by Grade desc) from Students )  m where number = 2 --法二(排除法)--- select top 1 * from Students where Grade not in ( select top

mysql 行号 获取指定行数据

mysql 行号的实现 Select id,(@rowNum:[email protected]+1) as rowNo From first,(Select (@rowNum :=0) ) bOrder by first.id Desc 这样就可以实现mysql 的行号 获取指定行的数据可以使用limit 具体的使用如下: select * from first limit num,1 即可 mysql 行号 获取指定行数据,布布扣,bubuko.com

oracle函数获取汉字拼音的首字母

CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000); FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYI