コード例 #1
0
        public void DoNonQueryBatch(EbDataTable Table)
        {
            try
            {
                using SqliteConnection con = new SqliteConnection("Data Source=" + this.DbPath);
                con.Open();
                string        query = "INSERT INTO {0} ({1}) VALUES ({2});";
                List <string> _cols = new List <string>();
                List <string> _vals = new List <string>();

                using (SqliteCommand cmd = con.CreateCommand())
                {
                    using SqliteTransaction transaction = con.BeginTransaction();
                    for (int k = 0; k < Table.Rows.Count; k++)
                    {
                        cmd.Parameters.Clear();

                        for (int i = 0; i < Table.Rows[k].Count; i++)
                        {
                            EbDataColumn column = Table.Columns.Find(item => item.ColumnIndex == i);
                            if (k == 0)
                            {
                                _cols.Add(column.ColumnName);
                                _vals.Add("@" + column.ColumnName);
                            }

                            cmd.Parameters.Add(new SqliteParameter {
                                ParameterName = "@" + column.ColumnName, Value = SQLiteTableSchema.SQLiteTypeValue(column.Type, Table.Rows[k][i])
                            });
                        }

                        cmd.CommandText = string.Format(query, Table.TableName, string.Join(",", _cols.ToArray()), string.Join(",", _vals.ToArray()));
                        int rowAffected = cmd.ExecuteNonQuery();
                    }

                    transaction.Commit();
                }
                con.Close();
            }
            catch (Exception e)
            {
                EbLog.Error(e.Message);
            }
        }