分享
 
 
 

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

王朝asp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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属性赋值。http://sucai.knowsky.com/

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);

}

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有