ผมได้ลองทดลองตามหนังสือที่ซื้อมาแล้ว แต่เหมือนหนังสือมันวางยาครับ ผมดึงข้อมูลมาดูได้ แต่บันทึกกลับไม่ได้
วานผู้รู้ รบกวนตอบด้วยนะครับ
Printable View
ผมได้ลองทดลองตามหนังสือที่ซื้อมาแล้ว แต่เหมือนหนังสือมันวางยาครับ ผมดึงข้อมูลมาดูได้ แต่บันทึกกลับไม่ได้
วานผู้รู้ รบกวนตอบด้วยนะครับ
Is it possible to post your code here ? Cause we don't know which part of your code that goes wrong. Maybe we can analyze that
Sincerely yours,
อย่างที่ท่่าน snapter บอกแหละครับ ถ้าอยากให้ช่วยแก้ปัญหาก็ลองเอาตัวอย่าง code ที่คิดว่าผิดมาลองโพสต์ดู
เพราะจะได้บอกได้ว่าผิดตรงไหน แล้วอีกอย่างจะได้เรียนรู้ด้วยว่าสาเหตุที่ผิดๆมาจากอะไร
เพราะคำถามที่ตั้งไว้มันค่อนข้างที่จะกว้างครับ ยังไงก็ลองเอา code มาลงไว้ก่อนเพื่อนๆสมาชิกคนอื่นๆจะได้ช่วยบอกได้ว่าควรจะปรับแก้ตรงไหน
ว่าจะมาช่วบแก้ปัญหาซักหน่อย นี้ไม่มีอะไรบอกกันเลยแล้วจะบอกไงนิ
ถ้ายังแก้ไขปัญหาไม่ได้ก็ลง CODE มานะครับ เด๋วจะดูให้แต่ตอนนี้ช่วย
ไม่ได้จริงๆ เพราะไม่มีไรให้ผมดูเลย
เป็น Class ที่ผมเขียนไว้สำหรับติดต่อฐานข้อมูลโดยเฉพาะ
แต่ตัวนี้ติดต่อ mysql นะครับ หากจะติดต่ออย่างอื่นก็เปลี่ยน connection string เอา
โดยใน class นี้จะประกอบไปด้วย
property
- CommandText ใส่คำสั่ง sql เข้าไป
method
- Query คืนค่าเป็น Boolean
- Scalar คืนค่าเป็น Object
- Reader คืนค่าเป็น DataReader
- Adapter คืนค่าเป็น DataSet
และสุดท้ายคือ
- Close ไว้ปิดการเชื่อมต่อ
วิธีใช้นะครับ
- Query คืนค่าเป็น Boolean
ใช่สำหรับ ส่งคำสั่งไป จัดการกับฐานข้อมูล พวกคำสั่ง inset, update delete เป็นต้น (ที่ไม่ใช่การ select ข้อมูลออกมา)
แล้วค่าที่คืนมาจะเป็น boolean เพื่อเช็คว่า query สำเร็จหรือเปล่า (true or false)
[code]
mysqlCmd mysql = new mysqlCmd();
mysql.CommandText = "INSERT INTO member(id,name,password) VALUES('111', 'maxma', 'WDOOKFI')";
Boolean result = mysql.Query();
if (result)
{
อันนี้เป็น Class ที่ผมใช้ในการ Connect Database ครับผม
โดยผมจะแยกออกเป็น 3 เลเยอร์
1. Data Layer
2. Business Layer
3. Application Layer
โดยปกติ การที่จะ Connect Database นั้น ในภาษาแบบ Structure Programming ได้แก่ Turbo C,Pascal,QBasic
หรือภาษา ที่ใช้เขียน Web รุ่นเก่าๆ (Semi-Structure) เช่น ASP,PHP 3.0 วิธีการ Connect Database โดยส่วนใหญ่ จะเป็นการเขียน Code โดยสร้าง Connection String ขึ้นมาชุดหนึ่ง แล้วก็นำคำสั่งไป Execute โดยการ Open Connection จากนั้น ก็ส่งค่า Query String ในภาษา
SQL ให้ไป Run ใน Server แล้วได้ Record Set กลับมา แล้วเราก็นำมาแสดงบนหน้าจอ บน Web ซึ่งแบบนี้เป็นแนวคิดของภาษารุ่นเก่า
แต่ Concept ของ OOP (Object-Oriented Programming) จะใช้แนวคิดที่ต่างออกไป คือจะต้องมอง วิธีการ Connection เป็น เหมือนวัตถุก้อนหนึ่งครับ ทำให้ต้องแบ่งขั้นตอนการ Connection เป็นชั้นๆ เพื่อให้สามารถนำไป พัฒนา Software ที่มีความซับซ้อน โดยใช้เวลาน้อยลงในการเขียน Code ซึ่งในที่นี้ผมแบ่งเป็น 3 เลเยอร์
1. Data Layer จะเป็น Code ที่ ดำเนินการเกี่ยวกับ Select,Insert,Update,Delete,Search ที่เป็น SQL Command
2. Business Layer จะเป็น Code ที่ ดำเนินการเกี่ยวกับการ การทำงานที่ต่อเนื่องจาก Data Layer คือเอาข้อมูลมาทำการ Sorting, ส่งค่าระหว่าง Class ของ Object ที่เป็น Business Layer ด้วยกัน เช่น สั่งให้เช็คสิทธิ์ ของการเข้าถึงหน้าจอ เป็นต้น
3. Application Layer จะเป็น Code ที่ ดำเนินการเกี่ยวกับหน้าจอ Screen และส่วนที่ติดต่อกับผู้ใช้ ทั้งหมด
Code ที่ผมจะเอามาลงเป็น ส่วนของ Class ที่เป็น การ Connection กับ Database อย่างเดียวนะครับ เพราะ Business Layer กับ Application Layer มันจะปรับเปลี่ยนไปตาม โปรแกรมที่คุณจะเขียนครับ
[code]
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.Odbc;
using System.Configuration;
using System.Data.Common;
namespace YourName.BaseClass
{
string dpStr = ConfigurationSettings.AppSettings["provider"].ToString();
string cnStr = ConfigurationSettings.AppSettings["cnStr"].ToString();
2 บรรทัดนี้ ผมใช้ Name Space System.Configuration; เพื่อกำหนดค่า Connection String ที่อยู่ในไฟล์ XML เพื่อใช้เปลี่ยน Connection String กรณีที่จะเปลี่ยนจากการใช้ฐานข้อมูล SQL Server ไปเป็น Oracle หรือไปเป็น MySQL ,...ฯลฯ
แต่ถ้าคิดว่าต้องการเขียนศึกษาแบบพื้นฐาน ก็ให้เปลี่ยนเป็น
string dpStr = "System.Data.SqlClient";
string cnStr = "Data Source=[ชื่อServer];uid=[userที่ใช้ต่อ DB];pwd=[password];Initial Catalog=[ชื่อ Database]";
ตัว System.Data.SqlClient เป็นตัวบอกว่าจะต่อเข้าไปที่ SQL Server ถ้าจะใช้ฐานข้อมูล Oracle ก็ให้เปลี่ยนเป็น
System.Data.MSDAORA.1
[hide=2]ขอ Optimize Code คุณ hinalove บางส่วนนะครับ
[code]
ถ้าใช้ store procedure ให้ใช้แบบบน
cmd1.Connection = conn;
cmd1.CommandText = "Storeprocedurename";
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add("result", OracleDbType.Decimal);
cmd1.Parameters["result"].Direction = ParameterDirection.ReturnValue;
cmd1.Parameters.Add("uSER_NAME", OracleDbType.Varchar2).Value = UserName;
cmd1.Parameters.Add("password", OracleDbType.Varchar2).Value = Password;
cmd1.ExecuteNonQuery();
ถ้าใช้ ลักษณะ Command ให้ใช้แบบนี้
OracleCommand cmd1 = new OracleCommand();
cmd1.Connection = conn;
cmd1.CommandText = "Insert table into values ('a', 'b', 'c')";
cmd1.CommandType = CommandType.Text;
cmd1.ExecuteNonQuery();
คำสั่ง sql ที่ใช้นั้นมีผลกับแต่ละ database ที่ใช้ด้วยครับ