簡體   English   中英

從SQL Server動態地將單個記錄插入MS訪問

[英]Dynamically Insert single record into MS access from SQL server

我有兩個具有相同模式(相同表)的數據庫(SQlserver和MS Access)。 SQL Server數據庫有數據,但是Access沒有數據(空白數據庫)。

我的目標:當用戶輸入ClientId並單擊“插入”按鈕時,我需要從sql server數據庫中的所有表中檢索該單個記錄,並將其插入MS Access數據庫中的表中。

實現:我從帶有客戶端ID的sql server數據庫中的所有表中檢索數據,並將數據存儲在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]);
            }
        }

提前致謝...

最好的方法是:首先,在sql服務器上插入數據,其次,使用ssis包從sql服務器導出數據以訪問數據庫SSIS在您這種情況下很有用(以sql server作為數據源創建數據流,您的查詢和ms訪問作為數據目標)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM