59

私は現在 C# プロジェクトに取り組んでおり、同時に選択も行う挿入クエリを実行しています。

INSERT INTO table (SELECT * FROM table WHERE column=date)

このクエリ中に挿入された行数を確認する方法はありますか?

4

6 に答える 6

109

ExecuteNonQuery- 影響を受けた行数を返します。

SqlCommand comm;
// other codes
int numberOfRecords = comm.ExecuteNonQuery();
于 2012-04-08T00:53:56.390 に答える
15

質問から SQL を実行し、SqlCommandその戻り値を確認すると、ExecuteNonQuery影響を受けたレコードの数がわかります。

ドキュメントから:

戻り値
の型: System.Int32
影響を受けた行の数。

于 2012-04-07T23:24:34.510 に答える
0

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);
            }
        }
于 2018-02-25T03:14:13.620 に答える