thaiall logomy background ภาษาซีชาร์ป
my town
csharp

ภาษาซีชาร์ป

ซีชาร์ป (C#) หรือ ภาษาซีชาร์ป (C#) คือ ภาษาโปรแกรมเชิงวัตถุที่ทำงานบนดอทเน็ตเฟรมเวิร์ค พัฒนาโดยบริษัทไมโครซอฟท์ มีโครงสร้างการเขียนที่พัฒนามาจากภาษาซี มีตัวแปลภาษาติดตั้งในชุดพัฒนาซอฟท์แวร์ Visual Studio และทำงานบนเครื่องบริการวินโดว์ (Windows Server) ซึ่งทำงานร่วมกับเครื่องมือต่าง ๆ ใน Visual studio ได้อย่างลงตัว

::odbc::
::windowsform::
::csharp-station::


แบทไฟล์ทดสอบใน console
+ batch: helloworld.cs

แนะนำเว็บ(web guides)
+ ภาษาซี (thaiall.com)
+ csharp-station.com *
+ thaicreate.com
+ asp101.com **
+ visual studio
+ C# โดย ลาภลอย
ได้รับ email แนะนำเว็บไซต์สอน C# จาก Alex Nordeen ค้นดูพบว่าเค้าส่งข้อความคล้ายกันให้กับนักกพัฒนามากมาย แจ้งว่าเค้าทำเว็บไซต์สอน C# ที่ guru99.com เข้าไปอ่านเรื่อง C# Fundamentals - Data Type, Arrays, Variables and Operators & Enumeration ก็มีเนื้อหาแน่นจริง ๆ ครับ
ความหมาย ภาษาซี คือ ภาษาคอมพิวเตอร์ใช้สำหรับพัฒนาโปรแกรมทั่วไป ถูกพัฒนาโดยเดนนิส ริสชี่ (Dennis Ritchie) เมื่อประมาณต้นปีค.ศ. 1970 เพื่อใช้งานบนระบบปฏิบัติการยูนิกส์ ต่อมาถูกนำไปใช้ในระบบปฏิบัติการต่าง ๆ จนถูกใช้เป็นภาษาพื้นฐานสำหรับภาษาอื่น เช่น ภาษาจาวา (Java) ภาษาพีเอชพี (PHP) ภาษาซีชาร์ป (C#) ภาษาซีพลัสพลัส (C++) ภาษาเพิร์ล (Perl) ภาษาไพทอล (Python) หรือภาษารูบี้ (Ruby)
ภาษาชาร์ป (C#) คือ ภาษาโปรแกรมเชิงวัตถุที่ทำงานบน .Net framework พัฒนาโดยบริษัทไมโครซอฟท์ที่มี Anders Hejlsberg เป็นหัวหน้าโครงการ และได้นำ C# เข้าไปอยู่ในชุดพัฒนาซอฟท์แวร์ Visual Studio ตั้งแต่รุ่น ปัจจุบันเป็นภาษาที่มีมาตรฐานคือ มาตรฐาน ECMA-334 C# Language Specification เมื่อธันวาคม 2547 และได้อีกมาตรฐานคือ มาตราฐาน ISO/IEC 23270:2003
ไมโครซอฟท์ วิชวลสตูดิโอ (Microsoft Visual Studio) คือ ชุดรวมเครื่องมือพัฒนาซอฟท์แวร์ (Integrated Development Environment) สร้างโดยไมโครซอฟท์ ซึ่งเป็นเครื่องมือที่ช่วยพัฒนาโปรแกรมคอมพิวเตอร์ เว็บไซต์ เว็บแอปพลิเคชัน และเว็บเซอร์วิส จุดเด่น คือ การปรับปรุงขั้นตอนการพัฒนาซอฟท์แวร์ ช่วยในการแก้ปัญหาที่ซับซ้อนให้ง่ายขึ้น และน่าพอใจกว่าเดิม ระบบรองรับการทำงานของไมโครซอฟท์วินโดวส์ (Microsoft Windows) พ็อคเกตพีซี (Pocket PC) และสมาร์ทโฟน (Smartphone) ในปัจจุบันวิชวลสตูดิโอสามารถใช้ภาษาโปรแกรมที่เป็นภาษาดอตเน็ตในโปรแกรมเดียวกัน เช่น VB.NET, C++, C#, J# เป็นต้น
History of Visual Studio กับ code name
+ Visual Studio - April 1995
+ Visual Studio 97 - Boston - February 1997
+ Visual Studio 6.0 - Aspen - June 1998
+ Visual Studio .NET 2002 - Rainier - February 13, 2002
+ Visual Studio .NET 2003 - Everett - April 24, 2003
+ Visual Studio 2005 - Whidbey - November 7, 2005
+ Visual Studio 2008 - Orcas - November 19, 2007
+ Visual Studio 2010 - Dev10/Rosario - April 12, 2010
+ Visual Studio 2012 - Dev11 - September 12, 2012
+ Visual Studio 2013 - Dev12 - October 17, 2013
การพัฒนาแอพพลิเคชันด้วยภาษา C# 1. วินโดว์แอพพลิเคชัน (Windows Application)
2. คอนโซลแอพพลิเคชัน (Console Application)
3. เว็บแอพพลิเคชั่น หรือ เอเอสพีดอทเน็ตด้วย C# (Web Application หรือ ASP.NET ด้วย C#)
1. วินโดว์แอพพลิเคชัน (Windows Application)
สร้างวินโดว์แอพพลิเคชันด้วยวิชวลสตูดิโอดอทเน็ต แล้วเลือก C# จะได้แฟ้ม form1.cs และ program.cs เป็นค่าปริยาย (Default Form) ผู้พัฒนาสามารถเรียกใช้ Control ใน Toolbox เช่น button หรือ textbox เหมือนกับใช้ใน Visual Basic ตัวอย่างคำสั่งที่ใส่เข้าไปในปุ่มคำสั่ง หรือฟังก์ชัน button1_Click คือ MessageBox.Show("5"); เพื่อแสดงผลข้อมูลเป็นการทดสอบ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1 {
public partial class Form1 : Form  {
  public Form1() {
    InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e) {
    MessageBox.Show("5");
  }
}
}
2. คอนโซลแอพพลิเคชัน (Console Application)
การแปล และประมวลผลใน Console
- Command ใน Editplus เป็น "c:\windows\system32\cmd.exe" "/k"
- Argument ใน Editplus เป็น c:\windows\microsoft.net\framework\v2.0.50727>
csc helloworld.cs
public class helloworld {
public static void main(string[] args) {
  string name = "hello";
  System.Console.WriteLine(name);
}
}
// DOS> helloworld
3. เว็บแอพพลิเคชั่น หรือ เอเอสพีดอทเน็ตด้วย C# (Web Application หรือ ASP.NET ด้วย C#)
<%@ Page Language="C#" Debug="true" %>
<script runat="server">
void Button1_OnClick(object sender, EventArgs e) {
  this.lblText1.Text = this.TextArea1.Value.Replace("\r\n","<br>");
}</script>
<html><head></head><body><form runat="server">
<textarea id="TextArea1" cols="40" rows="4" runat="server" />
<input id="Button1" type="button" 
onserverclick="Button1_OnClick" runat="server" />
<hr />
<asp:Label id="lblText1" runat="server" />
</form></body></html>
// DOS>explorer http://www.thaiabc.com/csharp/textarea1.aspx
// จะใช้ <input id="lblText2" type="label" runat="server" /> แทนไม่ได้ พบ error
short 1. เรียกใช้ x.dll ที่เป็น code behind ไว้ใน /bin
+ มีรายละเอียดเพิ่มเติม ที่เคยเขียน code ลักษณะนี้ แต่ใช้ VB ทำงานกับ web application เช่นเดียวกัน
+ DOS>explorer http://www.thaiabc.com/csharp/callxdll.aspx
<%@ Page Language="C#" Inherits="x" %>
<script runat="server">
void Page_Load() {
  n1.Text="12";
}</script>
<body><form runat="server">
<asp:Textbox ID="n1" runat="server" />
<asp:Textbox ID="n2" runat="server" />
<asp:Button ID="b1" text="hello" runat="server" onclick="myclick" />
</form>
1. โครงสร้างโปรแกรม (Program Structure)
using System;
namespace hello {
public class helloworld {
public static void main(string[] args) {

string name = "C#";
// เห็นผล ถ้าส่งค่าผ่าน command line
if (args.length == 1) name = args[0];
console.writeline("สวัสดี " + name); } } }
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1 {
class Program  {
static void Main(string[] args) {

Console.Write("x");
Console.Read(); } } }
2. หมายเหตุ (Comments)
// บรรทัดเดียว

/* หลายบรรทัด
หลายบรรทัด
หลายบรรทัด */
/// หมายเหตุสำหรับ XML บรรทัดเดียว

/** หมายเหตุสำหรับ XML หลายบรรทัด
หมายเหตุสำหรับ XML หลายบรรทัด
หมายเหตุสำหรับ XML หลายบรรทัด */
3. แบบข้อมูล (Data Types)

Value Types
bool
byte, sbyte
char
short, ushort, int, uint, long, ulong
float, double
decimal

Reference Types
object
string

Initializing
bool correct = true;
byte b = 0x2A; // hex
object person = null;
string name = "Dwight";
char grade = 'B';
DateTime today = DateTime.Parse("12/31/2007 12:15:00");
decimal amount = 35.99m;
float gpa = 2.9f;
double pi = 3.14159265;
long lTotal = 123456L;
short sTotal = 123;
ushort usTotal = 123;
uint uiTotal = 123;
ulong ulTotal = 123;

Type Information
int x;
Console.WriteLine(x.GetType()); // Prints System.Int32
Console.WriteLine(typeof(int)); // Prints System.Int32
Console.WriteLine(x.GetType().Name); // prints Int32

Type Conversion
float d = 3.5f;
int i = (int)d; // set to 3 (truncates decimal)

4. ค่าคงที่ (Constants) const int MAX_MONTHS = 12;
const int MAX_DAY = 31;
readonly float TAX = 10.31f;
readonly float INTEREST = 2.5f;
5. อีนิวเมอเรชั่น (Enumerations) enum Action {Start, Stop, Rewind, Forward};
enum Status {Flunk = 50, Pass = 70, Excel = 90};

Action a = Action.Stop;
if (a != Action.Start)
Console.WriteLine(a + " is " + (int) a); // Prints "Stop is 1"

Console.WriteLine((int) Status.Pass); // Prints 70
Console.WriteLine(Status.Pass); // Prints Pass
6. ตัวดำเนินการ (Operators)

Comparison
== < > <= >= !=

Arithmetic
+ - * /
% (mod)
/ (integer division if both operands are ints)
Math.Pow(x, y)

Assignment
= += -= *= /= %= &= |= ^= <<= >>= ++ --

Bitwise
& | ^ ~ << >>

Logical
&& || & | ^ !
Note: && and || perform short-circuit logical evaluations

String Concatenation
+

7. ตัวเลือก (Choices)

greeting = age < 20 ? "What's up?" : "Hello";

if (age < 20)
greeting = "What's up?";
else
greeting = "Hello";

// Multiple statements must be enclosed in {}
if (x != 100 && y < 5) {
x *= 5;
y *= 2;
}

No need for _ or : since ; is used to terminate each statement.
if (x > 5)
x *= y;
else if (x == 5)
x += y;
else if (x < 10)
x -= y;
else
x /= y;

// Every case must end with break or goto case
switch (color) { // Must be integer or string
case "pink":
case "red": r++; break;
case "blue": b++; break;
case "green": g++; break;
default: other++; break; // break necessary on default
}

8. ทำซ้ำ (Loops) Pre-test Loops:
// no "until" keyword
while (c < 10)
c++;

for (c = 2; c <= 10; c += 2)
Console.WriteLine(c);

Post-test Loop:
do
c++;
while (c < 10);

// Array or collection looping
string[] names = {"Fred", "Sue", "Barney"};
foreach (string s in names)
Console.WriteLine(s);

// Breaking out of loops
int i = 0;
while (true) {
if (i == 5)
break;
i++;
}

// Continue to next iteration
for (i = 0; i < 5; i++) {
if (i < 4)
continue;
Console.WriteLine(i); // Only prints 4
}

9. อาร์เรย์ (Arrays)

int[] nums = {1, 2, 3};
for (int i = 0; i < nums.Length; i++)
Console.WriteLine(nums[i]);

// 5 is the size of the array
string[] names = new string[5];
names[0] = "David";
names[5] = "Bobby"; // Throws System.IndexOutOfRangeException

// C# can't dynamically resize an array. Just copy into new array.
string[] names2 = new string[7];
Array.Copy(names, names2, names.Length); // or names.CopyTo(names2, 0);

float[,] twoD = new float[rows, cols];
twoD[2,0] = 4.5f;

int[][] jagged = new int[3][] {
new int[5], new int[2], new int[3] };
jagged[0][4] = 5;

10. ฟังก์ชัน (Functions) // Pass by value (in, default), reference (in/out), and reference (out)
void TestFunc(int x, ref int y, out int z) {
x++;
y++;
z = 5;
}

int a = 1, b = 1, c; // c doesn't need initializing
TestFunc(a, ref b, out c);
Console.WriteLine("{0} {1} {2}", a, b, c); // 1 2 5

// Accept variable number of arguments
int Sum(params int[] nums) {
int sum = 0;
foreach (int i in nums)
sum += i;
return sum;
}

int total = Sum(4, 3, 2, 1); // returns 10

/* C# doesn't support optional arguments/parameters. Just create two different versions of the same function. */
void SayHello(string name, string prefix) {
Console.WriteLine("Greetings, " + prefix + " " + name);
}

void SayHello(string name) {
SayHello(name, "");
}

11. สตริงค์ (Strings)

Escape sequences
\r // carriage-return
\n // line-feed
\t // tab
\\ // backslash
\" // quote

// String concatenation
string school = "Harding\t";
school = school + "University"; // school is "Harding (tab) University"

// Chars
char letter = school[0]; // letter is H
letter = Convert.ToChar(65); // letter is A
letter = (char)65; // same thing
char[] word = school.ToCharArray(); // word holds Harding

// String literal
string msg = @"File is c:\temp\x.dat";
// same as
string msg = "File is c:\\temp\\x.dat";

// String comparison
string mascot = "Bisons";
if (mascot == "Bisons") // true
if (mascot.Equals("Bisons")) // true
if (mascot.ToUpper().Equals("BISONS")) // true
if (mascot.CompareTo("Bisons") == 0) // true

Console.WriteLine(mascot.Substring(2, 3)); // Prints "son"

// String matching
// No Like equivalent - use regular expressions


using System.Text.RegularExpressions;
Regex r = new Regex(@"Jo[hH]. \d:*");
if (r.Match("John 3:16").Success) // true

// My birthday: Oct 12, 1973
DateTime dt = new DateTime(1973, 10, 12);
string s = "My birthday: " + dt.ToString("MMM dd, yyyy");

// Mutable string
System.Text.StringBuilder buffer = new System.Text.StringBuilder ("two");
buffer.Append("three ");
buffer.Insert(0, "one ");
buffer.Replace("two", "TWO");
Console.WriteLine(buffer); // Prints "one TWO three"

12. การจัดการข้อยกเว้น (Exception Handling)

// Throw an exception
Exception up = new Exception("Something is really wrong.");
throw up; // ha ha

// Catch an exception
try {
y = 0;
x = 10 / y;
}
catch (Exception ex) { // Argument is optional, no "When" keyword
Console.WriteLine(ex.Message);
}
finally {
// Requires reference to the Microsoft.VisualBasic.dll
// assembly (pre .NET Framework v2.0)

Microsoft.VisualBasic.Interaction.Beep();
}

13. เนมสเปซ (Namespaces)

namespace Harding.Compsci.Graphics {
...
}

// or

namespace Harding {
namespace Compsci {
namespace Graphics {
...
}
}
}

using Harding.Compsci.Graphics;

14. คลาส / อินเทอเฟส (Classes / Interfaces)

Accessibility keywords
public
private
internal
protected
protected internal
static

// Inheritance
class FootballGame : Competition {
...
}


// Interface definition

interface IAlarmClock {
...
}

// Extending an interface
interface IAlarmClock : IClock {
...
}


// Interface implementation

class WristWatch : IAlarmClock, ITimer {
...
}

15. คอนสตักเตอร์ (Constructors / Destructors)

class SuperHero {
private int _powerLevel;

public SuperHero() {
_powerLevel = 0;
}

public SuperHero(int powerLevel) {
this._powerLevel= powerLevel;
}

~SuperHero() {
// Destructor code to free unmanaged resources.
// Implicitly creates a Finalize method

}
}

16. การใช้วัตถุ (Using Objects)

SuperHero hero = new SuperHero();

// No "With" construct
hero.Name = "SpamMan";
hero.PowerLevel = 3;

hero.Defend("Laura Jones");
SuperHero.Rest(); // Calling static method

SuperHero hero2 = hero; // Both reference the same object
hero2.Name = "WormWoman";
Console.WriteLine(hero.Name); // Prints WormWoman

hero = null ; // Free the object

if (hero == null)
hero = new SuperHero();

Object obj = new SuperHero();
if (obj is SuperHero)
Console.WriteLine("Is a SuperHero object.");

// Mark object for quick disposal
using (StreamReader reader = File.OpenText("test.txt")) {
string line;
while ((line = reader.ReadLine()) != null)
Console.WriteLine(line);
}
17. โครงสร้าง (Structs) struct StudentRecord {
public string name;
public float gpa;

public StudentRecord(string name, float gpa) {
this.name = name;
this.gpa = gpa;
}
}

StudentRecord stu = new StudentRecord("Bob", 3.5f);
StudentRecord stu2 = stu;

stu2.name = "Sue";
Console.WriteLine(stu.name); // Prints Bob
Console.WriteLine(stu2.name); // Prints Sue

18. คุณสมบัติ (Properties) private int _size;

public int Size {
get {
return _size;
}
set {
if (value < 0)
_size = 0;
else
_size = value;
}
}

foo.Size++;

19. ดีรีเกท (Delegates / Events)

delegate void MsgArrivedEventHandler(string message);

event MsgArrivedEventHandler MsgArrivedEvent;

// Delegates must be used with events in C#

MsgArrivedEvent += new MsgArrivedEventHandler(My_MsgArrivedEventCallback);
MsgArrivedEvent("Test message"); // Throws exception if obj is null
MsgArrivedEvent -= new MsgArrivedEventHandler(My_MsgArrivedEventCallback);

using System.Windows.Forms;

Button MyButton = new Button();
MyButton.Click += new System.EventHandler(MyButton_Click);

private void MyButton_Click(object sender, System.EventArgs e) {
MessageBox.Show(this, "Button was clicked", "Info",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}

20. คอนโซลไอ/โอ (Console I/O)

Console.Write("What's your name? ");
string name = Console.ReadLine();
Console.Write("How old are you? ");
int age = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("{0} is {1} years old.", name, age);
// or
Console.WriteLine(name + " is " + age + " years old.");

int c = Console.Read(); // Read single char
Console.WriteLine(c); // Prints 65 if user enters "A"

21. แฟ้มไอ/โอ (File I/O)

using System.IO;

// Write out to text file
StreamWriter writer = File.CreateText("c:\\myfile.txt");
writer.WriteLine("Out to file.");
writer.Close();

// Read all lines from text file
StreamReader reader = File.OpenText("c:\\myfile.txt");
string line = reader.ReadLine();
while (line != null) {
Console.WriteLine(line);
line = reader.ReadLine();
}
reader.Close();

// Write out to binary file
string str = "Text data";
int num = 123;
BinaryWriter binWriter = new BinaryWriter(File.OpenWrite("c:\\myfile.dat"));
binWriter.Write(str);
binWriter.Write(num);
binWriter.Close();

// Read from binary file
BinaryReader binReader = new BinaryReader(File.OpenRead("c:\\myfile.dat"));
str = binReader.ReadString();
num = binReader.ReadInt32();
binReader.Close();

hello world on another computer
+ helloexe_2case.rar
+ sharpdevelop_test1test2.rar
+ socket_listener_client.rar
+ myshutdown.rar
public static void StartServer()  
{   
	string HostName = Dns.GetHostName();  
	IPAddress[] ipaddress = Dns.GetHostAddresses(HostName);
	Console.WriteLine(HostName);			
	IPHostEntry host;
	IPAddress ipAddress = null;
	foreach(IPAddress ip in ipaddress)  
	{  
		Console.WriteLine(ip.ToString());
		host = Dns.GetHostEntry(ip); // localhost
		ipAddress = ip;            	
	}         	
	// use only last ipaddress in server            
	IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11111);
	try {   
		Socket listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);    
		listener.Bind(localEndPoint); 
		listener.Listen(10);  
		Console.WriteLine("Waiting for a connection...");  
		Socket handler = listener.Accept();  
	}  
	catch (Exception e)  
	{  
		Console.WriteLine(e.ToString());  
	}
	Process cmd = new Process();
	cmd.StartInfo.FileName = @"cmd.exe";
	cmd.StartInfo.Arguments = @"/K shutdown /s /t 180"; // dir  
	cmd.Start();
	cmd.WaitForExit();			    	    
	Console.WriteLine("\n to stop process by DOS> shutdown /a");  
	Console.ReadKey();  
}        	
แนะนำเว็บ (Web Guides)
+ http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
Reference : Frank McCown, Ph.D. ( Blog )
Assistant Professor of Computer Science at Harding University.
tutorial
Tutorial
ของ csharp-station
Contents
+ 01: Getting Started #
+ 02: Expressions, Types, and Variables #
+ 03: Control Statements - Selection #
+ 04: Control Statements - Loops #
+ 05: Methods #
+ 06: Namespaces #
+ 07: Introduction to Classes #
+ 08: Class Inheritance #
+ 09: Polymorphism #
+ 10: Properties #
+ 11: Indexers #
+ 12: Structs #
+ 13: Interfaces #
+ 14: Introduction to Delegates and Events #
+ 15: Introduction to Exception Handling #
+ 16: Using Attributes #
+ 17: Enums #
+ 18: Overloading Operators #
+ 19: Encapsulation #
+ 20: Introduction to Generic Collections #
+ 21: Anonymous Methods #
+ 22: Topics on C# Type #
+ 23: Working with Nullable Types #
ใช้ codefile เรียก C# มาทำงานร่วมกับ ASP.NET ตัวอย่างนี้ ทำงานบน Windows Server 2016 ได้ ซึ่งก่อนหน้านี้ได้โค้ดที่ทำงานบน Windows Server 2008 ที่ต้องนำมาปรับแก้เรื่อง Case Sensitive และลดการเรียกใช้ Class จาก C# หลายแฟ้ม ให้เหลือเพียงแฟ้มเดียว และทดสอบการเชื่อมต่อกับระบบฐานข้อมูล MySQL ซึ่งต้องกำหนด Database, User name และ Passw0rd ให้ถูกต้อง ซึ่งเพื่อนที่ชวนคุยเรื่องนี้ใช้ระบบฐานข้อมูล SQL Server ส่วนโค้ดที่เคยเขียนบน Windows Server ใช้ Microsoft Jet เชื่อมต่อกับแฟ้ม .MDB
ารเขียนโค้ด แบ่งการทำงานเป็น 2 แฟ้ม คือ 1) testconn1.aspx เป็นฟอร์มรับข้อมูลจากผู้ใช้ ถือว่าเป็นงานของ Front-end developer ส่วน 2) testconn1.aspx.cs เป็นส่วนประมวลผลด้านหลังที่เชื่อมต่อกับระบบฐานข้อมูล หรือตรวจสอบข้อมูล ถือว่าเป็นงานของ Back-end developer และเขียน story telling เรื่อง 2 โค้ดนี้ไว้ที่ facebook.com/reel/760467702643218
test connection test connection test connection
// testconn1.aspx
<%@ Page Language="C#"
CodeFile="testconn1.aspx.cs"
Inherits = "Mynamespace.Mypage" %>
<!DOCTYPE html><html lang="th">
<head runat="server">
<meta charset="utf-8" />
<title>Testconn1</title>
</head><body>
<% 
Response.Write("Hello World<br/>"); 
HttpCookie reqCookies = Request.Cookies["Ck"];
if(reqCookies != null) {
  Response.Write("[" + reqCookies["data1"] + "]");
}
%>
</body></html>
// testconn1.aspx.cs
using System; // EventArgs
using System.Data.OleDb;
using System.Web; // HttpCookie
using System.Web.UI;
namespace Mynamespace {
// class #1
public partial class Mypage : System.Web.UI.Page {
  protected void Page_Load(object sender, EventArgs e){
    try { 
      Testconn1 conn = new Testconn1();
      HttpCookie Ck = new HttpCookie("Ck");
      Ck["data1"] = conn.GetDb();
      Response.Cookies.Add(Ck);
      } catch(Exception ex) {	}
    }
}
// class #2
public class Testconn1 {
  public string GetDb() {
    string Strconn = @"Provider=MySQLProv;" +
    "Data Source=ohno;User Id=ohno;Password=ohno;";
    try {
      OleDbConnection conn = new OleDbConnection();
      conn.ConnectionString = Strconn;
      conn.Open();
    } catch(Exception ex) { return "oh no"; }
    return "ok";
  }		
}
} // http://thaiabc.com/csharp/testconn1.aspx
Thaiall.com