.NET Logo
Welcome Guest Search | Active Topics | Members | Log In | Register

เขียนโค๊ด connect กับ database Access อย่างไหรคับ Options · View
zerozaaa
Posted: Monday, September 29, 2008 2:23:00 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 6/13/2008
Posts: 79

ส่วนของ Webconfig ผมเขียน
<connectionStrings>
<addname="ConnectionString"connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\dbschool.mdb;Persist Security Info=True"providerName="System.Data.OleDb"/>
</connectionStrings>

1.ถ้าผมจะเขียน connect และ โชว์ใน gridview1 เขียน code อย่างไหรคับ

ผมเขียน โค๊ดแบบนี้ connect ไม่ได้คับ

            conStrDB = WebConfigurationManager.ConnectionStrings["dbschool"].ToString();
            OleDbConnection Conn = new OleDbConnection(conStrDB);
            Conn.Open();
            sqlProducts = "SELECT * FROM admin";
            OleDbCommand com = new OleDbCommand(sqlProducts,Conn);
            OleDbDataReader dr = com.ExecuteReader();
            GridView1.DataSource = dr;
            GridView1.DataBind();

 

2.ถ้าจะเขียน class แล้ว นำมาใช้ในการ connect  select และ update , insert จะทำยังไงคับ และเรียกใช้ยังไงคับอธิบายทีคับ

ขออันที่1 ก่อนนะคับ

paedotnet
Posted: Monday, September 29, 2008 10:24:06 AM

Rank: มือเทพ
Groups: Member

Joined: 12/6/2007
Posts: 345
Location: bkk

ครับดูจากโค้ดแล้วมีสิ่งที่ต้องแก้ไขดังนี้
1. ตรง web.config คำว่า addname ต้องเขียนเป็น add เว้น name นะครับ
2. ให้นำไฟล์ Database.mdb มาไว้ใน folder App_Data ใน โปรเจค แล้วไม่ต้องมี \นำหน้าชื่อไฟล์ ฐานข้อมูล
   ตัวอย่างที่ถูกต้อง 


 <connectionStrings>
    <add name="ConnectionString" connectionString="Provider =Microsoft.Jet.OLEDB.4.0;Data Source =|DataDirectory|db1.mdb; Persist Security Info=True" providerName="System.Data.OleDb"/>
 </connectionStrings>


3. ในการใช้งาน WebConfigurationManager ต้อง using System.Web.Configuration; จากนั้นโค้ดในการดึงข้อมูลขึ้นมาก็เขียนดังนี้


  protected void Page_Load(object sender, EventArgs e)
    {
        string conStrDB = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        OleDbConnection Conn = new OleDbConnection(conStrDB);
        Conn.Open();
        string sqlProducts = "SELECT * FROM Table1";
        OleDbCommand com = new OleDbCommand(sqlProducts, Conn);
        OleDbDataReader dr = com.ExecuteReader();
        GridView1.DataSource = dr;
        GridView1.DataBind();
     
    } ***สังเกตุตรงที่ตรงคำสั่ง conStrDB = WebConfigurationManager.ConnectionStrings["dbschool"].ToString(); ถ้าเขียนแบบนี้จะผิดนะครับเพราะจะไม่ใช้ .ToString(); แต่จะใช้ .ConnectionString แทนให้แก้ไขตามโค้ดนี้ครับ conStrDB = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

ตัวอย่างโค้ดทั้งหมด


    protected void Page_Load(object sender, EventArgs e)
    {
        string conStrDB = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        OleDbConnection Conn = new OleDbConnection(conStrDB);
        Conn.Open();
        string sqlProducts = "SELECT * FROM Table1";
        OleDbCommand com = new OleDbCommand(sqlProducts, Conn);
        OleDbDataReader dr = com.ExecuteReader();
        GridView1.DataSource = dr;
        GridView1.DataBind();
     
    }

ใน web.config

<connectionStrings>
    <add name="ConnectionString" connectionString="Provider =Microsoft.Jet.OLEDB.4.0;Data Source =|DataDirectory|db1.mdb; Persist Security Info=True" providerName="System.Data.OleDb"/>
 </connectionStrings>

 

           



[With great power comes great responsibility]
zerozaaa
Posted: Tuesday, September 30, 2008 3:04:44 AM
Rank: มือพระกาฬ
Groups: Member

Joined: 6/13/2008
Posts: 79

ขอบพระคุณ คับ   ขอข้อ 2 ด้วยคับ ถ้าทำแยกเป็น class แล้วเรียกใช้จาก page อื่นๆๆ น่ะคับ

ถ้าจะเขียน class แล้ว นำมาใช้ในการ connect  select และ update , insert จะทำยังไงคับ และเรียกใช้ยังไงคับอธิบายทีคับ

paedotnet
Posted: Wednesday, October 01, 2008 12:21:38 AM

Rank: มือเทพ
Groups: Member

Joined: 12/6/2007
Posts: 345
Location: bkk

ในการทำเป็น คลาสสิ่งแรกต้องสร้างคลาสก่อนให้ไปที่โปรเจคคลิกขวาแล้วเลือก add new item 
 แล้วเลือก Class แล้ว ok คลาสที่เราสร้างก็จะอยู่ใน App_Code
