问题 从SQL Server动态地将单个记录插入MS访问

123快跑

新成员
已加入
2012年7月21日
留言内容
2
编程经验
1-3
大家好,


我有两个具有相同模式(相同表)的数据库(SQlserver和MS Access)。 SQL Server数据库有数据,但是Access没有数据(空白数据库)。


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


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


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


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


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


私人无效InsertMsiClientIntoTest(string ClientId)
{
SqlConnection sqlConnection = null;
SqlDataAdapter sqlDataAdapter = null;
数据集sqlserverDataset = new DataSet();
sqlserverDataset.Tables.Add();
sqlConnection =新的SqlConnection();
sqlConnection =新的SqlConnection("数据源=思维;初始目录=" + dbName + "; Integrated Security = True;");
sqlConnection.Open();
sqlDataAdapter =新的SqlDataAdapter(ClientSQL.PopulateTables,sqlConnection);
sqlDataAdapter.SelectCommand.Parameters.AddWithValue("@ClientId", cmbId.Text);
sqlDataAdapter.Fill(sqlserverDataset);
GetDataFromTablesForID(sqlserverDataset);
InsertAllTableDataIntoAccess(sqlserverDataset,tableArray);
}




私有数据集GetDataFromTablesForID(DataSet dsTablesList)
{
SqlConnection sqlConnection = null;
SqlDataAdapter sqlDataAdapter = null;
字符串tableName = string.Empty;
字符串QueryText = string.Empty;
int i =0;
tableArray =新字符串[dsTablesList.Tables [0] .Rows.Count];
数据集sqlserverDataset = new DataSet();
sqlserverDataset.Tables.Add();
sqlConnection =新的SqlConnection();
sqlConnection =新的SqlConnection("数据源=思维;初始目录=" + dbName + "; Integrated Security = True;");
sqlConnection.Open();
foreach(dsTablesList.Tables [0] .Rows中的DataRow itemRow)
{
tableArray = itemRow [0] .ToString();
i++;
}
foreach(tableArray中的字符串tableItem)
{
tableName = tableItem;

QueryText = "select x.* from" + " " + tableName + " " +
"x内部加入ci.ClientId = x.ClientId上的ClientMajor ci,其中ci.MajorClientId = @ ClientId";
}
sqlDataAdapter =新的SqlDataAdapter(QueryText,sqlConnection);
sqlDataAdapter.SelectCommand.Parameters.AddWithValue("@ClientId", cmbExceedId.Text);
sqlDataAdapter.Fill(sqlserverDataset);
}


返回sqlserverDataset;

}


私有无效InsertAllTableDataIntoAccess(DataSet Inputset,string [] tableArray)
{
字符串connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings ["mdb"].ToString();
OleDbConnection oledbConnection = null;
OleDbDataAdapter oledbDataAdapter = null;
DataSet resultSet = new DataSet();
oledbConnection =新的OleDbConnection(connectionstring);
oledbConnection.Open();
foreach(tableArray中的字符串tableItem)
{
// ?????????我需要以下代码...... ///////////?
oledbDataAdapter.InsertCommand.CommandText ="insert into "
oledbDataAdapter.Fill(resultSet.Tables [0]);
}
}


提前致谢...
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
我无法为每个表插入语句。我需要每个表都通用的一个,这样我才能通过参数。

我不确定我是否理解。您是说要从SQL Server获得一条记录,并且要将其插入到Access中具有相同架构的多个表中吗?如果是这样,那么您只需编写一个INSERT语句并每次更改表名。
 
最佳 底部