C# 连接Oracle,进行查询,插入操作
注:OracleConnection和OracleCommand已被标注为[弃用的],可以使用System.Data.OleDb.OleDbConnection代替OracleCOnnection,使用System.Data.OleDb.OleDbCommand代替OracleCommand,并在连接字符串中的ConnectionString属性里增加"Provider=OraOLEDB.Oracle;"。
首先是在Oracle数据库中创建表:
Create Table Student(
S_ID VARCHAR2(40) default sys_guid() primary key,
STUDENT_ID CHAR(12),
STUDENT_Name VARCHAR2(20),
STUDENT_AGE VARCHAR2(10),
STUDENT_SEX VARCHAR2(10)
)
接着在配置文件中加入Oracle连接字符串:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<!--使用OleDbConnection时用该连接字符串-->
<!--<add name="DeviceDBConnection" connectionString="Provider=OraOLEDB.Oracle;User ID=JPVDS;Password=JPVDS_2015;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=16.130.2.14)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=myorcl)))"
providerName="System.Data.OracleClient"/>-->
<add name="DefaultDBConnection" connectionString="User ID=JPVDS;Password=JPVDS_2015;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=16.130.2.14)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=myorcl)))"
providerName="System.Data.OracleClient"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
然后是读取配置文件,连接数据库,进行增删改查操作,本人比较懒,直接贴代码了。
public class Program
{
//读取数据库连接字符串
string OracleStr = ConfigurationManager.ConnectionStrings["DefaultDBConnection"].ToString();
OracleConnection conn; /// <summary>
/// 连接数据库
/// </summary>
/// <param name="oracleStr">数据库连接字符串</param>
/// <returns></returns>
public OracleConnection ConnectionDB(string oracleStr)
{
OracleConnection conn = null;
try
{
conn = new OracleConnection(OracleStr);
//打开数据库
conn.Open();
}
catch (Exception ex)
{ }
return conn;
} /// <summary>
/// 插入操作
/// </summary>
/// <param name="student">需要插入的对象</param>
public void Insert(Student student)
{
string insertSqlStr = "insert into Student(Student_Id, Student_Name, Student_Age, Student_Sex)values(:Student_Id,:Student_Name,:Student_Age,:Student_Sex)";
try
{
OracleCommand cmd = new OracleCommand(insertSqlStr, conn);
cmd.Parameters.AddWithValue("Student_Id", student.student_Id);
cmd.Parameters.AddWithValue("Student_Name", student.student_Name);
cmd.Parameters.AddWithValue("Student_Age", student.student_Age);
cmd.Parameters.AddWithValue("Student_Sex", student.student_Sex);
cmd.ExecuteNonQuery();
Console.WriteLine(string.Format("添加{0}成功!", student.student_Name));
}
catch(Exception ex)
{
Console.WriteLine(string.Format("添加{0}失败!", student.student_Name));
}
} /// <summary>
/// 查询操作,查询全部内容
/// </summary>
/// <returns>返回学生列表</returns>
public List<Student> Query()
{
string querySqlStr = "select * from student";
List<Student> studentList = new List<Student>();
try
{
OracleCommand cmd = new OracleCommand(querySqlStr, conn);
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
Student student = new Student(dr.GetValue().ToString(), dr.GetValue().ToString(),
dr.GetValue().ToString(), dr.GetValue().ToString());
studentList.Add(student);
}
}
}
catch (Exception ex) { }
return studentList;
} /// <summary>
/// 操作
/// </summary>
public void operation()
{
conn = ConnectionDB(OracleStr);
Student student1 = new Student("", "", "", "男");
Student student2 = new Student("", "香蕉", "", "男");
Insert(student1);
Insert(student2);
List<Student> studentList = Query();
foreach(var student in studentList)
{
Console.WriteLine("~~~~~~~~~~~~~~~~");
Console.WriteLine(string.Format("学号:{0}",student.student_Id));
Console.WriteLine(string.Format("姓名:{0}",student.student_Name));
Console.WriteLine(string.Format("年龄:{0}",student.student_Age));
Console.WriteLine(string.Format("性别:{0}",student.student_Sex));
}
conn.Close();
} static void Main(string[] args)
{
Program program = new Program();
program.operation();
}
}
Student学生类
/// <summary>
/// 学生类
/// </summary>
public class Student
{
/// <summary>
/// ID
/// </summary>
public string id { get; set; } /// <summary>
/// 学生学号
/// </summary>
public string student_Id { get; set; } /// <summary>
/// 学生姓名
/// </summary>
public string student_Name { get; set; } /// <summary>
/// 学生年龄
/// </summary>
public string student_Age { get; set; } /// <summary>
/// 学生性别
/// </summary>
public string student_Sex { get; set; } public Student() { } public Student(string s_Id,string s_Name,string s_Age,string s_Sex)
{
this.student_Id = s_Id;
this.student_Name = s_Name;
this.student_Age = s_Age;
this.student_Sex = s_Sex;
}
}
C# 连接Oracle,进行查询,插入操作的更多相关文章
- C#连接Oracle数据库查询数据
C#连接Oracle数据库可以实现许多我们需要的功能,下面介绍的是C#连接Oracle数据库查询数据的方法,如果您对C#连接Oracle数据库方面感兴趣的话,不妨一看. using System; u ...
- Python连接Oracle数据查询导出结果
python连接oracle,需用用到模块cx_oracle,可以直接pip安装,如网络不好,可下载离线后本地安装 cx_oracle项目地址:https://pypi.org/project/cx_ ...
- springmvc+mybatis+redis实现查询插入操作
最近在学习redis,虽然现在还不是很熟练.不过可以进行简单的框架整合开发. IDE:我使用的是IDEA.springmvc+spring+mybatis的整合这个我就不多说了,下面我们先进行这块的整 ...
- Java通过JDBC连接Oracle之后查询结果和在sqlplus查询结果不一样
问题描述: 在sqlplus 下 orcl数据库中创建一张表后,使用insert语句插入几条数据 然后用java查询数据,发现在终端中输出的结果和在sqlplus中查询结果不一样. 在sqlplus中 ...
- C#连接oracle 数据库查询时输入中文查询不出来,用plsql就可以
查询语句为:select * from Per where khmc like '%李%',其实是字符集的问题. 解决方案:在连接字符串加一个“Unicode=True;”
- Oracle 数据库中日期时间的插入操作
Oracle 中如何插入日期时间类型的数据,首先为了演示, 新建数据表如下 create table t( mydate date); 插入日期时间 SQL> insert into t val ...
- python中的MySQL数据库操作 连接 插入 查询 更新 操作
MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维 ...
- linux shell脚本连接oracle查询数据插入文件和日志文件中
#!/bin/sh sqlplus "用户名/密码@数据库"<<EOF 或者只有一个库的 :sqlplus "用户名/密码"<<EOF ...
- ORACLE查询当前连接的用户信息及操作的SQL语句
ORACLE--查询当前连接的用户信息及操作的SQL语句 select sid, status, v$session.username 用户名, last_call ...
随机推荐
- NuGet文件下载与应用
nuget是一款.net下强大的包管理开发工具,Visual Studio 2013和Visual Studio 2015都缺省支持Nuget.在线开发能享受到Nuget的便利,但是如果是离线开发,还 ...
- SQLite Mysql 模糊查找(like)
select UserId,UserName,Name,Sex,Birthday,Height,Weight,Role from xqhit_Users where UserName like &qu ...
- 【Android 多媒体应用】使用MediaCodec解码使用AudioTrack播放音频数据
1.MainActivity.java import android.app.Activity; import android.os.Bundle; import android.os.Environ ...
- each和foreach的区别
each和foreach的区别是什么,我一直忘了还有这一茬,现在把这个总结一下,以备后用. 1.foreach是js的原生方法:each是jq的方法: 例如: var arr = ['mary','j ...
- 五,Smarty模板技术/引擎——自定义函数机制
自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...
- 微信小程序之tabbar切卡
最近在研究小程序的时候,遇到了一个问题,就是tabbar切卡,在android上有fragment,在RN上也有提供一个第三方的组件来用,微信小程序,好像没有专门的一个组件来实现这个功能,度娘了大半天 ...
- Nginx+Apache动静分离
Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术.动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项 针对PHP的动 ...
- Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?
DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...
- .net core webapi发布
地址:https://www.cnblogs.com/laozhang-is-phi/p/9565227.html#autoid-5-1-0 地址2:https://www.cnblogs.com/f ...
- train loss与test loss结果分析
train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test ...