我用winform做一个数据从一个access文件中导到另一个access文件中.
两个access文件中的表是一样的,只是加一个"数据导入"功能.比如说有10个access文件中的数据要导到一个access文件中做汇总.如何实现?谢谢.

解决方案 »

  1.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;namespace testDB
    {
        public abstract class DBase
        {
            protected OleDbConnection conn;        private void OpenConnection()
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
            }        public void CloseConnection()
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }        public int Query(string sql)
            {
                int ret = -1;
                try
                {
                    OleDbCommand cmd = new OleDbCommand(sql, conn);
                    OpenConnection();
                    ret = cmd.ExecuteNonQuery();
                    return ret;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                return -1;
            }        public DataTable OpenTable(string tableName)
            {
                OleDbDataAdapter adapter = new OleDbDataAdapter();
                DataTable dtable = null;
                string query = "select * from " + tableName;
                adapter.SelectCommand = new OleDbCommand(query, conn);
                DataSet dset = new DataSet("mydata");
                try
                {
                    OpenConnection();
                    adapter.Fill(dset);
                    dtable = dset.Tables[0];
                    CloseConnection();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                return dtable;
            }        public DataTable OpenQuery(string query)
            {
                OleDbDataAdapter adapter = new OleDbDataAdapter();
                DataTable dtable = null;
                DataSet dset = new DataSet();
                try
                {
                    adapter.SelectCommand = new OleDbCommand(query, conn);
                    OpenConnection();
                    int count = adapter.Fill(dset);                if (dset.Tables.Count > 0)
                    {
                        dtable = dset.Tables[0];
                    }
                    CloseConnection();
                    return dtable;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                return dtable;
            }        public void OpenConnection(string connectionString)
            {
                conn = new OleDbConnection(connectionString);
            }        public OleDbConnection getConnection()
            {
                return conn;
            }
        }    class AxsDatabase : DBase
        {
            public AxsDatabase(string dbName)
            {
                string connectionString =
                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName;
                OpenConnection(connectionString);
            }
        }    static class Program
        {
            static void Main()
            {
                CopyTable("src.mdb", "src", "dest.mdb", "dest");
            }        static void CopyTable(string srcDBFile, string srcTable, string destDBFile, string destTable)
            {
                AxsDatabase srcDBase = new AxsDatabase(srcDBFile);
                AxsDatabase destDBase = new AxsDatabase(destDBFile);            DataTable srcDataTable = srcDBase.OpenTable(srcTable);            foreach (DataRow dataRow in srcDataTable.Rows)
                {
                    string sql = GetInsertSql(destTable, dataRow);
                    destDBase.Query(sql);
                }            srcDBase.CloseConnection();
                destDBase.CloseConnection();
            }        static string GetInsertSql(string srcTable,DataRow dataRow)
            {
                StringBuilder sql = new StringBuilder();
                sql.AppendFormat("insert into {0} values(",srcTable);            foreach (object obj in dataRow.ItemArray)
                {
                    if (obj is string)
                    {
                        sql.AppendFormat("'{0}'", obj.ToString());
                    }
                    else
                    {
                        sql.Append(obj.ToString());
                    }
                    sql.Append(',');
                }            sql.Remove(sql.Length - 1, 1);
                sql.Append(')');
                return sql.ToString();
            }
        }
    }