(1)OracleClient数据库操作(淘汰)
一、数据库连接
Oracle 数据提供程序,位于System.Data.OracleClient 命名空间.( .NET 4 以后的版本,会将不在维护和更新了)
第一步:引入命名空间
在程序的开头写上下面的代码
using System.Data.OracleClient;
第二步:引入对应组件
点击项目-右键-添加引用-找到System.Data.OracleClient-确定.

第三步:写代码
private void button1_Click(object sender, EventArgs e)
{
string str="server=.;data source=orcl;uid=xxx;pwd=xxx";
//上面这句需要安装Oracle客户端并配置tnsnames.ora
//string str = "User ID=xxx;Password=xxx;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)));";
//上面这句需要安装Oracle客户端不需配置tnsnames.ora
OracleConnection conn = new OracleConnection(str);
conn.Open();
if (conn.State == ConnectionState.Open)
{
MessageBox.Show("连接成功");
}
conn.Close();
}
database和data source的区别?
database是数据库的意思,用sqlserver数据库是需要用这个。
data source是数据资源的意思,用Oracle数据库时用这个。
if (conn.State == ConnectionState.Open)的意思?
用conn.State判断当前数据库是关闭还是打开的,而ConnectionState.Open得意思是打开。所以如果数据库是打开状态就可以为“真”。 这句话是用来判断数据库是不是打开状态的。(前提是要引用using System.Data;命名空间)
安装oracle后 tnsnames.ora文件目录
D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = ))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
二、执行sql语句(Command)
OracleCommand 命令对象的名称 =new OracleCommand(SQL语句,连接对象名称);
共分为两种操作:增删改和查询操作
当需要使用增删改操作时
string str1="insert into student values(1,'tom')";
OracleCommand cmd = new OracleCommand(str1,conn);
cmd.ExecuteReader();
当需要查询时
string str1="select * from student";
OracleCommand cmd = new OracleCommand(str1,conn);
OracleDataReader dr=cmd.ExecuteReader();//把查询的结果传给OracleDataReader的对象
//下一步读取数据
读取数据
OracleDataReader对象获取到值以后就需要读取数据了
首先
dr.read();//把箭头指向表格的第一行,第一列
然后
dr["表的字段名"]或者dr[下标数字(相当于数组)] 就可以读取指定的数据了
假设
表格的第一个字段是id,第二个字段是name
例如
dr["id"] 或者dr[0] 就能读出第一行第一列的数据
dr["name"]或者di[1]就能读出第一行第二列的数据
如果想要第二行的数据就需要用到循环
while (dr.Read())//假设这是一个控制台程序
{
Console.Write(dr[]);
Console.WriteLine(dr[]);
}
command 有三个常用方法
1、
cmd.ExecuteNonQuery();//执行sql语句并返回受影响的行数。通常用来执行增删改。
2、
OracleDataReader dr=cmd.ExecuteReader();//执行sql语句并把查询的内容放到OracleDataReader对象里。用来做查询
3、
cmd.ExecuteScalar();//执行sql语句,并返回结果集中的第一行第一列。通常和函数配合使用,为了计算某个值。
三、 DataReader
OracleDataReader的属性:HasRows 用来判断结果是否有数据,有的话返回True
if(dr.HasRows)
{
MessageBox.Show("数据表中有值");
}
OracleDataReader的方法:
dr.read();//
dr.Close();//关闭OracleDataReader对象。如果一个OracleConnection创建了多个OracleDataReader,则在创建OracleDataReader之前需要先管壁上一个。
四、数据适配器 DataAdapter对象
DataAdapter对象是一个数据适配器对象,在DataSet与数据源之间起到桥梁的作用。它有四个属性
1、 SelectCommand ,用来向数据库发送查询SQL语句
2、DeleteCommand,向数据库发送删除语句
3、InsertCommand,向数据库发送插入语句
4、UpdateCommand,向数据库发送更新语句
DataAdapter的方法
1 、Fill方法:用于填充DataSet数据集
da.Fill(ds,"student");//括号里的参数(Data对象,表名);
dataGridView1.DataSource = ds.Tables["表名"];
//或者dataGridView1.DataSource = ds.Tables[0];
2、Updata方法:用来更新数据库
增
五、数据集DataSet
(1)OracleClient数据库操作(淘汰)的更多相关文章
- c#数据库操作大全
原文:c#数据库操作大全 1.提取单条记录 //using System.Data; //using System.Data.SqlClient; using (SqlConnection cn = ...
- C# Oracle数据库操作类实例详解
本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...
- 使用ado.net打造通用的数据库操作类
最近在项目中使用中碰到了这样一种情况,查询的数据是从Oracle中获取的,但是记录下来的数据是存在Sql Server中(企业Oracle数据库管理太严,没办法操作).而且我在之前的工作中也碰到过使用 ...
- (转)C# Oracle数据库操作类
原文地址:http://www.cnblogs.com/haibing0107/p/6143922.html using System;using System.Data;using System.C ...
- Oracle数据库操作类及连接方法
创建DataBaseAccess引用库下面包括DBConnectionString.cs,DBType.cs ,SysName.cs 三个类 DBConnectionString: using Sys ...
- C# Oracle数据库操作类
using System; using System.Data; using System.Collections.Generic; using System.Configuration; using ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- MySQL 系列(二) 你不知道的数据库操作
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...
随机推荐
- 玩转Linux之pwd命令
玩转Linux之pwd命令 你有没有遇到过需要知道当前所在目录却无从得知?有没有想要复制出当前所在目录层次却不知如何下手?俗话说有困难找警察,想知道目录层次自然要找pwd了.那么问题来了: 什么是pw ...
- 程序员必备PC维修法(硬件篇)
自检自修不是万能,但不会自检自修却万万不能.程序员修电脑还是有必要的. 情景:通电情况下,电脑主机无法启动,所有主机内部硬件无反应. 原因:1.CPU.主板.电源积尘.(出现率30%) 2.CPU.主 ...
- Python网络编程(epoll内核监听,多任务多进程)
OJBK 接着昨天的说 select模块内的epoll函数还没说 说完epoll和本地套接字套接字基本就没了 今天主要是多进程 理论性东西比较多 主要是理解 epoll ...
- 孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第四天.今天的感觉是,mongoDB数据 ...
- 1155 Heap Paths (30 分)(堆+dfs遍历)
比较简单的一题 遍历左右的时候注意一下 #include<bits/stdc++.h> using namespace std; ; ]; ; vector<int>t; ve ...
- nyoj 题目21 三个水杯
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有 ...
- 再理一下prerouting和postrouting等插入点
这些地方的准确翻译是hook点(hook点是一个土的说法,学名叫rule chain,规则链)这些规则链是内核netfilter架构布置在内核里面的,然后iptables是利用了这套基础架构,想起了内 ...
- 前端构建工具gulpjs的使用介绍及技巧 (转)
gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nodejs中stream来读取和操作数据,其速 ...
- 【距离GDOI:128天】【POJ2778】DNA Sequence(AC自动机+矩阵加速)
已经128天了?怎么觉得上次倒计时150天的日子还很近啊 ....好吧为了把AC自动机搞透我也是蛮拼的..把1030和这道题对比了无数遍...最终结论是...无视时间复杂度,1030可以用这种写法解. ...
- task [最大权闭合子图]
题面 思路 其实仔细读透就发现,是一个最大权闭合子图的模型 套进网络流里面就挺好做的了 可以选择重载这道题里面的一些运算(加减,取最小值),这样比较方便 Code #include<iostre ...