Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ช่วยหน่อยครับ การใช้ภาษไทยกับ MySql ด้วย C# ผมเขียนโปรแกรมแบบ Client Server ด้วย C# กับ Mysql ครับ



 

ช่วยหน่อยครับ การใช้ภาษไทยกับ MySql ด้วย C# ผมเขียนโปรแกรมแบบ Client Server ด้วย C# กับ Mysql ครับ

 



Topic : 045215



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์




ผมเขียนโปรแกรมแบบ client serverด้วยc# กับMysql ครับ โดยเขียนเป็นwindow applicationน่ะครับ
แต่มันมีปัญหาเวลาเรียกข้อมูลที่เป็นภาษาไทยขึ้นมาที่ฟอร์มมันจะแสดงเป็นภาษาต่างด้าวครับ ช่วยแนะนำวิธีเซ็ตค่าต่างๆหน่อยครับว่าควรเซ็ตยังไงที่ไหนMysql หรือที่โค้ดครับ แล้วยังconnect database ควรconnect แบบ obdcหรือป่าวครับ เพราที่หาดูมีแตวิธีแก้ปัญหากับphp ไม่มีกับappเลยครับ ลองปรับ charsetแล้วก็ยังไม่ได้ผล ช่วยแนะนำหน่อยครับมือใหม่น่ะครับ เอาตั้งแตตอนติดตั้งเลยไกดีครับว่าต้องใช้connectorตัวไหนยังไง ไม่รูติดตั้งผิดหรือป่าว แก้มาหลายวันแล้วก็ยังไม่ได้น่ะครับ

ขอบคุณทุกคนมากครับที่ช่วย



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-07-09 16:08:14 By : kaoru_ce View : 6790 Reply : 15
 

 

No. 1



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


เอาแบบสั้นๆดีกว่าค่ะ ไม่มีเวลาเขียนไรยาว งานตัวเองก้อเยอะ
1. สร้าง table ด้วย encoding tis-620 ยังไม่แนะนำให้ใช้ unicode ค่ะ collate มานเพี้ยน
2. ไปโหลดเอา Connector/Net is a fully-managed ADO.NET driver for MySQL
ใน document หรือ help file มีตัวอย่างการเชื่อมต่อและวิธีเขียน interface ครบค่ะ






Date : 2010-07-09 16:44:11 By : blurEyes
 


 

No. 2



