วัตถุ Command ประกอบด้วยข้อมูลการเข้าถึงที่ส่งไปยังระบบฐานข้อมูล
ออบเจ็กต์ OleDbCommand และ SqlCommand มีออบเจ็กต์พื้นฐานและวิธีการดำเนินการที่เหมือนกัน ในที่นี้ เราจะแนะนำการใช้ OleDbCommand เท่านั้น และการใช้งาน SqlCommand สามารถสรุปได้โดยการเปรียบเทียบ
วิธีการที่ใช้บ่อยที่สุดในการเริ่มต้นออบเจ็กต์ Command คือการนำพารามิเตอร์สองตัวเข้ามาเมื่อสร้างอินสแตนซ์ Command
OleDbCommand myCommand=ใหม่ OleDbCommand(strQuery,myConnection);
strQuery คือคำสั่ง SQL หรือชื่อกระบวนงานที่เก็บไว้ และ myConnection คืออินสแตนซ์อ็อบเจ็กต์การเชื่อมต่อที่สร้างขึ้น
คุณสมบัติหลักของวัตถุ Command คือ
การเชื่อมต่อ:
CommandText: ตั้งค่าหรือรับอินสแตนซ์อ็อบเจ็กต์การเชื่อมต่อที่ใช้โดยอ็อบเจ็กต์ Command
CommandType: StoredProceduce, TableDirect, Text (คำสั่ง SQL มาตรฐาน)
พารามิเตอร์: รับชุดค่าพารามิเตอร์
ExecuteReader: ดำเนินการคำสั่ง SQL หรือชื่อขั้นตอนการจัดเก็บที่ระบุโดย CommandText และประเภทการส่งคืนคือ DataReader
ExecuteNonQuery: ฟังก์ชันเดียวกับ ExecuteReader ยกเว้นว่าค่าที่ส่งคืนคือจำนวนแถวบันทึกที่ได้รับผลกระทบจากการดำเนินการของคำสั่ง SQL หรือขั้นตอนการจัดเก็บ
DataReader--SqlDataReader, OleDbDataReader
FieldCount: แสดงจำนวนฟิลด์ทั้งหมดในบันทึกการดำเนินงานปัจจุบัน
IsClosed: ตรวจสอบว่า DataReader ปิดอยู่หรือไม่
ปิด: ปิด DataReader
GetString: ส่งกลับค่าในคอลัมน์ที่ระบุเป็น String
GetValue: ส่งกลับค่าในคอลัมน์ที่ระบุในประเภทของตัวเอง
GetValues: ส่งกลับคอลเลกชันของฟิลด์ทั้งหมดของเรกคอร์ดปัจจุบัน
อ่าน: อ่านบันทึกถัดไป ตัวอย่าง:
<% @ ภาษาเพจ = "C#" %>
<% @ นำเข้าเนมสเปซ = "System.Data"%>
<% @ นำเข้าเนมสเปซ = "System.Data.OleDb"%>
-
<% @ นำเข้าเนมสเปซ = "System.Data.SqlClient"%>
<ภาษาสคริปต์ = "c #" Runat = "เซิร์ฟเวอร์">
OleDbDataReader dr;
String myconnstring="Provider=Microsoft.Jet.OLEDB.4.0; DataSource="+Server.MapPath(".")+"..mdb";
สตริง sql = ".."
OleDbConnection my_conn=ใหม่ OleDbConnection(myconnstring);
OleDbCommand my_comm=ใหม่ OleDbCommand(sql,my_conn);
my_comm.Connection.เปิด();
dr=my_comm.ExecuteReader();
//DataGrid dg
dg.แหล่งข้อมูล=ดร
dg.DataBind();
สคริปต์>
<หัว>
<% ในขณะที่(dr.Read())
-
-
หัว>
ชุดข้อมูล DataAdapter
DataAdapter ใช้ร่วมกับ DataSet
OleDbDataAdapter my_adapter=ใหม่ OleDbDataAdapter();
-
SqlDataAdapter my_sqladapter=ใหม่ SqlDataAdapter();
my_adapter.SelectCommand.Connection=my_conn;
หรือ
my_adapter.UpdateCommand.Connection=my_conn;
my_adapter.DeleteCommand.Connection=my_conn;
my_adapter.InsertCommand.Connection=my_conn;
หากคุณต้องการรันคำสั่ง Sql คุณต้องกำหนดค่าให้กับคุณสมบัติ CommandText ที่เกี่ยวข้องด้วย http://sucai.downcodes.com/
my_adapter.SelectCommand.CommandText=strSelect;
my_adapter.UpdateCommand.CommandText=strUpdate;
my_adapter.InsertCommand.CommandText=strInsert;
my_adapter.DeleteCommand.CommandText=strDelete;
หากคุณเพียงแค่สืบค้นฐานข้อมูล คุณสามารถทำงานข้างต้นให้เสร็จสิ้นได้เมื่อสร้างอินสแตนซ์ DataAdapter
OleDbDataAdapter MyAdapter=ใหม่ OleDbDataAdapter(sql,my_conn);
ชุดข้อมูล ds=ชุดข้อมูลใหม่();
OleDbConnection my_conn=ใหม่ OleDbConnection(myconnstring);
OleDbDataAdapter my_adapter=ใหม่ OleDbDataAdapter(sql,my_conn);
my_adapter.fill(ds, "คะแนน");
คะแนนดาต้ากริด;
Score.DataSource=ds.Table["score"].Defaultview;
คะแนน DataBind();
//ใส่คำสั่ง
DataRow dr=ds.Table["คะแนน"].NewRow();
dr["name"]=..
ds.Tables["Score"].Rows.Add(dr);
//อัปเดต
DataAdapter.Update(ds, "คะแนน");
//แก้ไข
DataRow dr=ds.Tables["คะแนน"].Rows[0];
ดร.["ชื่อ"]=;
//ลบ
DataRow dr=ds.Talbes["คะแนน"].แถว[0];
dr.ลบ();
//บันทึก:
OleDbConnection my_conn=ใหม่ OleDbConnection(myconnstring);
OleDbDataAdapter my_adapter=ใหม่ OleDbDataAdapter(sql,my_conn);
OleDbCommandBuilder custCB=new OleDbCommandBuilder(my_adapter);//DataAdapter ไม่สามารถสร้างโดยอัตโนมัติ (Transact-SQL) เมื่อข้อมูลเปลี่ยนแปลง ดังนั้นคุณต้องใช้ CommandBuilder ซึ่งสามารถสร้างคำสั่ง Sql ได้โดยอัตโนมัติ! เพียงขั้นตอนเดียว
RejectChanges เป็นวิธีการทั่วไปสำหรับ DataSet, DataTable และ DataRow เพื่อเปิดใช้งานออบเจ็กต์การดำเนินการเพื่อปฏิเสธการเปลี่ยนแปลงที่เกิดขึ้นและยกเลิกการเคลื่อนย้ายข้อมูล
ถ้า (ชุดข้อมูล.HasErrors)
-
ชุดข้อมูล RejectChanges();
-
อื่น...{ DataSet.AcceptChanges();}
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------
DataReader -> DataTable
DataTable แบบคงที่สาธารณะ ConvertDataReaderToDataTable (SqlDataReader dataReader)
-
/**//**//**////กำหนด DataTable และสคีมา
DataTable datatable = DataTable ใหม่ ();
DataTable schemaTable = dataReader.GetSchemaTable(); //นำเข้าโครงสร้างตารางของตารางข้อมูล
พยายาม
...{ /**//**//**//// เพิ่มคอลัมน์ข้อมูลของตารางแบบไดนามิก
foreach (DataRow myRow ใน schemaTable.Rows)
-
DataColumn myDataColumn = ใหม่ DataColumn();
myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
-
/**//**//**////เพิ่มข้อมูลตาราง
ในขณะที่(dataReader.Read())
-
DataRow myDataRow = datatable.NewRow();
สำหรับ(int i=0;i
myDataRow[i] = dataReader[i].ToString();
-
datatable.Rows.Add(myDataRow);
myDataRow = โมฆะ;
-
สคีมาตาราง = null;
/**//**//**//// ปิดตัวอ่านข้อมูล
dataReader.ปิด();
ส่งคืนตารางข้อมูล;
-
จับ (ข้อยกเว้นเช่น)
-
/**//**//**//// เกิดข้อผิดพลาดในการแปลงประเภท
SystemError.SystemLog (เช่น ข้อความ);
โยนข้อยกเว้นใหม่ (เช่นข้อความเช่น);
-
-
-
-