sql >> データベース >  >> RDS >> Mysql

MySqlDataReaderGetBytesバッファの問題...

    バッファサイズ全体を読み取るのではなく、最大のみを要求します。 バッファサイズだけでなく、せいぜいあなたが信じているものが残っています。正直なところ、固定サイズではなく、正確に正しいサイズのバッファーを作成することもできます。

    // 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;
    }
    

    ただし、より小さなバッファが必要な場合(たとえば、一度に1つのバッファを処理する場合)、次を使用できます。

    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. '*abc'のようなプレフィックスワイルドカードをmatch-againstで使用する方法

    2. PostgreSQL 9.1以降でモジュールをインポートしたり拡張機能をインストールしたりするにはどうすればよいですか?

    3. MySQL:サブクエリの値の合計

    4. geminstallpgはlibpqにバインドできません