这就是我得到的:用户从数据库名称的清单框中选择他们想要存档的名称。切换箱子以便捕捉选择。
case "userSelection":
sqlAdapter = CreateMyAdapter("dbName", true, sqlconn, null);
sqlAdapter.SelectCommand.CommandText += "";
sqlAdapter.Fill(myDS.tableName);
sqlAdapter.Dispose();
适配器:
private SqlDataAdapter CreateMyAdapter(string TableName, bool IncludeUpdates, SqlConnection sqlConn, SqlTransaction sqlTran)
{
SqlDataAdapter sqlAdapter = null;
SqlConnection sqlConnArchive = new SqlConnection();
strSQL = "SELECT " + TableName + ".* FROM " + TableName;
sqlAdapter = new SqlDataAdapter(strSQL, sqlConn);
// Right here, I create another sqlConnection that is pointed to
// another datasource.
sqlConnArchive = getThisOtherConnection();
SqlCommand sqlComm;
if (IncludeUpdates)
{
string strInsertSQL = "<insertQuery>";
sqlComm = new SqlCommand(strInsertSQL, sqlConnArchive);
sqlComm.Parameters.Add("@TableID", SqlDbType.Int, 0, "TableID");
// More params here...
sqlAdapter.InsertCommand = sqlComm;
// Update
// Delete
}
}
return sqlAdapter;
问题:
如您所见,sqlConn
是与SELECT命令关联的连接。并且sqlConnArchive
与INSERT绑定。这里的想法是,如果愿意,我可以从DB_1中选择数据,并使用相同的SQLDataAdapter将其插入到DB_2中。但我遇到的问题是试图插入。选择工作正常,并在此行sqlAdapter.Fill(myDS.tableName);
一旦填充执行数据就在那里。但INSERT无效。
一些事情:
我测试了一下,看看SQLDataAdapter是否无法处理多个数据源/连接,切换了所以它指向同一个数据库只是不同的表,我看到了相同的结果。
我已确认该问题不在INSERT查询中。
没有错误,只是调试中的步骤。
我尝试了几种.Update()
的排列,但没有一种能够奏效。我已经分配了这个项目,在整个事情中,.Fill();
似乎是将数据提交回数据库。
我已经测试了数据库端,连接性很强。没有登录等问题..
任何帮助非常赞赏。
请注意 - 我试图更加强调“大大”这个词,但受到我的工具集的限制。显然,SOF不支持粗体,闪烁,下划线,火焰或嵌入式音乐。
答案 0 :(得分:1)
我想你想要ExecuteNonQuery
。
var rowsAffected = sqlAdapter.InsertCommand.ExecuteNonQuery();
执行该语句,然后返回受影响的行数。 Fill
方法无法运行任何InsertCommand
。