Click here to Skip to main content
15,895,084 members
Articles / Database Development / MySQL

MySqlUtil - TableAdapters for MySql

Rate me:
Please Sign up or sign in to vote.
4.59/5 (7 votes)
3 Aug 20063 min read 69.4K   2.1K   47  
A program which generates Typed DataSets and TableAdapters for MySQL databases
// Copyright (C) 2004-2005 MySQL AB
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as published by
// the Free Software Foundation
//
// There are special exceptions to the terms and conditions of the GPL 
// as it is applied to this software. View the full text of the 
// exception in file EXCEPTIONS in the directory of this software 
// distribution.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 

using System;
using System.Text;
using System.Collections;
using MySql.Data.Common;

namespace MySql.Data.MySqlClient
{
	/// <summary>
	/// Summary description for CharSetMap.
	/// </summary>
	internal class CharSetMap
	{
		private static Hashtable	mapping;

		// Declare a private ctor so a default one won't be made by the compiler
		private CharSetMap() 
		{
		}

		/// <summary>
		/// Returns the text encoding for a given MySQL character set name
		/// </summary>
		/// <param name="version">Version of the connection requesting the encoding</param>
		/// <param name="CharSetName">Name of the character set to get the encoding for</param>
		/// <returns>Encoding object for the given character set name</returns>
		public static Encoding GetEncoding( DBVersion version, string CharSetName ) 
		{
			if (mapping == null )
				InitializeMapping();
			try 
			{
				if (! mapping.Contains( CharSetName ))
					throw new MySqlException("Character set '" + CharSetName + "' is not supported");

				object value = mapping[ CharSetName ];

				// if we are 4.0 or earlier and we are requesting latin1, then just return latin1 directly
				if (value.Equals("latin1") && version.isAtLeast(4,1,0))
					value = 1252;

				if (value is string)
					return Encoding.GetEncoding( (string)value );

				return Encoding.GetEncoding( (int)value );
			}
			catch (System.NotSupportedException) 
			{
				return Encoding.GetEncoding(0);
			}
		}

		/// <summary>
		/// 
		/// </summary>
		private static void InitializeMapping()
		{
			LoadCharsetMap();
		}

		private static void LoadCharsetMap()
		{
			mapping = new Hashtable();

			mapping.Add("big5", "big5");		// Traditional Chinese
			mapping.Add("sjis", "sjis");		// Shift-JIS
			mapping.Add("gb2312", "gb2312");
			mapping.Add("latin1", "latin1");
			mapping.Add("latin2", "latin2");
			mapping.Add("latin3", "latin3");
			mapping.Add("latin4", "latin4");
			mapping.Add("latin5", "latin5");
			mapping.Add("greek", "greek");
			mapping.Add("hebrew", "hebrew");
			mapping.Add("utf8", "utf-8");
			mapping.Add("ucs2", "UTF-16BE");
			mapping.Add("cp1251", 1251);
			mapping.Add("tis620", 874);
			mapping.Add("binary", "latin1");
			mapping.Add("cp1250", 1250);
			mapping.Add("cp932", 932);

			// relatively sure about
/*			mapping.Add( "default", 0 );
			mapping.Add( "cp1251", 1251 );		// Russian
			mapping.Add( "win1251", 1251 );
			mapping.Add( "gbk", 936 );			// Simplified Chinese
			mapping.Add( "cp866", 866 );
			mapping.Add( "euc_kr", 949 );

			// maybe, maybe not...
			mapping.Add( "win1250", 1250 );		// Central Eurpoe
			mapping.Add( "win1251ukr", 1251 );
			mapping.Add( "latin1_de", 1252 );	// Latin1 German
			mapping.Add( "german1", 1252 );		// German
			mapping.Add( "danish", 1252 );		// Danish
			mapping.Add( "dos", 437 );			// Dos
			mapping.Add( "pclatin2", 852 );		
			mapping.Add( "win1250ch", 1250 );
			mapping.Add( "cp1257", 1257 );
			mapping.Add( "usa7", 646 );
			mapping.Add( "czech", 912 );
			mapping.Add( "hungarian", 912 );
			mapping.Add( "croat", 912 ); */

			/*			("gb2312", "EUC_CN");
						("ujis", "EUC_JP");
						("latvian", "ISO8859_13");
						("latvian1", "ISO8859_13");
						("estonia", "ISO8859_13");
						("koi8_ru", "KOI8_R");
						("tis620", "TIS620");
						("macroman", "MacRoman");
						("macce", "MacCentralEurope");
			*/

		}
	}
}


By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here



Comments and Discussions