我已经用创建的表填充了数据集another数据库文件。该表不在我希望能够将表复制到的数据库文件中。
现在我想将所有这些记录(DataTable)保存到新创建的 SQLite 数据库文件中......
我怎样才能做到这一点?
另外,如果可能的话,我真的想避免循环。
最好的答案是我:) 所以我会分享它。这是一个循环,但在 2-3 秒内写入 100k 条目。
using (DbTransaction dbTrans = kaupykliuduomConn.BeginTransaction())
{
downloadas.Visible = true; //my progressbar
downloadas.Maximum = dataSet1.Tables["duomenys"].Rows.Count;
using (DbCommand cmd = kaupykliuduomConn.CreateCommand())
{
cmd.CommandText = "INSERT INTO duomenys(Barkodas, Preke, kiekis) VALUES(?,?,?)";
DbParameter Field1 = cmd.CreateParameter();
DbParameter Field2 = cmd.CreateParameter();
DbParameter Field3 = cmd.CreateParameter();
cmd.Parameters.Add(Field1);
cmd.Parameters.Add(Field2);
cmd.Parameters.Add(Field3);
while (n != dataSet1.Tables["duomenys"].Rows.Count)
{
Field1.Value = dataSet1.Tables["duomenys"].Rows[n]["Barkodas"].ToString();
Field2.Value = dataSet1.Tables["duomenys"].Rows[n]["Preke"].ToString();
Field3.Value = dataSet1.Tables["duomenys"].Rows[n]["kiekis"].ToString();
downloadas.Value = n;
n++;
cmd.ExecuteNonQuery();
}
}
dbTrans.Commit();
}
在这种情况下,dataSet1.Tables["duomenys"] 已经填充了我需要传输到另一个数据库的所有数据。我也使用循环来填充数据集。
-
当您加载DataTable
从源数据库中,设置AcceptChangesDuringFill
数据适配器的属性为 false,以便加载的记录保存在Added
状态(假设源数据库是SQL Server)
var sqlAdapter = new SqlDataAdapter("SELECT * FROM the_table", sqlConnection);
DataTable table = new DataTable();
sqlAdapter.AcceptChangesDuringFill = false;
sqlAdapter.Fill(table);
通过执行以下命令在 SQLite 数据库中创建表CREATE TABLE
直接声明SQLiteCommand.ExecuteNonQuery
-
创建一个新的DataAdapter
用于 SQLite 数据库连接,并用它来Update
the db:
var sqliteAdapter = new SQLiteDataAdapter("SELECT * FROM the_table", sqliteConnection);
var cmdBuilder = new SQLiteCommandBuilder(sqliteAdapter);
sqliteAdapter.Update(table);
如果源表和目标表具有相同的列名和兼容的类型,它应该可以正常工作......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)