โพสกระทู้ ( 198 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ลองใช้ connectionstring แบบนี้ดูคับ

DSN=dsnname;userid=username;password=password;charset=tis-620
Date : 2010-07-09 18:31:20 By : Programmer ด้อยปัญญา
 

 

No. 3



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ยังคงแนะนำให้ใช้ mySQL Connector .NET แทน ODBC ค่ะ
เพราะได้หลายอยางเช่น visual tools ที่ เป็น plug in เข้า visual studio
ซึ่งปกติ ใน windows server explorer จะไม่รุจัก mySQL แต่
ด้วย .net connector เราจา mange database table query ได้ลักษณะเดียวกันกับ
MS SQL SERVER เลยค่ะ

ก้อเขียนด้วย c# เป็น full manged code เวลารันไร้รอยต่อใดๆค่ะ
อีกอย่าง odbc ยังต้องเขียนไฟล์ dsn อยู่ถึงจะมีวิธีเขียนแบบ dsn-less
แต่ก้อแยกส่วนไม่ได้แนบสนิทเข้ากับ .net เหมือน mySQL Connector .NET
เพราะใช้ CLASS FACTORY ตามนิยามของ data provider เลย
กำหนดเพียง connection string ใน web.config หรือ app.config
ซึ่งในกรณีที่ไม่อยากให้ใครนอกจาก developer เห็น ก้อยังเข้ารหัสได้ด่วยค่ะ

ในกรณีภาษาไทย หาก table กำหนดอย่างไร .net จะจัดการ
เปลี่ยน encode ให้เองอัตโนมัติ ซึ่งเป็นการจัดการแบบใหม่
ที่ใช้กับทุก data provider

ข้อดีมีมากกว่าค่อนข้างเยอะค่ะ
Date : 2010-07-09 21:42:10 By : blurEyes
 


 

No. 4



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


ตัวtable ผมต้องimportมาจากDBF น่ะครับ ถ้าimportเป็นtisมันจะerrorเลยกำหนดเป็นutf8น่ะครับ ไม่รู้ว่าถูกไหม
ส่วนตอนconnectก็กำหนดcharsetเป็นtis620แล้วครับ ก็ยังไม่ได้ ไม่รู้ว่าผิดตรงไหน ช่วยหน่อยนะ
Code (C#)
            string ConnectionString = "SERVER=localhost;" +
                                  "DATABASE=mydata;" +
                                  "UID=root;" +
                                  "PASSWORD=1234;" + "charset=tis620;";

            MySqlConnection connection = new MySqlConnection(ConnectionString);







            //Connecting to MySQL   
            connection.Open();
            MySqlCommand cmd = connection.CreateCommand();


            cmd.CommandText = "SELECT * FROM contact2_bk";
            cmd.CommandType = CommandType.Text;

            MySqlDataReader reader = cmd.ExecuteReader();
            string a = "";
            while (reader.Read())
            {
                Console.WriteLine(reader.GetString("FIRSTNAME").ToString());
                a = reader.GetString("FIRSTNAME").ToString();
            }

Date : 2010-07-09 21:42:33 By : kaoru_ce
 


 

No. 5



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


โหย dbf ใช่ ascii code เลยปะน่ะคะ
ตัว code น่ะถูกค่ะ แต่เรื่องภาษาลองอ่านจาก dbf ดิคะ
ว่ามันเก็บแบบไหน
Date : 2010-07-09 21:44:52 By : blurEyes
 


 

No. 6



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


กำหนดapp.config ยังไงหรอครับ
Date : 2010-07-09 21:56:15 By : kaoru_ce
 


 

No. 7



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


Quote:
ตัวtable ผมต้องimportมาจากDBF น่ะครับ

เอาตรงนั้นให้เสร็จก่อนค่ะ ลอง import เข้า excel ไม่ก้อ access
ดูภาษาไทยว่าโอเคยัง
Date : 2010-07-09 22:47:52 By : blurEyes
 


 

No. 8



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


Quote:
โหย dbf ใช่ ascii code เลยปะน่ะคะ
ตัว code น่ะถูกค่ะ แต่เรื่องภาษาลองอ่านจาก dbf ดิคะ
ว่ามันเก็บแบบไหน


จะดูยังไงหรอครับว่ามันเก็บแบบไหน พอดีผมมือใหม่น่ะครับ เพิ่งเคยใช้DBF ครั้งแรกเลยครับ

Quote:
เอาตรงนั้นให้เสร็จก่อนค่ะ ลอง import เข้า excel ไม่ก้อ access
ดูภาษาไทยว่าโอเคยัง


ผมลองเอาtable ที่importเข้า mysql แล้ว export ออกมาเป็น excel ก็เป็นภาษาไทยถูกต้องนะครับ ไม่รู้ว่าคุณStupid gurl หมายถึงแบบนี้หรือป่าวครับ ผมใช้Navicat8ในการexport import ครับ
ขอบคุณครับ
Date : 2010-07-10 12:36:53 By : kaoru_ce
 


 

No. 9



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ลองใช้ navicate นั่นอะคะ select ข้อมูลที่เป็นภาษาไทยออกมาดู
ถ้าถูกแล้วก้อข้ามไป แต่กรุณาตรวจสอบ encoding ที่ table property ด้วยนะคะ ว่าใช้ TIS-620 ไหม
ถ้าไม่ใช่ มาว่ากันอีกที อาจจะต้องนำเข้าโดยการอ่านใหม่

ส่วนเรื่อง app.config
Solution explorer >> right click ที่ชื่อ project >> Add new item
>> Application configuration .... ok

แล้วเปิด app.config ที่แอดเข้ามา
แก้ไขโครงสร้างใน VSS นั่นแหละค่ะ เพิ่ม ConnectionString ของคุณลงไป
วิธีนี้สั้นๆ อาจไม่ถูกต้องนักเอาว่า ง่ายๆก่อนละกันค่ะ
Code (C#)
 < ?xml version="1.0" encoding="utf-8" ?>
 < configuration>
	< appSettings>
	  < add key="MyDataConnectionStringFromAppSettingSection" 
	  value="SERVER=localhost;DATABASE=mydata;UID=root;PASSWORD=1234;charset=tis620;"/>
    < /appSettings>


แล้วก้อ save ไป

ทีนี้ใน App ก้อแก้นิดหน่อยเป็น

Code (C#)
string ConnectionString =ConfigurationSettings.AppSettings("MyDataConnectionStringFromAppSettingSection")

MySqlConnection connection = new MySqlConnection(ConnectionString);

//Connecting to MySQL   
connection.Open();
MySqlCommand cmd = connection.CreateCommand();


cmd.CommandText = "SELECT * FROM contact2_bk";
cmd.CommandType = CommandType.Text;

MySqlDataReader reader = cmd.ExecuteReader();
string a = "";
while (reader.Read())
{
    Console.WriteLine(reader.GetString("FIRSTNAME").ToString());
    a = reader.GetString("FIRSTNAME").ToString();
}



อีกอย่างถ้าจะเทสกัน สร้าง windows app แล้ว bindData เพื่อทดสอบดีกว่าค่ะ เพราะบางทีเทสใน console
อาจมองไม่ชัด

คุณไปสร้าง win app มาแล้วใน form ใส่ Grid ไปตัวนึง
แล้ว สร้าง datatable มา << ไปลองหาวิธีสร้างมาด้วยค่ะ น่าจะทำได้ในกระทู้มีตัวอย่างเยอะ
แล้วเอามา bind กับ grid แล้วมาดูผลค่ะ ภาษาไทยถูกต้องไหม
อีกอย่าง ลอง ORDER BY ชื่อคอลัมภ์ที่เก็บข้อมูลภาษาไทยด้วย ดูว่าการเรียงลำดับ
หมวดหมู่ถูกต้องหรือเปล่า เช่น โกรินทร์ เกชา กานดา ควรอยู่เรียงลำดับกัน ไม่ใช่ สระโอไปกองกันอีกที่นึง
ซึ่งถ้าข้อมุลencoding ถูกมาแล้วก้อไม่น่ามีปัญหา ต่อจากนี้ก้อเขียนไปตามที่คุณต้องการค่ะ

ปล.เรื่องมือใหม่ไม่ต้องย้ำหรอกค่ะ ทราบแล้ว
ยังไงก้อจะพยายามแนะแต่คุณก้อหาข้อมูลประกอบไปด้วย ทุกคนมีเรื่องที่ต้องทำกันด้วยกันทุกคนค่ะ
Date : 2010-07-10 13:41:18 By : blurEyes
 


 

No. 10



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


encodeที่ใช้ผมใช้เป็นutf8 ครับ เพราะว่าผมลองใช้tis620 แล้วมันimportข้อมูลเข้าไม่ได้ครับ
จะต้องนำเข้าใหม่ป่าวครับ ยังไงครับ

แล้วโค้ดตรง string ConnectionString =ConfigurationSettings.AppSettings("MyDataConnectionStringFromAppSettingSection
ผมลองเพิ่มเข้าไปแล้วมันcomplie error ครับ มันขึ้นว่า'System.Configuration.ConfigurationSettings.AppSettings' is a 'property' but is used like a 'method' ครับ
Date : 2010-07-10 21:15:38 By : kaoru_ce
 


 

No. 11



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


[2010-07-10 21:53:13] [Msg] Create table [contact_tis]
[2010-07-10 21:53:13] [Msg] Import table [contact_tis]
[2010-07-10 21:53:13] [Err] 1366 - Incorrect string value: '\xE4\xCA\xC7' for column 'FIRSTNAME' at row 2

ข้างบนเป็น error ตอน importแบบ tis620 ครับ
Date : 2010-07-10 21:56:35 By : kaoru_ce
 


 

No. 12



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


อันนี้ของ vb
ConfigurationSettings.AppSettings("MyDataConnectionStringFromAppSettingSection")

แก้ให้เป็นของ c#
ConfigurationSettings.AppSettings["MyDataConnectionStringFromAppSettingSection"]

ต่างกันที่วงเล็บ โทดค่ะพักนี้แก้ code ชาวบ้านเยอะ ภาษาเลยตีกัน จนขี้เลื่อยไหลมาเป็นกองๆๆแร้ว
ต้องหาเวลาโกยขี้แกลบเข้าไปแทนละค่ะ

แล้วถ้าฐานข้อมูลเป็น UTF8 และเครื่องมืออัตโนมัติแก้ไขให้ไม่ได้ก้อคงต้องทำเอง
UTF8 ก้อดีอย่างคือเป็นมาตรฐานแต่อย่างที่บอกยังไม่มี Collate สำหรับภาษาไทยใน Code แบบ
UTF8 เท่านั้นเองค่ะ แต่ตอนนี้การแสดงผลคงไม่มีปัญหาแล้วมั้งคะ


และมีข้อแนะนำเพิ่มเติมค่ะ
ผม ใช้ MySql .NET/Connector 1.0.7 แล้ว select ข้อมุลที่เป็น ภาษาไทยแล้วไม่ได้ครับ
Date : 2010-07-10 22:14:28 By : blurEyes
 


 

No. 13



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


ผมลองทำตามที่บอกทุกอย่างแล้วครับ ยังแสดงผลไม่ได้เหมือนเดิม ไม่รู้นำเข้าข้อมูลผิดหรือป่าว
ขนาดลองสร้างdbสร้างตารางใหม่เป็นtis620พิมพ์ข้อมูลภาษาไทยเข้าไปเองยังไม่ได้เลยครับ เหนื่อยใจจิงๆ
ยังไงก็ขอขอบคุณคุณstupid gurl มากนะครับที่ช่วยครับ
Date : 2010-07-11 13:18:24 By : kaoru_ce
 


 

No. 14



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ออนั่นอะดิ มันเป็นรัยหรอหรือว่าตอนลง msql server เลือก latin มาละคะ
มันต้องเลือก tis620 มาจากตงนู้นเลยอะค่ะ
Date : 2010-07-11 13:55:05 By : blurEyes
 


 

No. 15



โพสกระทู้ ( 23 )
บทความ ( 0 )



สถานะออฟไลน์


Quote:
ออนั่นอะดิ มันเป็นรัยหรอหรือว่าตอนลง msql server เลือก latin มาละคะ
มันต้องเลือก tis620 มาจากตงนู้นเลยอะค่ะ

ใช้ได้แล้วครับ ผมลงโปรแกรมใหม่ แล้วทำตามที่บอกก็ใช้ได้ครับ
น่าจะเป็นเพราะไม่ได้เลือก tis620อย่างที่บอกน่ะครับ
ขอบคุณมากครับ
Date : 2010-07-12 22:30:27 By : kaoru_ce
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยหน่อยครับ การใช้ภาษไทยกับ MySql ด้วย C# ผมเขียนโปรแกรมแบบ Client Server ด้วย C# กับ Mysql ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่