我刚参加工作,让我们做一个已知SQL server表里的字段和Oracle表里的字段相同,用C#把SQL server里的数据导入到Oracle里!(最好有代码)

解决方案 »

  1.   

    给你个类:Database.cs
    ————————————————————
    using System;
    using System.ComponentModel;
    using System.Collections;
    using System.Diagnostics;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;namespace pmg.Components
    {
    /// <summary>
    /// 通用的数据库处理类,通过OLEDB与数据库连接
    /// </summary>
    public class Database : IDisposable
    {
    private OleDbConnection con; #region 执行SQL语句返回受影响的行数
    /// <summary>
    /// 执行SQL语句返回受影响的行数
    /// </summary>
    /// <param name="SqlStr">SQL语句</param>
    /// <returns>返回受影响的行数</returns>
    public int RunSql(string SqlStr)
    {
    OleDbCommand cmd=this.CreateSql(SqlStr,null);
    int i=cmd.ExecuteNonQuery();
    this.Close();
    return i;
    }
    #endregion #region 执行SQL查询语句并返回第一行的第一列
    /// <summary>
    /// 执行SQL查询语句并返回第一行的第一列
    /// </summary>
    /// <param name="SqlStr">SQL语句</param>
    /// <returns>第一行的第一列</returns>
    public object RunSql_ReturnValue(string SqlStr)
    {
    OleDbCommand cmd=this.CreateSql(SqlStr,null);
    object i=cmd.ExecuteScalar();
    this.Close();
    return i;
    }
    #endregion #region 执行SQL语句返回OleDbDataReader对象
    /// <summary>
    /// 执行SQL语句返回OleDbDataReader对象
    /// </summary>
    /// <param name="SqlStr">SQL语句</param>
    /// <param name="dataReader">要返回OleDbDataReader对象</param>
    public void RunSql(string SqlStr,out OleDbDataReader dataReader)
    {
    OleDbCommand cmd = CreateSql(SqlStr,null);
    dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    }
    #endregion #region 执行带参数的SQL语句并返回受影响的行数
    /// <summary>
    /// 执行带参数的SQL语句并返回受影响的行数
    /// </summary>
    /// <param name="SqlStr"></param>
    /// <param name="prams"></param>
    /// <returns></returns>
    public int RunSql(string SqlStr,OleDbParameter[] prams)
    {
    OleDbCommand cmd=this.CreateSql(SqlStr,prams);
    int i=cmd.ExecuteNonQuery();
    this.Close();
    return i;
    }
    #endregion #region 执行带参数的SQL语句并返回第一行的第一列
    /// <summary>
    /// 执行带参数的SQL语句并返回第一行的第一列
    /// </summary>
    /// <param name="SqlStr"></param>
    /// <param name="prams"></param>
    /// <returns></returns>
    public object RunSql_ReturnValue(string SqlStr,OleDbParameter[] prams)
    {
    OleDbCommand cmd=this.CreateSql(SqlStr,prams);
    object i=cmd.ExecuteScalar();
    this.Close();
    return i;
    }
    #endregion #region 执行带参数的SQL语句并返回OleDbDataReader对象
    /// <summary>
    /// 执行带参数的SQL语句并返回OleDbDataReader对象
    /// </summary>
    /// <param name="SqlStr"></param>
    /// <param name="prams"></param>
    /// <param name="dataReader"></param>
    public void RunSql(string SqlStr,OleDbParameter[] prams,out OleDbDataReader dataReader)
    {
    OleDbCommand cmd = CreateSql(SqlStr,prams);
    dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    }
    #endregion #region 执行存储过程
    /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="procName">存储过程的名称</param>
    /// <returns>返回存储过程返回值</returns>
    public void RunProc(string procName, OleDbParameter[] prams) 
    {
    OleDbCommand cmd = CreateCommand(procName, prams);
    cmd.ExecuteNonQuery();
    this.Close();
    }
    #endregion #region 创建一个OleDbCommand对象以此来执行SQL语句  
    /// <summary>
    ///  创建一个OleDbCommand对象以此来执行SQL语句  
    /// </summary>
    /// <param name="SqlStr">SQL语句</param>
    /// <param name="parms">所需的参数</param>
    /// <returns>返回OleDbCommand对象</returns>
    private OleDbCommand CreateSql(string SqlStr,OleDbParameter[] prams)
    {
    // 确认打开连接
    Open(); OleDbCommand cmd = new OleDbCommand(SqlStr, con);
    cmd.CommandType = CommandType.Text; // 依次把参数传入存储过程
    if (prams != null) 
    {
    foreach (OleDbParameter parameter in prams)
    cmd.Parameters.Add(parameter);
    } return cmd;
    }
    #endregion #region 创建一个OleDbCommand对象以此来执行存储过程
    /// <summary>
    /// 创建一个OleDbCommand对象以此来执行存储过程
    /// </summary>
    /// <param name="procName">存储过程的名称</param>
    /// <param name="prams">存储过程所需参数</param>
    /// <returns>返回SqlCommand对象</returns>
    private OleDbCommand CreateCommand(string procName, OleDbParameter[] prams) 
    {
    // 确认打开连接
    Open();
    OleDbCommand cmd = new OleDbCommand(procName, con);
    cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程
    if (prams != null) 
    {
    foreach (OleDbParameter parameter in prams)
    cmd.Parameters.Add(parameter);
    }
    return cmd;
    }
    #endregion #region 传入输入参数
    /// <summary>
    /// 传入输入参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <param name="Value">参数值</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeInParam(string ParamName, OleDbType DbType, int Size, object Value) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
    }
    #endregion #region 传入返回值参数
    /// <summary>
    /// 传入返回值参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeOutParam(string ParamName, OleDbType DbType, int Size) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
    }
    #endregion #region 传入返回值参数
    /// <summary>
    /// 传入返回值参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeReturnParam(string ParamName, OleDbType DbType, int Size) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
    }
    #endregion

    #region 生成存储过程参数
    /// <summary>
    /// 生成存储过程参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <param name="Direction">参数方向</param>
    /// <param name="Value">参数值</param>
    /// <returns>新的 parameter 对象</returns>
    public OleDbParameter MakeParam(string ParamName, OleDbType DbType, Int32 Size, ParameterDirection Direction, object Value) 
    {
    OleDbParameter param; if(Size > 0)
    param = new OleDbParameter(ParamName, DbType, Size);
    else
    param = new OleDbParameter(ParamName, DbType); param.Direction = Direction;
    if (!(Direction == ParameterDirection.Output && Value == null))
    param.Value = Value; return param;
    }
    #endregion #region 打开数据库连接.
    /// <summary>
    /// 打开数据库连接.
    /// </summary>
    private void Open() 
    {
    // 打开数据库连接
    if (con == null) 
    {
    con = new OleDbConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    }
    if(con.State ==System.Data.ConnectionState.Closed)
    con.Open(); }
    #endregion #region 关闭数据库连接
    /// <summary>
    /// 关闭数据库连接
    /// </summary>
    public void Close() 
    {
    if (con != null)
    con.Close();
    }
    #endregion #region 释放资源
    /// <summary>
    /// 释放资源
    /// </summary>
    public void Dispose() 
    {
    // 确认连接是否已经关闭
    if (con != null) 
    {
    con.Dispose();
    con = null;
    }
    }
    #endregion
    }
    }
      

  2.   

    再看看这篇文章
    http://www.connectionstrings.com/
      

  3.   

    这个算比较简单啊
    1.建立sql连接 2.建立ORACLE连接
    3.读取sql里面的数据,用datareader或dataset都可以
    4,把DataReader里面的数据循环的插入Oracle里
      

  4.   

    先从sql中读出数据到dataset或者datatable,然后再将dataset或者datatable中的数据插入到oracle
      

  5.   

    先从sql中读出数据到dataset,然后从dataset中把数据插入到oracle
      

  6.   

    非得用程序做吗?为什么不直接用sql管理器导?