从 SQL 服务器动态地将单个记录插入到 MS 访问中

Posted

技术标签:

【中文标题】从 SQL 服务器动态地将单个记录插入到 MS 访问中【英文标题】:Dynamically Insert single record into MS access from SQL server 【发布时间】:2012-07-29 14:47:42 【问题描述】:

我有两个具有相同架构(相同表)的数据库(SQlserver 和 MS Access)。 SQL server 数据库有数据但 Access 没有数据(空白数据库)。

我的目标:当用户输入 ClientId 并单击插入按钮时,我需要从 sql server 数据库中的所有表中检索该单条记录并插入到 MS Access 数据库中的表中。

已实现:我从 sql server 数据库中具有客户端 ID 的所有表中检索,并将数据存储在 Dataset 中。

我有表格数组,我正在遍历数组中的所有表格,并尝试将上述数据集中的数据动态插入 Ms Access。

您能否建议如何在循环中动态地将所有表插入 Access 中。我不能为每个表写插入语句。我需要一个对每个表都是通用的,这样我才能传递参数。它不是批量插入,它的单个记录推送到多个表中。

--------这是我的代码------------------------------------ -------------------

private void InsertMsiClientIntoTest(string ClientId)
        
            SqlConnection sqlConnection = null;
            SqlDataAdapter sqlDataAdapter = null;
            DataSet sqlserverDataset = new DataSet();
            sqlserverDataset.Tables.Add();
            sqlConnection = new SqlConnection();
            sqlConnection = new SqlConnection("Data Source=THINK;Initial Catalog=" + dbName + ";Integrated Security=True;");
            sqlConnection.Open();
            sqlDataAdapter = new SqlDataAdapter(ClientSQL.PopulateTables, sqlConnection);
            sqlDataAdapter.SelectCommand.Parameters.AddWithValue("@ClientId", cmbId.Text);
           sqlDataAdapter.Fill(sqlserverDataset);
           GetDataFromTablesForID(sqlserverDataset); 
           InsertAllTableDataIntoAccess(sqlserverDataset,tableArray);
        


        private DataSet GetDataFromTablesForID(DataSet dsTablesList)
        
            SqlConnection sqlConnection = null;
            SqlDataAdapter sqlDataAdapter = null;
            string tableName = string.Empty;
            string QueryText = string.Empty;
            int i =0;
            tableArray = new string[dsTablesList.Tables[0].Rows.Count];
            DataSet sqlserverDataset = new DataSet();
            sqlserverDataset.Tables.Add();
            sqlConnection = new SqlConnection();
            sqlConnection = new SqlConnection("Data Source=THINK;Initial Catalog=" + dbName + ";Integrated Security=True;");
            sqlConnection.Open();
            foreach (DataRow itemRow in dsTablesList.Tables[0].Rows)
                            
                 tableArray[i] = itemRow[0].ToString();
                 i++;
            
            foreach (string tableItem in tableArray)
            
                tableName = tableItem;

                    QueryText = "select x.*  from" + " " + tableName + " " +
                    "x inner join ClientMajor ci on ci.ClientId = x.ClientId where ci.MajorClientId =@ClientId";
                
                sqlDataAdapter = new SqlDataAdapter(QueryText, sqlConnection);
                sqlDataAdapter.SelectCommand.Parameters.AddWithValue("@ClientId", cmbExceedId.Text);
                sqlDataAdapter.Fill(sqlserverDataset);
            

            return sqlserverDataset;

        

        private void InsertAllTableDataIntoAccess(DataSet Inputset, string[] tableArray)
        
            string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["mdb"].ToString();
            OleDbConnection oledbConnection = null;
            OleDbDataAdapter oledbDataAdapter = null;
            DataSet resultSet = new DataSet();
            oledbConnection = new OleDbConnection(connectionstring);
            oledbConnection.Open();
            foreach (string tableItem in tableArray)
            
//?????????  I NEED THE FOLLOWING CODE......////////////???????           
                oledbDataAdapter.InsertCommand.CommandText="insert into "
                oledbDataAdapter.Fill(resultSet.Tables[0]);
            
        

在此先感谢...

【问题讨论】:

【参考方案1】:

最好的方法是: 一、在sql server上插入数据 其次,使用 ssis 包从 sql server 导出数据以访问数据库 SSIS 在您的情况下很有用(使用 sql server 作为数据源、您的查询和 ms 访问作为数据目标创建一个数据流)

【讨论】:

感谢您的回复。我之前没有尝试过 ssis。现在我试一试。 很高兴为您提供帮助。如果我的回答是好的,谢谢标记它。最好的尊重

以上是关于从 SQL 服务器动态地将单个记录插入到 MS 访问中的主要内容,如果未能解决你的问题,请参考以下文章

多个 MS Access 前端连接到单个远程 SQL Server 后端

使用单个过程将多个 xml 数据动态插入到 sql server 表中

从 MS Access 批量导入并插入 Sql Server [关闭]

SQL Server 在链接的 MS Access 表上插入后返回不同的记录

如何将从 ms 访问表中检索到的记录插入到 sql server 表中?

从 excel 文件 Laravel 5 更快地将记录插入数据库