Bug #62094 char field mapped to System.String of MaxLength=3*len(char) in .NET/Connector
Submitted: 5 Aug 2011 14:39 Modified: 29 Sep 2011 20:52
Reporter: River D Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / NET Severity:S2 (Serious)
Version:6.4.3 OS:Windows
Assigned to: Fernando Gonzalez.Sanchez CPU Architecture:Any
Tags: .net/connector, char, maxlength, System.String

[5 Aug 2011 14:39] River D
Description:
Suppose we have a MySQL table with a Char field, fldChar, of length L, when we put this table into a Dataset form in Visual studio 2010.net to create a related tableadapter, then the field object fldChar in the tableadapter will have a MaxLength of 3*L

How to repeat:
1. Create a table, say tbltest, with a char field fldChar, set its length to 1.
2. Create a Dataset Form, Dataset1, in VS 2010.NET
3. Drag tbltest onto Dataset1, to create a tbltestTableAdapter class.
4. You will find the related field fldChar in tbltestTableAdapter have a MaxLength of 3, NOT 1 as expected.

Suggested fix:
No
[5 Aug 2011 15:37] Valeriy Kravchuk
Please, send the output of:

show create table  tbltest\G
show variables like 'char%';

from your MySQL server. I wonder if utf8 character set is used.
[9 Aug 2011 3:14] River D
Hi, Valeriy Kravchuk,

Apologize for late response.
It is sure I am using utf8 character set.
But I wonder this can cause problems in .NET programming.

Ex: I want to restrict MaxLength of all TextBoxes on a form by means of MaxLength of the bound text programmatically as follows:

private void setMaxLength()
{
	foreach (Control c in this.Controls)
	{
		if (c is TextBox)
		{
			TextBox t = (TextBox)c;
			string fld = t.DataBindings["text"].BindingMemberInfo.BindingField;
			if (dataSet1.t1.Columns[fld].DataType.ToString() == "System.String")
				t.MaxLength = dataSet1.t1.Columns[fld].MaxLength;
		}
	}
}

Since the varchar and char fields in MySQL are both reflected to a column DataType of "System.String", the corresponding MaxLength of the TextBox will be set to 3 times of the field length in MySQL.

Any suggestions?
[9 Aug 2011 6:06] River D
Sorry,

the corresponding MaxLength of the TextBox whose Text attribute is bound with a char field will be set to 3 times of the field length in MySQL.
[29 Sep 2011 20:52] Fernando Gonzalez.Sanchez
Thank you for your bug report. This issue has already been fixed in the latest released version of that product, which you can download at

  http://www.mysql.com/downloads/

This was fixed in releases 6.2.6, 6.3.8, 6.4.4.
[29 Feb 2012 21:29] John Russell
Added to changelog for 6.2.6, 6.3.8, 6.4.4: 

When creating a tableadapter through a Dataset form in Visual Studio,
the MaxLength of the field for a CHAR column could be set to 3 times
the length of the table column. Although this many bytes could be
needed to hold a UTF-8 character value, the length value was not
appropriate for restricting the length of a TextBox.