Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySqlDataReader.GetStream() lève IndexOutOfRangeException

Désinstallez MySql.Data et remplacez-le par MySqlConnector .

(Divulgation :je suis le rapporteur du bug MySql que vous avez trouvé et le principal contributeur de MySqlConnector .)

En plus de résoudre ce problème et de nombreux autres bugs , MySqlConnector ajoute une véritable prise en charge des E/S asynchrones et des améliorations des performances.

Si vous ne voulez pas changer de bibliothèque, une fonctionnalité peu connue de GetBytes (pris en charge par MySql.Data et MySqlConnector) est que le passage d'un null buffer renvoie la longueur nécessaire, vous n'avez donc pas besoin de le coder en dur :

// get the length of the column and allocate a buffer
var length = dbDataReader.GetBytes(0, 0, null, 0, 0);
var passwordHash = new byte[length];

// fill the buffer from the column
dbDataReader.GetBytes(0, 0, passwordHash, 0, passwordHash.Length);