Exemplo n.º 1
0
        [Category("NotWorking")]          // Requires newer sqlite than is on wrench
        public void UpdateResetRowErrorCorrectly()
        {
            const string connectionString = "URI = file::memory:; Version = 3";

            using (var dbConnection = new SqliteConnection(connectionString)) {
                dbConnection.Open();

                using (var cmd = dbConnection.CreateCommand()) {
                    cmd.CommandText = "CREATE TABLE data (id PRIMARY KEY, name TEXT)";
                    cmd.ExecuteNonQuery();
                }


                var ts      = dbConnection.BeginTransaction();
                var da      = new SqliteDataAdapter("SELECT * FROM data", dbConnection);
                var builder = new SqliteCommandBuilder(da);
                da.UpdateCommand             = builder.GetUpdateCommand();
                da.UpdateCommand.Transaction = ts;

                var ds1 = new DataSet();
                da.Fill(ds1, "data");

                var table = ds1.Tables [0];
                var row   = table.NewRow();
                row ["id"]   = 10;
                row ["name"] = "Bart";
                table.Rows.Add(row);

                var ds2 = ds1.GetChanges();
                da.Update(ds2, "data");
                Assert.IsFalse(ds2.HasErrors);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Execute update table to data base by command with args.
        /// </summary>
        /// <param name="table"></param>
        /// <param name="command"></param>
        /// <param name="args"></param>
        /// <returns>Number of rows affected.</returns>
        public virtual int ExecuteNonQuery(DataTable table, string command, params SqliteParameter[] args)
        {
            try
            {
                using (var conn = new SqliteConnection(connectionString))
                {
                    conn.Open();
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = command;
                        cmd.Parameters.AddRange(args);

                        using (var adapter = new SqliteDataAdapter(cmd))
                        {
                            using (var builder = new SqliteCommandBuilder(adapter))
                            {
                                adapter.InsertCommand = builder.GetInsertCommand();
                                adapter.UpdateCommand = builder.GetUpdateCommand();
                                adapter.DeleteCommand = builder.GetDeleteCommand();

                                return(adapter.Update(table));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogUtility.LogException(ex);
                return(0);
            }
        }