\

Facebook


วันจันทร์ที่ 26 สิงหาคม พ.ศ. 2556

รู้จักกับ ADO.Net frame work แล้วถึงตา SqlConnection บน C#


นอกจาก Modelง่ายๆของ Linq ที่พูดถึงในโพสที่ผ่านมาบน Winform ก็มีชุดคำสั่งที่ใช้ในการเชื่อมต่อฐานข้อมูลเช่นเดียวกันซึ่งไม่ได้ยากและซับซ้อนอะไรแต่จะมีข้อแตกต่างจาก Linq ที่ผมพบเจอก็คือ

1 ต้องใส่ Connecttion String ก่อนดึงข้อมูลมาแต่ละครั้ง ซึ่งน่าจะช่วยในเรื่องความปลอดภัยในการเข้าถึงข้อมูลระดับหนึ่งซึ่ง ADO.Net นั้นใช้การผูก model กับเบสตั้งแต่ครั้งแรกที่เริ่มสร้าง ทำให้การเข้าถึงนั้นง่ายเพียงแค่เรียก Data Entities ขึ้นมาแล้วอัพเดตเบสด้วยลิงคิว (เดี๋ยวศึกษาต่อเรื่อยๆครับ แล้วจะมาเล่าอีกที)
2 การคิวรี่ต้องใช้ string ที่เป็นภาษา sql นั้นคือจะรู้ว่าคิวรี่ถูกหรือผิดนั้นต้อง execute query ก่อนเพื่อรับผลลัพธ์มา แต่ ถ้าเป็น Linq จะง่ายกว่าเยอะ เพราะสามารถselectข้อมูลสดๆมาและรู้ด้วยว่ามีคอลัมม์ไหนบ้างบนฐานข้อมูล ซึ่งช่วยย่นเวลาได้เยอะทีเดียว


โค๊ดที่ใช้เรียกข้อมูลก็ง่ายๆ ไม่กี่ step ตามนี้
import libary โดย using System.Data.SqlClient;

ใช้ class SqlConnection สร้างคอเน็กชั่นใหม่ขึ้นมา
SqlConnection sqlConn = new SqlConnection(ConnectionString);
โดยพารามิเตอร์ของ  ConnectionString มีดังนี้
1 Host Server ที่ต้องการ connect : Data Source
2 ฐานข้อมูลที่จะ connect : Initial Catalog
3 Username ของ host server : User ID
4 Password ของ Host server : Password



หลังจากนั้นทดลองรันโปรแกรมเพื่อคอเน็คทดสอบดูครับ ถ้าไม่เป็ค่า Null แสดงว่า Connect สมบูรณ์

ถ้าผ่านมาได้อย่างสมบูรณ์จนถึงขั้นตอนนี้ ก็เริ่มต้นดึงข้อมูลได้เลย เริ่มจากการ open Connection ก่อน
sqlConn.Open();
แล้วสร้างคำสั่ง sql โดยสร้างจาก class : SqlCommand
SqlCommand sqlComm = new SqlCommand();
แล้วทดสอบคิวรี่select ง่ายๆจากตาราง User ที่ผมสร้างไว้ในเบสด้วยคิวรี่นี้
"SELECT * FROM [dbo].[User]" >> เลือกทุกอย่างที่อยู่ในตาราง User

เสร็จแล้วเราจะได้ผลลัพออกมา ส่งต่อให้กับตัวแปร reader ของ class SqlDataReader ซึ่งเป็นคลาสที่รองรับการอ่านค่าจากฐานข้อมูลซึ่งมีลักษณะตัวแปรเป็น Array นั่นหมายความว่าเราสามารถอ้างอิงตัวแปรแต่ละช่องได้โดย ชี้อินเด็กไปอ้างอิงเเต่ละ column นอกจากนี้ ยังมีคำสั่งง่ายๆให้การตรวจสอบว่าคิวรี่ที่ส่งไป return ข้อมูลกลับมาไหม ด้วยคำสั้ง

