Example #1
0
        public override async Task DeleteLOB(uint oid, DBTransaction transaction)
        {
            var command = (SqlCommand)transaction.AddCommand($"delete from db_lob where oid = @oid");

            command.Parameters.AddWithValue($"@oid", (long)oid);
            await transaction.ExecuteQueryAsync(command);
        }
Example #2
0
        public override async Task <uint> SetLOB(Stream value, DBTransaction transaction)
        {
            var command = (MySqlCommand)transaction.AddCommand(@"insert into db_lob (lob_data) values (@lob_data);");

            command.Parameters.Add("@lob_data", MySqlDbType.LongBlob).Value = await Helper.GetBytesAsync(value);

            await transaction.ExecuteQueryAsync(command);

            return((uint)command.LastInsertedId);
        }
Example #3
0
        public override async Task <Stream> GetLOB(uint oid, DBTransaction transaction, int bufferSize = 81920)
        {
            var command = (SqlCommand)transaction.AddCommand($"select oid, lob_data from db_lob where oid = @oid");

            command.Parameters.AddWithValue($"@oid", (long)oid);
            transaction.Reader = (IDataReader)await transaction.ExecuteQueryAsync(command, DBExecuteType.Reader, CommandBehavior.SequentialAccess);

            if (await transaction.ReadAsync())
            {
                return(((SqlDataReader)transaction.Reader).GetStream(1));
            }
            throw new Exception("No Data Found!");
        }
Example #4
0
        public override async Task <uint> SetLOB(Stream value, DBTransaction transaction)
        {
            var command = (SqlCommand)transaction.AddCommand(@"select @oid = next value for db_lob_seq;
insert into db_lob (oid, lob_data) values (@oid, @lob_data);
select @oid;");

            command.Parameters.Add("@lob_data", SqlDbType.Binary, -1).Value = value;
            var oid = (long)await transaction.ExecuteQueryAsync(command, DBExecuteType.Scalar);

            //command = (SqlCommand)transaction.AddCommand("select current_value from sys.sequences where name = 'db_lob_seq'");
            //transaction.ExecuteQuery(command, DBExecuteType.Scalar);

            return((uint)oid);
        }
Example #5
0
        public async Task <object> ExecuteQueryAsync(string query, bool noTransaction = false, DBExecuteType type = DBExecuteType.Scalar)
        {
            if (string.IsNullOrEmpty(query))
            {
                return(null);
            }
            using (var transaction = new DBTransaction(this, null, noTransaction))
            {
                var result = await transaction.ExecuteQueryAsync(transaction.AddCommand(query), type);

                transaction.Commit();
                return(result);
            }
        }
Example #6
0
        public override async Task <uint> SetLOB(Stream value, DBTransaction transaction)
        {
            var command = (SqliteCommand)transaction.AddCommand(@"insert into db_lob (lob_data) values (zeroblob($length));
select last_insert_rowid();");

            command.Parameters.AddWithValue("$length", value.Length);
            var oid = (long)await transaction.ExecuteQueryAsync(command);

            // Open a stream to write the data
            using (var blobStream = new SqliteBlob((SqliteConnection)transaction.Connection, "db_lob", "lob_data", oid))
            {
                await value.CopyToAsync(blobStream);
            }
            return((uint)oid);
        }
Example #7
0
        public override async Task <uint> SetLOB(Stream value, DBTransaction transaction)
        {
            using (var blob = new OracleBlob((OracleConnection)transaction.Connection))
            {
                await value.CopyToAsync(blob);

                var command      = (OracleCommand)transaction.AddCommand(@"begin
select db_lob_seq.nextval into :oid = next from dual;
insert into db_lob (oid, lob_data) values (:oid, :lob_data);
select :oid;");
                var oidParameter = command.Parameters.Add(":oid", OracleDbType.Long);
                oidParameter.Direction = ParameterDirection.Output;
                command.Parameters.Add(":lob_data", OracleDbType.Blob, -1).Value = blob;
                await transaction.ExecuteQueryAsync(command, DBExecuteType.NoReader);

                var oid = (long)oidParameter.Value;

                return((uint)oid);
            }
        }