Das Command-Objekt enthält Zugriffsinformationen, die an das Datenbanksystem übermittelt werden.
OleDbCommand- und SqlCommand-Objekte haben die gleichen grundlegenden Objekte und Operationsmethoden. Hier stellen wir nur die Verwendung von OleDbCommand vor, und die Verwendung von SqlCommand kann durch Analogie abgeleitet werden.
Die am häufigsten verwendete Methode zum Initialisieren eines Command-Objekts besteht darin, beim Erstellen einer Command-Instanz zwei Parameter einzugeben.
OleDbCommand myComm=new OleDbCommand(strQuery,myConnection);
strQuery ist der Name der SQL-Anweisung oder der gespeicherten Prozedur und myConnection ist die erstellte Connection-Objektinstanz.
Die Haupteigenschaften des Command-Objekts sind:
Verbindung:
CommandText: Legen Sie die vom Command-Objekt verwendete Verbindungsobjektinstanz fest oder rufen Sie sie ab
CommandType: StoredProceduce, TableDirect, Text (Standard-SQL-Anweisung)
Parameter: Rufen Sie den eingestellten Parameterwert ab
ExecuteReader: Führen Sie die durch CommandText angegebene SQL-Anweisung oder den Namen der gespeicherten Prozedur aus. Der Rückgabetyp ist DataReader
ExecuteNonQuery: Dieselbe Funktion wie ExecuteReader, außer dass der Rückgabewert die Anzahl der Datensatzzeilen ist, die von der Ausführung der SQL-Anweisung oder gespeicherten Prozedur betroffen sind.
DataReader – SqlDataReader, OleDbDataReader
FieldCount: Zeigt die Gesamtzahl der Felder im aktuellen Vorgangsdatensatz an
IsClosed: Bestimmen Sie, ob der DataReader geschlossen ist
Schließen: DataReader schließen
GetString: Gibt den Wert in der angegebenen Spalte als String zurück
GetValue: Gibt den Wert in der angegebenen Spalte in einem eigenen Typ zurück
GetValues: Gibt eine Sammlung aller Felder des aktuellen Datensatzes zurück
Lesen: Den nächsten Datensatz lesen.
<% @ Page Language="C#" %>
<% @ Import Namespace="System.Data"%>
<% @ Import Namespace="System.Data.OleDb"%>
--------------------------------------------------
<% @ Import Namespace="System.Data.SqlClient"%>
<Script Language="c#" Runat="Server">
OleDbDataReader dr;
String myconnstring="Provider=Microsoft.Jet.OLEDB.4.0; DataSource="+Server.MapPath(".")+"..mdb";
string sql=".."
OleDbConnection my_conn=new OleDbConnection(myconnstring);
OleDbCommand my_comm=new OleDbCommand(sql,my_conn);
my_comm.Connection.Open();
dr=my_comm.ExecuteReader();
//DataGrid dg
dg.DataSource=dr
dg.DataBind();
</Script>
<Kopf>
<% while(dr.Read())
...{;}
%>
</head>
DataSet DataAdapter
DataAdapter wird in Verbindung mit DataSet verwendet
OleDbDataAdapter my_adapter=new OleDbDataAdapter();
--------------------------------------------------
SqlDataAdapter my_sqladapter=new SqlDataAdapter();
my_adapter.SelectCommand.Connection=my_conn;
oder
my_adapter.UpdateCommand.Connection=my_conn;
my_adapter.DeleteCommand.Connection=my_conn;
my_adapter.InsertCommand.Connection=my_conn;
Wenn Sie SQL-Anweisungen ausführen müssen, müssen Sie auch der entsprechenden CommandText-Eigenschaft einen Wert zuweisen. http://sucai.downcodes.com/
my_adapter.SelectCommand.CommandText=strSelect;
my_adapter.UpdateCommand.CommandText=strUpdate;
my_adapter.InsertCommand.CommandText=strInsert;
my_adapter.DeleteCommand.CommandText=strDelete;
Wenn Sie nur die Datenbank abfragen, können Sie die oben genannten Arbeiten beim Erstellen der DataAdapter-Instanz abschließen.
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(sql,my_conn);
DataSet ds=new DataSet();
OleDbConnection my_conn=new OleDbConnection(myconnstring);
OleDbDataAdapter my_adapter=new OleDbDataAdapter(sql,my_conn);
my_adapter.fill(ds,"score");
DataGrid-Score;
score.DataSource=ds.Table["score"].Defaultview;
score.DataBind();
//InsertCommand
DataRow dr=ds.Table["Score"].NewRow();
dr["name"]=..
ds.Tables["Score"].Rows.Add(dr);
//aktualisieren
DataAdapter.Update(ds,"Score");
//ändern
DataRow dr=ds.Tables["Score"].Rows[0];
dr["name"]=;
//Löschen
DataRow dr=ds.Talbes["Score"].Rows[0];
dr.Delete();
//Notiz:
OleDbConnection my_conn=new OleDbConnection(myconnstring);
OleDbDataAdapter my_adapter=new OleDbDataAdapter(sql,my_conn);
OleDbCommandBuilder custCB=new OleDbCommandBuilder(my_adapter);//DataAdapter kann (Transact-SQL) nicht automatisch generieren, wenn sich die Daten ändern. Sie müssen daher CommandBuilder verwenden, der automatisch SQL-Anweisungen generieren kann! Nur ein Schritt
RejectChanges ist eine für DataSet, DataTable und DataRow gemeinsame Methode, die es dem Operationsobjekt ermöglicht, die aufgetretenen Änderungen abzulehnen und die Daten zu demobilisieren.
if(DataSet.HasErrors)
...{
DataSet.RejectChanges();
}
sonst...{ DataSet.AcceptChanges();}
-------------------------------------------------- -------------------------------------------------- ----------------------------------
DataReader->DataTable
öffentliche statische DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
...{
/**//**//**////Datentabelle und Schema definieren
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable(); //Importieren Sie die Tabellenstruktur einer Datentabelle
versuchen
...{ /**//**//**////Fügen Sie Datenspalten der Tabelle dynamisch hinzu
foreach(DataRow myRow in schemaTable.Rows)
...{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
/**//**//**////Tabellendaten hinzufügen
while(dataReader.Read())
...{
DataRow myDataRow = datatable.NewRow();
for(int i=0;i<schemaTable.Rows.Count;i++)
...{
myDataRow[i] = dataReader[i].ToString();
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
/**//**//**////Schließen Sie den Datenleser
dataReader.Close();
Datentabelle zurückgeben;
}
Catch (Ausnahme ex)
...{
/**//**//**////Wirft einen Typkonvertierungsfehler aus
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);
}
}
}
}