Oracle sale什么意思,C# 读取 Oracle 数据库表的例子 SALE_REPORT

create table SALE_REPORT(SALE_DATE varchar2(20),SALE_MONEY NUMBER)

/

insert into SALE_REPORT values('2015-10-1',100)

/

insert into SALE_REPORT values('2015-10-1',200)

/

insert into SALE_REPORT values('2015-10-1',300)

/

insert into SALE_REPORT values('2015-10-2',300)

/

insert into SALE_REPORT values('2015-10-2',400)

/

insert into SALE_REPORT values('2015-10-3',500)

/

commit

/

select * from SALE_REPORT

/

SELECT

ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) desc) AS NO,

--ROW_NUMBER() OVER (ORDER BY SALE_DATE desc) AS NO,

SALE_DATE,

SUM(SALE_MONEY) AS SUM_MONEY

FROM SALE_REPORT

GROUP BY SALE_DATE

ORDER BY SUM(SALE_MONEY) DESC;

/

--drop table SALE_REPORT

/

//E:\learnProg\CSharp\A0170_Oracle.SampleApp\A0170_Oracle.SampleApp\ReadOracleData.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.OracleClient;

namespace A0170_Oracle.SampleApp

{

///

/// 用于 读取 Oracle 数据库 的例子.

///

/// 注意:这个例子所使用的 表 和 数据, 请参考项目下的 Schema.sql 文件。

///

///

class ReadOracleData

{

///

/// Oracle 的数据库连接字符串.

///

private const String connString =

@"data source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)));User Id=SCOTT;Password=tiger";

//@"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.210)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=TEST;Password=TEST123";

///

/// 用于查询的 SQL 语句.

///

private const String SQL =

@"

SELECT

ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) DESC) AS NO,

SALE_DATE,

SUM(SALE_MONEY) AS SUM_MONEY

FROM

SALE_REPORT

GROUP BY

SALE_DATE

ORDER BY

SUM(SALE_MONEY) DESC";

///

/// 将数据读取到 DataSet 中.

///

public void ReadDataToDataSet()

{

Console.WriteLine("使用DataAdapter,将数据填充到DataSet中,然后脱离数据库,直接对DataSet进行处理。");

// 建立数据库连接.

OracleConnection conn = new OracleConnection(connString);

// 创建一个适配器

OracleDataAdapter adapter = new OracleDataAdapter(SQL, conn);

// 创建DataSet,用于存储数据.

DataSet testDataSet = new DataSet();

// 执行查询,并将数据导入DataSet.

adapter.Fill(testDataSet, "result_data");

// 关闭数据库连接.

conn.Close();

// 处理DataSet中的每一行数据.

foreach (DataRow testRow in testDataSet.Tables["result_data"].Rows)

{

// 将检索出来的数据,输出到屏幕上.

Console.WriteLine("NO:{0} ; Date:{1} ; Money:{2} ",

testRow["NO"], testRow["SALE_DATE"], testRow["SUM_MONEY"]

);

}

}

///

/// 通过 Reader, 依次读取每一条数据.

///

public void ReadDataByReader()

{

Console.WriteLine("使用DataReader,逐行对查询结果进行处理。[处理过程必须保持数据库连接正常]");

// 建立数据库连接.

OracleConnection conn = new OracleConnection(connString);

// 打开连接.

conn.Open();

// 创建一个 Command.

OracleCommand testCommand = conn.CreateCommand();

// 定义需要执行的SQL语句.

testCommand.CommandText = SQL;

// 执行SQL命令,结果存储到Reader中.

OracleDataReader testReader = testCommand.ExecuteReader();

// 处理检索出来的每一条数据.

while (testReader.Read())

{

// 将检索出来的数据,输出到屏幕上.

Console.WriteLine("NO:{0} ; Date:{1} ; Money:{2} ",

testReader["NO"], testReader["SALE_DATE"], testReader["SUM_MONEY"]

);

}

// 关闭Reader.

testReader.Close();

// 关闭数据库连接.

conn.Close();

}

}

}

//E:\learnProg\CSharp\A0170_Oracle.SampleApp\A0170_Oracle.SampleApp\Program.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace A0170_Oracle.SampleApp

{

class Program

{

static void Main(string[] args)

{

ReadOracleData obj = new ReadOracleData();

obj.ReadDataByReader();

Console.WriteLine("==========================");

obj.ReadDataToDataSet();

}

}

}

/*

使用DataReader,逐行对查询结果进行处理。[处理过程必须保持数据库连接正常]

NO:1 ; Date:2015-10-2 ; Money:700

NO:2 ; Date:2015-10-1 ; Money:600

NO:3 ; Date:2015-10-3 ; Money:500

==========================

使用DataAdapter,将数据填充到DataSet中,然后脱离数据库,直接对DataSet进行处理。

NO:1 ; Date:2015-10-2 ; Money:700

NO:2 ; Date:2015-10-1 ; Money:600

NO:3 ; Date:2015-10-3 ; Money:500

请按任意键继续. . .

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值