VS2010连接Oracle11g数据库

一、使用Oracle.DataAccess.dll

在数据库ODT.Net的bin\2.x目录下找到Oracle.DataAccess.dll,添加引用到当前项目。




添加OracleDataAccess命名空间

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OracleDataAccess;

在单击按钮事件下,添加连接数据库代码

(2)

private void button1_Click(object sender, EventArgs e)
        {
            string oradb = "Data Source=Orcl;User ID=hr;Password=hr;";

            OracleConnection conn = new OracleConnection(oradb);
          //  OracleConnection conn = new OracleConnection(); // C#
          //  conn.ConnectionString = oradb;

            conn.Open();
            string sql = " select department_name from departments where department_id = 10"; // C#
            OracleCommand cmd = new OracleCommand(sql, conn);
            cmd.CommandType = CommandType.Text;

            OracleDataReader dr = cmd.ExecuteReader(); // C#
            dr.Read();

            label1.Text = dr["department_name"].ToString(); // C# retrieve by column name
            label1.Text = dr.GetString(0).ToString();  // return a .NET data type
            label1.Text = dr.GetOracleString(0).ToString();  // return an Oracle data type

            label1.Text = dr.GetInt16("department_id").ToString();
            /*
             {
    conn.Open();

    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "select department_name from departments where department_id = 10";
    cmd.CommandType = CommandType.Text;
        
    OracleDataReader dr = cmd.ExecuteReader();
    dr.Read();

    label1.Text = dr.GetString(0);
}


             */

            /*
             try
{
    conn.Open();

    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "select department_name from departments where department_id = " + textBox1.Text;
    cmd.CommandType = CommandType.Text;

    if (dr.Read()) // C#
    {
        label1.Text = dr["department_name"].ToString();
                   // or use dr.GetOracleString(0).ToString()
    }
}
catch (Exception ex) // catches any error
{
    MessageBox.Show(ex.Message.ToString());
}
finally
{
    // In a real application, put cleanup code here.
}


             */
        }
单击按钮,返回如下界面


-------------------------------------------------------------------------------------------------------------------------

二、System.Data.OracleClient

Oracle开发工具:VS2010

数据库:oracl 11g

在连接oracle数据时,我们需要做以下的工作:

1、添加 oracleclient 引用和Configuration引用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
using System.Configuration;


2、配置app.config

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="Orcl" connectionString="Data Source=Orcl;User ID=hr;Password=hr;"/>
  </connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>


3、编写数据库操作代码:

 private void button1_Click(object sender, EventArgs e)
        {
            string oradb = ConfigurationManager.ConnectionStrings["Orcl"].ToString();
            OracleConnection conn = new OracleConnection(oradb);
          

            conn.Open();
            string sql = " select department_name from departments where department_id = 10"; // C#
            OracleCommand cmd = new OracleCommand(sql, conn);
            cmd.CommandType = CommandType.Text;

            OracleDataReader dr = cmd.ExecuteReader(); // C#
            dr.Read();

            label1.Text = dr["department_name"].ToString(); // C# retrieve by column name
            label1.Text = dr.GetString(0).ToString();  // return a .NET data type
            label1.Text = dr.GetOracleString(0).ToString();  // return an Oracle data type

 
        }

与第一种方法返回相同结果。

修改数据库

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;
using System.Configuration;

namespace OracleAccess
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string oradb = ConfigurationManager.ConnectionStrings["Orcl"].ToString();
            OracleConnection conn = new OracleConnection(oradb);

            try
            {
                conn.Open();
                string sql = " select department_name from departments where department_id = 10"; // C#
                OracleCommand cmd = new OracleCommand(sql, conn);
                cmd.CommandType = CommandType.Text;

                OracleDataReader dr = cmd.ExecuteReader(); // C#
                while(dr.Read())
                {
                    label1.Text = dr["department_name"].ToString(); // C# retrieve by column name
                    label1.Text = dr.GetString(0).ToString();  // return a .NET data type
                    label1.Text = dr.GetOracleString(0).ToString();  // return an Oracle data type
                }
                dr.Close();//关闭reader.这是一定要写的  
            }
            catch
            {
                MessageBox.Show("erro");//如果发生异常,则提示出错  
            }
            finally
            {
                conn.Close();//关闭打开的连接  
            }

          
 
        }

        private void button2_Click(object sender, EventArgs e)
        {
            #region 从region到endregion是手工写的。别的都是系统自动生成的
            string oradb = ConfigurationManager.ConnectionStrings["Orcl"].ToString();
            OracleConnection conn = new OracleConnection(oradb);
           
            try
            {
                conn.Open();//打开指定的连接  
                OracleCommand com = conn.CreateCommand();
                com.CommandText = "update departments set department_name='archie' where department_id = 10";//写好想执行的Sql语句  
                com.ExecuteNonQuery();

            }
            catch
            {
                MessageBox.Show("erro");//如果发生异常,则提示出错  
            }
            finally
            {
                conn.Close();//关闭打开的连接  
            }

            #endregion  
        }
    }
}
点击更改,再重新查询