reader.HasRows ซึ่งจะ >= 1 ถ้ามีข้อมูลรีเทิร์นกลับ

ข้างล่างนี้เป็น โค๊ดสมบูรณ์ ลองโหลดไปทดลองดูกันได้ครับ กับ SQLบน windows application

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleSqlConnect
{
    class Program
    {
        static void Main(string[] args)
        {
            string table = "[dbo].[User]";
            SqlDataReader reader = null;
            string ConnectionString = GetConnectionString();
            SqlConnection sqlConn = new SqlConnection(ConnectionString);
            try
            {
                sqlConn.Open();
                Console.WriteLine("Connected");
                using (SqlCommand sqlComm = new SqlCommand())
                {
                string query = string.Concat("SELECT * FROM "+table);
                sqlComm.CommandText = query;
                sqlComm.CommandType = CommandType.Text;
                sqlComm.Connection = sqlConn;

                reader = sqlComm.ExecuteReader(); // exe query
             
                    while (reader.Read())
                    {
                        Console.WriteLine(reader[0] + " " + reader[1] + " " + reader[2]);
                    }
                }
                sqlConn.Close();
                 
            }
            catch(Exception ex)
            {
                Console.WriteLine("Connect fail");
            }
            Console.ReadLine();
        }

        private static string GetConnectionString()
        {
            string strConnect = "";

            string localhost = "(local)";
            string userName  = "sa";
            string Password  = "12345";
            string Catalog   = "Sample";

            strConnect = "Data Source=" + localhost + ";Initial Catalog=" + Catalog + ";User ID=" + userName + ";Password=" + Password + "";
            return strConnect;
        }
    }
}

ไม่มีความคิดเห็น:

May be like this posts

  • ระบบ LogIn ใน Windows Form Application
    04/04/2013 - 0 Comments
    ระบบ LogIn ใน Windows Form Application ซึ่งผมได้สร้างข้อมูลใน Table “Users” ไว้แล้ว…
  • 4 วิธี รับค่าจาก Form ใน ASP.NET MVC แบบมือโปร
    02/08/2017 - 0 Comments
    Form Post คือ โครตพื้นฐานการส่งข้อมูลบนเว็บไซด์แล้ว โดยฟอร์มจะทำหน้าที่สร้าง FormData ขึ้นมาเพื่อ POST…
  • [WinForm c#] เบาๆกับโปรแกรม test SQL Connection อย่างง่าย
    12/09/2013 - 0 Comments
    วันนี้ว่างๆ กับวันศุกร์ยมๆ (บรรยากาศเงียบๆ) ทดลองทำโปรแกรม ทดสอบคอนเน็คชั่นด้วย sql server 2008 r2…
  • สร้าง WebApp ด้วย VueJS บน Digital Ocean ตอนที่ 2 : ติดตั้ง nodejs + npm
    18/05/2018 - 0 Comments
    NodeJS คือ JavaScript framework ที่ใช้ทำ back-end ซึ่งในเคสของผม ผมเลือกเพื่อมาเป็นตัว API สำหรับให้…
  • POSTMAN สุดยอดเครื่องมือทดสอบ API
    13/08/2015 - 0 Comments
    หากต้องสร้าง Web API ขึ้นมาสักตัวนึงไว้ให้ลูกค้าหรือVerdor…
  • อยากให้ชีวิตง่ายขึ้นต้องใช้ Store Procedure [WinForm c# + SQL Server]
    11/09/2013 - 2 Comments
    คราวที่แล้วผม Blog เกี่ยวกับการติดต่อฐานข้อมูลด้วย SQLConnection ไปแล้ว…
  • [Android] Stream เสียงจาก PC บน Network ด้วย SoundWire
    23/03/2015 - 0 Comments
    ใครเคยมีประสบการณ์ จู่ๆลำโพง  Notebook ก็งอแง"เสียงแตก"ไปเฉยๆ…