Asp.Net、Ado.net 数据库编程超级攻略

Command对象中包含了提交给数据库系统的访问信息
OleDbCommand与SqlCommand对象,它们的基本对象与操作方法是相同的,在此仅介绍OleDbCommand的用法,SqlCommand的用法类推即可。
最常用初始化Command对象的方法是在建立Command实例中带入两个参数
OleDbCommand myComm=new OleDbCommand(strQuery,myConnection);
strQuery为SQL语句或储存过程名,myConnection是建立的Connection对象实例
Command对象主要的属性有
Connection:
CommandText:设置或获取Command对象使用的Connection对象实例
CommandType:StoredProceduce、TableDirect、Text(标准SQL语句)
Parameters:取得参数值集合
ExecuteReader:执行CommandText指定的SQL语句或储存过程名,返回类型为DataReader
ExecuteNonQuery:与ExecuteReader功能相同,只是返回值为执行SQL语句或储存过程受影响的记录行数
DataReader--SqlDataReader、OleDbDataReader
FieldCount:显示当前操作记录的字段总和
IsClosed:判断DataReader是否关闭
Close:关闭DataReader
GetString:以String返回指定列中的值
GetValue:以自身的类型返回指定列中的值
GetValues:返回当前记录所有字段的集合
Read:读下一条记录
例:
<%  @ 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 >
< head >
<%   while (dr.Read())
 
{;}
%>
</ head >  
DataSet DataAdapter
DataAdapter是与DataSet配套使用的
OleDbDataAdapter my_adapter
= new  OleDbDataAdapter();
-------------------------------------------------
SqlDataAdapter my_sqladapter
= new  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属性赋值。
my_adapter.SelectCommand.CommandText
= strSelect;
my_adapter.UpdateCommand.CommandText
= strUpdate;
my_adapter.InsertCommand.CommandText
= strInsert;
my_adapter.DeleteCommand.CommandText
= strDelete;
如果只是查询数据库,则可以建立DataAdapter实例时就完成上述工作
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);
// update
DataAdapter.Update(ds, " Score " );
// modify
DataRow dr = ds.Tables[ " Score " ].Rows[ 0 ];
dr[
" name " ] = ;
// Delete
DataRow dr = ds.Talbes[ " Score " ].Rows[ 0 ];
dr.Delete();
// 注:
OleDbConnection my_conn = new  OleDbConnection(myconnstring);
OleDbDataAdapter my_adapter
= new  OleDbDataAdapter(sql,my_conn);
OleDbCommandBuilder custCB
= new  OleDbCommandBuilder(my_adapter); // DataAdapter在数据发生改变时,并不能自动产生(Transact- SQL),所以一定要使用CommandBuilder,它能自动产生Sql语句,!就此一步
RejectChanges是DataSet,DataTable,DataRow共有的方法
使操作对象拒绝已经发生的改变,使数据复员
if (DataSet.HasErrors)
{
 
 DataSet.RejectChanges();
}

else { DataSet.AcceptChanges();}
----------------------------------------------------------------------------------------------------------------------------------
DataReader
-> DataTable
  
public   static  DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
  
{
   
/**////定义DataTable和模式
   DataTable datatable = new DataTable();
   DataTable schemaTable 
= dataReader.GetSchemaTable(); //导入一个数据表的表结构  
   
   
try
   
/**////动态添加表的数据列
    foreach(DataRow myRow in schemaTable.Rows)
    
{
     DataColumn myDataColumn 
= new DataColumn();
     myDataColumn.DataType 
= myRow.GetType();
     myDataColumn.ColumnName 
= myRow[0].ToString();
     datatable.Columns.Add(myDataColumn);
    }

    
    
/**////添加表的数据
    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;
    
    
/**////关闭数据读取器
    dataReader.Close();
    
return datatable;
   }

   
catch(Exception ex)
   
{
    
/**////抛出类型转换错误
    SystemError.SystemLog(ex.Message);
    
throw new Exception(ex.Message,ex);
   }
   
  }

 }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值