增删改查,以下还未实验

以users表为例,有三个字段,自增长的编号id,int类型;名称name,nvarchar类型,密码pwd,nvarchar类型
引入System.Data.OracleClient;命名空间

      

private void button3_Click(object sender, EventArgs e)
        {
             string oradb = ConfigurationManager.ConnectionStrings["Orcl"].ToString();
            OracleConnection conn = new OracleConnection(oradb);
           
            try
            {
                conn.Open();//打开指定的连接  
                string sql = "insert into departments(department_id,department_name,manager_id,location_id)values(:department_id:department_name,:manager_id,:location_id)";
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleParameter parn = new OracleParameter(":department_id", 1);
                cmd.Parameters.Add(parn);
                OracleParameter parp = new OracleParameter(":department_name","archie");
                cmd.Parameters.Add(parp);
                parn = new OracleParameter(":manager_id", 12);
                cmd.Parameters.Add(parn);
                parp = new OracleParameter(":location_id", 23);
                cmd.Parameters.Add(parp);
                int result = cmd.ExecuteNonQuery(); //result接收受影响行数,也就是说result大于0的话表示添加成功
                cmd.Dispose();
            }
            catch
            {
                MessageBox.Show("erro");//如果发生异常,则提示出错  
            }
            finally
            {
                conn.Close();//关闭打开的连接  
            } 
                 
        }

  



publicint Insert(stringname, string pwd)

        {

           OracleConnection conn = new OracleConnection(@"Data Source=SBZX;User ID=simis;Password=zeda");

            conn.Open();

            stringsql = "insert into users(name,pwd)values(:name,:pwd)";

            OracleCommand  cmd = new OracleCommand(sql,conn);

            OracleParameter  parn = new OracleParameter(":name", name);

           cmd.Parameters.Add(parn);

            OracleParameter parp = new OracleParameter(":pwd", name);

           cmd.Parameters.Add(parp);

            int result = cmd.ExecuteNonQuery(); //result接收受影响行数,也就是说result大于0的话表示添加成功

            conn.Close();

            cmd.Dispose();

            return result;         

        }

        publicint Update(int id)

        {

            OracleConnectionconn = new OracleConnection(@"Data Source=SBZX;User ID=simis;Password=zeda");

            conn.Open();

            stringsql = "delete from users where id=:id";

            OracleCommandcmd = new OracleCommand(sql,conn);

            OracleParameterpari = new OracleParameter(":id", id);

           cmd.Parameters.Add(pari);      

            int result = cmd.ExecuteNonQuery();  //result接收受影响行数,也就是说result大于0的话表示添加成功

            conn.Close();

            cmd.Dispose();

            return result;          

       }

        publicint Insert(stringname, string pwd, intid)

        {

            OracleConnectionconn = new OracleConnection(@"Data Source=SBZX;User ID=simis;Password=zeda");

            conn.Open();

            stringsql = "update users set name=:name,pwd=:pwdwhere id=:id";

            OracleCommandcmd = new OracleCommand(sql,conn);

            OracleParameterparn = new OracleParameter(":name", name);

           cmd.Parameters.Add(parn);

            OracleParameterparp = new OracleParameter(":pwd", name);

           cmd.Parameters.Add(parp);        

            OracleParameterpari = new OracleParameter(":id", id);

            cmd.Parameters.Add(pari); 

            intresult = cmd.ExecuteNonQuery();

            conn.Close();

            cmd.Dispose();

            returnresult;        

        }

        publicDataTable Select()

        {

            OracleConnectionconn = new OracleConnection(@"Data Source=SBZX;User ID=simis;Password=zeda");

            conn.Open();

            stringsql = "select * from users";

            OracleCommandcmd = new OracleCommand(sql,conn);

            OracleDataAdapteroda = new OracleDataAdapter(cmd);

            DataTable dt = new DataTable();

            oda.Fill(dt);

            conn.Close();

            cmd.Dispose();

            return dt;        

        }

方法写好后,下面举一个查询的例子,在form窗体中拖一个DataGridView,然后在Load方法中
    private void Form1_Load(object sender, EventArgs e)
        {
              dataGridView1.DataSource = Select();
        }
这样一运行,DataGridView中就会显示数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值