Bug #19294 IDataRecord.GetString method should return null for null values

Submitted: 24 Apr 2006 9:15 Modified: 24 Aug 2006 9:27
Reporter: Thomas Krüger Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / NET Severity:S3 (Non-critical)
Version:1.0.7 OS:
Assigned to: Reggie Burnett CPU Architecture:Any

[24 Apr 2006 9:15] Thomas Krüger
Description:
When MySqlDataReader encounters a null value during GetString, a NullPointerException occurs. This needs to be avoided as GetString is also used for more generic purposes (when the actual type is not string).

How to repeat:
show index from host from mysql

Using the result set with
reader.GetString(reader.GetOrdinal("Cardinality"));
will crash when the cardinality field is a null value.

Suggested fix:
		public String GetString(int index)
		{
			MySqlValue val = GetFieldValue(index);
			MySqlString str = (val as MySqlString);
			if (str != null) return str.Value;

                        if (val.IsNull) return null;

			if (val is MySqlBinary)
				return (currentResult[index] as MySqlBinary).ToString( fields[index].Encoding );

			return val.ToString();
		}
[22 May 2006 16:27] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/6721
[24 Aug 2006 9:27] MC Brown
I've added the fix to the 1.0.8 Connector/NET changelog: 

IDataRecord.GetString</literal> would raise <literal>NullPointerException</literal> for null values in returned rows. Method now throws <literal>SqlNullValueException</literal>

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.059 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.