Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем с буфера на MySqlDataReader GetBytes...

Вместо да четете целия размер на буфера, поискайте само най-много размера на буфера, но и най-много това, което смятате, че е останало. Честно казано, може и да създадете буфер с точно точния размер, а не с фиксиран размер.

// I assume this works for MySqlDataReader too...
int length = (int)reader.GetBytes(column, 0, null, 0, 0);
byte[] buffer = new byte[length];
int index = 0;

while (index < length)
{
    int bytesRead = (int)reader.GetBytes(column, index,
                                    buffer, index, length - index);
    index += bytesRead;
}

Но ако искате по-малък буфер (например, ако го обработвате буфер по един), можете да използвате:

int length = (int)reader.GetBytes(column, 0, null, 0, 0);
byte[] buffer = new byte[length];
int index = 0;

while (index < length)
{
    int bytesRead = (int)reader.GetBytes(column, index, buffer, 0, 
                                    Math.Max(buffer.Length, length - index));
    // Process the buffer, up to value bytesRead
    // ...
    index += bytesRead;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ИЗБЕРЕТЕ LIKE или REGEXP, за да съпоставите няколко думи в един запис

  2. Предаване на масив към mysql

  3. Как да проектираме йерархична ролева система за контрол на достъпа

  4. SQL (MySQL) срещу NoSQL (CouchDB)

  5. Инсталиране на mysql на leopard:Не мога да се свържа с локален MySQL сървър чрез сокет