大家好,
我有两个具有相同模式(相同表)的数据库(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]);
}
}
提前致谢...
我有两个具有相同模式(相同表)的数据库(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]);
}
}
提前致谢...