私は現在 C# プロジェクトに取り組んでおり、同時に選択も行う挿入クエリを実行しています。
INSERT INTO table (SELECT * FROM table WHERE column=date)
このクエリ中に挿入された行数を確認する方法はありますか?
私は現在 C# プロジェクトに取り組んでおり、同時に選択も行う挿入クエリを実行しています。
INSERT INTO table (SELECT * FROM table WHERE column=date)
このクエリ中に挿入された行数を確認する方法はありますか?
ExecuteNonQuery
- 影響を受けた行数を返します。
SqlCommand comm;
// other codes
int numberOfRecords = comm.ExecuteNonQuery();
質問から SQL を実行し、SqlCommand
その戻り値を確認すると、ExecuteNonQuery
影響を受けたレコードの数がわかります。
ドキュメントから:
戻り値
の型: System.Int32
影響を受けた行の数。
ExecuteNonQuery() を大量に実行し、それらを一度にコミットすると、「SELECT total_changes();」からの戻り値を読み取ることで、接続後の合計変更数を取得できます。
合計変更を取得する関数:
public static long GetTotalChanges(SQLiteConnection m_dbConnection)
{
string sql = "SELECT total_changes();";
using (SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection))
{
using (SQLiteDataReader reader = command.ExecuteReader())
{
reader.Read();
return (long)reader[0];
}
}
}
別の関数で使用します。
public static long MyBulkInserts()
{
using (SQLiteConnection m_dbConnection = new SQLiteConnection())
{
m_dbConnection.Open();
using (var cmd = new SQLiteCommand(m_dbConnection))
{
using (var transaction = m_dbConnection.BeginTransaction())
{
//loop of bulk inserts
{
cmd.ExecuteNonQuery();
}
transaction.Commit();
}
}
return GetTotalChanges(m_dbConnection);
}
}