ตอนที่ 7 : ตัวอย่าง Windows Service การเชื่อมต่อกับ Database SQL Server (VB.Net,C#) |
ตัวอย่าง Windows Service การเชื่อมต่อกับ Database SQL Server (VB.Net,C#) บทความนี้จะเป็นตัวอย่างการเขียน Windows Service ทำงานเป็น Background Process ในระบบ Session ของ Windows ทำการเชื่อมต่อกับ Database ของ SQL Server ด้วยวิธีง่ายๆ และบน Windows Service เรายังสามารถใช้ ADO.Net รวมทั้งคำสั่งอื่นๆ ได้ตามปกติ
ในตัวอย่างนี้จะเป็นตัวอย่างการเชื่อมต่อและ Insert ลงใน Table ของ SQL Server ด้วยการใช้ Timer กำหนดเวลาทุกๆ 5 วินาที ให้ Insert ข้อมูลซึ่งเป็นเวลาที่มีการเรียก Timer ลงใน Table
ให้ออกแบบตารางง่ายๆ ดังรูป โดยประกอบด้วย ID (Auto Number) และ CallingTime
ใช้ Timer เพื่อกำหนดเวลาให้ทำงานทุกๆ 5 วินาที
สร้าง Event ของ Timer ให้อ่านเพิ่มเติมที่บทความนี้
การใช้ Timer บน Windows Service เพื่อกำหนดให้เวลา Services ทำงาน (VB.Net,C#)
จากนั้นเขียน Code ต่างๆ ดังนี้
C#
string strPath = AppDomain.CurrentDomain.BaseDirectory + "Log.txt";
string strConnString = @"Server=localhost;UID=sa;PASSWORD=;database=mydatabase";
protected override void OnStart(string[] args)
{
System.IO.File.AppendAllLines(strPath, new[] { "Starting time : " + DateTime.Now.ToString() });
this.timer1.Start();
}
protected override void OnStop()
{
System.IO.File.AppendAllLines(strPath, new[] { "Stop time : " + DateTime.Now.ToString() });
this.timer1.Stop();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
System.IO.File.AppendAllLines(strPath, new[] { "..calling time : " + DateTime.Now.ToString() });
//*** Save to Database
var objConn = new SqlConnection(strConnString);
objConn.Open();
string strSQL = "INSERT INTO myTable (CallingTime) "
+ " VALUES (@CallingTime)";
var objCmd = new SqlCommand(strSQL, objConn);
objCmd.Parameters.Add("@CallingTime", SqlDbType.DateTime).Value = DateTime.Now;
objCmd.ExecuteNonQuery();
objConn.Close();
}
VB.Net
Dim strPath As String = AppDomain.CurrentDomain.BaseDirectory + "Log.txt"
Dim strConnString As String = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase"
Protected Overrides Sub OnStart(ByVal args() As String)
Dim lines() As String = {"Starting time : " + DateTime.Now.ToString()}
System.IO.File.AppendAllLines(strPath, lines)
End Sub
Private Sub Timer1_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Dim lines() As String = {"..calling time :" + DateTime.Now.ToString()}
System.IO.File.AppendAllLines(strPath, lines)
'*** Save to Database
Dim objConn = New SqlConnection(strConnString)
objConn.Open()
Dim strSQL As String = "INSERT INTO myTable (CallingTime) " + " VALUES (@CallingTime)"
Dim objCmd = New SqlCommand(strSQL, objConn)
objCmd.Parameters.Add("@CallingTime", SqlDbType.DateTime).Value = DateTime.Now
objCmd.ExecuteNonQuery()
objConn.Close()
End Sub
Protected Overrides Sub OnStop()
Dim lines() As String = {"Stop time : " + DateTime.Now.ToString()}
System.IO.File.AppendAllLines(strPath, lines)
End Sub
การ Install/Uninstall โปรแกรม Windows Service ที่ได้จาก Visual Studio (VB.Net,C#)
ทดสอบการทำงาน
หลังจากที่ Install และ Start Services
ไฟล์ Log ได้ถูกสร้างและ Timer ทำงานทุกๆ 5 วินาที พร้อมกับการเขียนข้อความลงใน Text
ใน Database ก็จะเห็นว่ามีการ Insert ลงเข้าไปด้วย
ในกรณีที่ต้องการเชื่อมต่อกับ Database อื่นๆ เช่น MS Access, MySQL, Oracle หรืออื่นๆ ก็สามารถอ่านเพิ่มเติมได้จากบทความของไทยครีเอาที่เกี่ยวข้องกับ ADO.Net ซึ่งจะต่างกันแค่ตรง Connector และ ConenctionString ของแต่ล่ะ Database Type เท่านั้น
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2017-04-19 15:37:11 /
2017-04-20 16:02:19 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|