จากนั้น ก็เพิ่มคำสั่ง using System.Data.SqlClient;
จากนั้นก็สร้างเมธอดสำหรับการ Select,Insert,Update,Delete ขึ้นมาดังนี้
ตัวอย่างโค้ด ของคลาส connectDatabase.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public class ConnectDatabase
{
 public ConnectDatabase()
 {
 
 }
    public  DataSet  SelectData()
    {
        SqlConnection con = new SqlConnection("Server=.;Database=TestData1;Integrated Security=SSPI");
        string comstr ="SELECT * FROM MTable";
        SqlDataAdapter da = new SqlDataAdapter(comstr, con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }
    public DataSet UpdateData(int id,string name, int age)
    {
        SqlConnection con = new SqlConnection("Server=.;Database=TestData1;Integrated Security=SSPI");
        string comstr = string.Format("UPDATE MTable SET name = '{0}' , age = {1} WHERE id ={2}", name, age,id);
        SqlDataAdapter da = new SqlDataAdapter(comstr, con);
        DataSet ds = new DataSet();
        da.Fill(ds,"MTable");
        da.UpdateCommand = new SqlCommand(string.Format("UPDATE MTable SET name = '{0}' , age = {1} WHERE id ={2}", name, age, id));
        da.UpdateCommand.Connection = con;
        return ds;
    }


    public DataSet InsertData(string name, int age)
    {
        SqlConnection con = new SqlConnection("Server=.;Database=TestData1;Integrated Security=SSPI");
        string comstr = string.Format("INSERT INTO MTable VALUES('{0}',{1})", name, age);
        SqlDataAdapter da = new SqlDataAdapter(comstr, con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        da.InsertCommand=new SqlCommand(string.Format("INSERT INTO MTable VALUES('{0}',{1})", name, age));
        da.InsertCommand.Connection = con;
        return ds;
    }
    public DataSet DeleteData(int id)
    {
        SqlConnection con = new SqlConnection("Server=.;Database=TestData1;Integrated Security=SSPI");
        string comstr = string.Format("DELETE FROM MTable WHERE id ={0}",id);
        SqlDataAdapter da = new SqlDataAdapter(comstr, con);
        DataSet ds = new DataSet();
        da.Fill(ds);
        da.DeleteCommand=new SqlCommand(string.Format("DELETE FROM MTable WHERE id ={0}",id));
        da.DeleteCommand.Connection = con;
        return ds;
    }
}


จากนั้นไปในหน้า Default.aspx
 ให้ทดสอบโดยการลากปุ่ม มาวางและ TextBox , GridView มาวางดังรูป


ซึ่ง TextBox ต่างๆนี้ผมสร้างขึ้นมาสำหรับ หน้าที่ต่างๆแต่ละหน้าที่ดังนี้
ปุ่ม Select เมื่อคลิกก็ใช้แสดงข้อมูลที่ GridView
ปุ่ม update จะต้องใส่ข้อมูลต่างๆดังนี้ id,name,age  เพื่อ update ข้อมูล name,age ตาม id ที่กำหนดไว้
ปุ่ม insert จะต้องใส่ข้อมูลดังนี้ name,age เพื่อ insert name,age ลงไปใน Database
ปุ่ม Delete จะต้องใส่ข้อมูล id เพื่อลบ id ตามที่ต้องการ
จากนั้น ก็ดับเบิลคลิกแต่ละปุ่มแล้วเขียนโค้ดดังนี้

ตัวอย่างโค้ด Default.aspx.cs

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e) //เมื่อคลิกที่ปุ่ม select ก็ให้ดึงค่ามาเก็บไว้ใน GridView
    {
        ConnectDatabase con_data = new ConnectDatabase();
        DataSet ds = con_data.SelectData();
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
    }
    protected void Button2_Click(object sender, EventArgs e) //update โดยรับค่ามาจาก TextBox1,2,3
    {
        int id = Int32.Parse(TextBox1.Text);
        string name = TextBox2.Text;
        int age = Int32.Parse(TextBox3.Text);
        ConnectDatabase con = new ConnectDatabase();
        DataSet ds = con.UpdateData(id, name, age);
      
    }
    protected void Button3_Click(object sender, EventArgs e)//insert
    {
        string name = TextBox4.Text;
        int age = Int32.Parse(TextBox5.Text);
        ConnectDatabase con = new ConnectDatabase();
        DataSet ds = con.InsertData(name, age);
    }
    protected void Button4_Click(object sender, EventArgs e)//delete
    {
        int id = Int32.Parse(TextBox6.Text);
        ConnectDatabase con = new ConnectDatabase();
        DataSet ds = con.DeleteData(id);
    }
}
 
แล้วทดสอบดู
*** ในตัวอย่างนี้ผมสร้าง Database ชื่อ TestData1
มี Table ชื่อ MTable ในtable นี้มี field ดังนี้
id   int   pk   auto increment
name nvarchar null
age  int null


[With great power comes great responsibility]
zerozaaa
Posted: Wednesday, October 01, 2008 10:04:41 PM
Rank: มือพระกาฬ
Groups: Member

Joined: 6/13/2008
Posts: 79

ขอบคุณมากคับ เดี๋ยวผมจะเอาไปศึกษา คับ

arapee
Posted: Thursday, October 02, 2008 10:38:18 AM
Rank: มือฝึกหัด
Groups: Member

Joined: 10/2/2008
Posts: 1
Location: -

ขอบคุณมากครับ

เดี๋ยวลองดู

Users browsing this topic
Guest


Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Main Forum RSS : RSS

YAFVision Theme Created by Jaben Cargman (Tiny Gecko)
Powered by Yet Another Forum.net version 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.


Sponsored by