コード例 #1
0
ファイル: DBSystemMSSql.cs プロジェクト: alexandrvslv/datawf
        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);
        }
コード例 #2
0
 public QResult ExecuteQResult(string query)
 {
     using (var transaction = new DBTransaction(this, null, true))
     {
         transaction.AddCommand(query);
         return(transaction.ExecuteQResult());
     }
 }
コード例 #3
0
 public List <Dictionary <string, object> > ExecuteListDictionary(string query)
 {
     using (var transaction = new DBTransaction(this, null, true))
     {
         var command = transaction.AddCommand(query);
         return(transaction.ExecuteListDictionary(command));
     }
 }
コード例 #4
0
ファイル: DBSystemMySql.cs プロジェクト: alexandrvslv/datawf
        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);
        }
コード例 #5
0
        public object ExecuteDBFunction(IDbCommand command, DBTransaction transaction)
        {
            object bufer = null;

            transaction.AddCommand(command);
            //UpdateCommand(command, parameters);
            transaction.ExecuteQuery(command);
            bufer = ((IDataParameter)command.Parameters[0]).Value;
            return(bufer);
        }
コード例 #6
0
ファイル: DBSystemMSSql.cs プロジェクト: alexandrvslv/datawf
        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!");
        }
コード例 #7
0
 public object ExecuteQuery(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 = transaction.ExecuteQuery(transaction.AddCommand(query), type);
         transaction.Commit();
         return(result);
     }
 }
コード例 #8
0
ファイル: DBSystemMSSql.cs プロジェクト: alexandrvslv/datawf
        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);
        }
コード例 #9
0
ファイル: DBSystemSQLite.cs プロジェクト: alexandrvslv/datawf
        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);
        }
コード例 #10
0
        public DBTable <T> ExecuteTable <T>(string tableName, string query) where T : DBItem, new()
        {
            var schema = new DBSchema()
            {
                Name = "temp", Connection = this
            };
            var table = new DBTable <T>(tableName)
            {
                Schema = schema
            };

            using (var transaction = new DBTransaction(this, null, true))
            {
                table.Load(transaction.AddCommand(query));
            }
            return(table);
        }
コード例 #11
0
ファイル: DBSystemOracle.cs プロジェクト: alexandrvslv/datawf
        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);
            }
        }
コード例 #12
0
 public List <List <KeyValuePair <string, object> > > ExecuteListPair(string query)
 {
     using (var transaction = new DBTransaction(this, null, true))
     {
         var list = new List <List <KeyValuePair <string, object> > >();
         using (var reader = transaction.ExecuteQuery(transaction.AddCommand(query), DBExecuteType.Reader) as IDataReader)
         {
             int fCount = reader.FieldCount;
             while (reader.Read())
             {
                 var objects = new List <KeyValuePair <string, object> >(fCount);
                 for (int i = 0; i < fCount; i++)
                 {
                     objects.Add(new KeyValuePair <string, object>(reader.GetName(i), reader.GetValue(i)));
                 }
                 list.Add(objects);
             }
             reader.Close();
         }
         return(list);
     }
 }
コード例 #13
0
 public List <Dictionary <string, object> > ExecuteListDictionary(IDbCommand command, DBTransaction transaction)
 {
     command = transaction.AddCommand(Source);
     //UpdateCommand(command, parameters);
     return(transaction.ExecuteListDictionary());
 }
コード例 #14
0
 public QResult ExecuteQueryResult(IDbCommand command, DBTransaction transaction)
 {
     //UpdateCommand(command, parameters);
     return(transaction.ExecuteQResult(transaction.AddCommand(command)));
 }