数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

C#操作Access数据库的例子


发布日期:2022年12月03日
 
C#操作Access数据库的例子

添加

using System;

using SystemData;

using SystemDataOleDb;

namespace ADONETWriteQuery

{

/**//// <summary>

/// Summary description for Class

/// </summary>

class Class

{

static void Main(string[] args)

{

string strDSN = Provider=MicrosoftJetOLEDB;Data

Source=c:\\mcTestMDB;

string strSQL = INSERT INTO Developer(Name Address ) VALUES(

NewName NewAddress) ;

// create Objects of ADOConnection and ADOCommand

OleDbConnection myConn = new OleDbConnection(strDSN);

OleDbCommand myCmd = new OleDbCommand( strSQL myConn );

try

{

myConnOpen();

myCmdExecuteNonQuery();

}

catch (Exception e)

{

ConsoleWriteLine(Oooops I did it again:\n{} eMessage);

}

finally

{

myConnClose();

}

}

}

}

在具体讲操作前我认为有必要先认识一下下面的两个类

SystemDataOleDbOleDbDataAdapter

SystemDataOleDbOleDbDataReader

SystemDataOleDbOleDbDataAdapter可以直接和DataSet联系并操作数据源的它的功能相对强大一些因此也比较耗系统资源!

SystemDataOleDbOleDbDataReader则有些类似于ADO中的哪个只读向前的记录集它最常用在只需要依次读取并显示数据的时候相比SystemDataOleDbOleDbDataAdapter来说他耗用的系统资源要小!其实OleDbDataReader能实现的功能OleDbDataAdapter都可以实现不过从资源使用率的角度考虑我们应该尽量使用前者!但有些功能却是必须使用OleDbDataAdapter才可以实现的!

* SELECT操作!

下面是我的自己在写测试程序的时候用到了先列出来看看OleDbDataReader和OleDbDataAdapter是如何操作从数据库中选择记录的

//通过ID得到当前留言详细内容通过STRING类型参数

public Notebook getNoteFromID(string noteid)

{

Notebook tempnote=new Notebook(); //定义返回值

try

{

OleDbConnection conn = getConn(); //getConn():得到连接对象

string strCom = Select * from notes where id= + noteid ;

OleDbCommand myCommand =new OleDbCommand(strComconn);

connOpen();

OleDbDataReader reader;

reader =myCommandExecuteReader() ; //执行command并得到相应的DataReader

//下面把得到的值赋给tempnote对象

if(readerRead())

{

tempnoteid=(int)reader[id];

tempnotetitle=reader[title]ToString();

ntent=reader[content]ToString();

tempnoteauthor=reader[author]ToString();

tempnoteemail=reader[email]ToString();

tempnotehttp=reader[http]ToString();

tempnotepic=reader[pic]ToString();

tempnotehits=(int)reader[hits];

tempnoteposttime=(DateTime)reader[posttime];

}

else //如没有该记录则抛出一个错误!

{

throw(new Exception(当前没有该记录!));

}

readerClose();

connClose();

}

catch(Exception e)

{

//throw(new Exception(数据库出错: + eMessage)) ;

}

return(tempnote); //返回Databook对象

}

上面的程序就是通过OleDbDataReader来得到特定的记录的!其中用到的语句我单独写到下面

OleDbConnection conn = getConn(); //getConn():得到连接对象

string strCom = Select * from notes where id= + noteid ; //SQL语句

OleDbCommand myCommand =new OleDbCommand(strComconn); //建立OleDbCommand对象

connOpen(); //注意我在前面说的Open语句在这里使用到了!

OleDbDataReader reader;

reader =myCommandExecuteReader() ; //执行command并得到相应的结果

我在每句话后都加入了说明其中OleDbConnection conn = getConn();就是通过我前面提到的getConn函数来得到数据库连接的其他语句没有什么好说的都很简单就不多说了!

我再列一个通过OleDbDataAdapter来得到记录的例程

//Getlist():得到当前需要的留言列表

public DataView getNoteList()

{

DataView dataview;

SystemDataDataSet mydataset; //定义DataSet

try

{

OleDbConnection conn = getConn(); //getConn():得到连接对象

OleDbDataAdapter adapter = new OleDbDataAdapter();

string sqlstr=select * from notes order by posttime desc;

mydataset= new SystemDataDataSet();

adapterSelectCommand = new OleDbCommand(sqlstr conn);

adapterFill(mydatasetnotes);

connClose();

}

catch(Exception e)

{

throw(new Exception(数据库出错: + eMessage)) ;

}

dataview = new DataView(mydatasetTables[notes]);

return(dataview);

}

这个程序或许有些复杂同样的我还是先把那些关键语句列出并说明

OleDbConnection conn = getConn(); //通过函数getConn()得到连接对象

OleDbDataAdapter adapter = new OleDbDataAdapter(); //实例化OleDbDataAdapter对象

string sqlstr=select * from notes order by posttime desc; //SQL语句

mydataset= new SystemDataDataSet(); //由于OleDbDataAdapter需要和DataSet结合使用所以在这里定义了DataSet对象其实说OleDbDataAdapter复杂其实就是因为DataSet的缘故DataSet有些类似于ADO中的recordset 对象但功能远远超过了它而且它和数据库是断开的并能存放多个记录集!

adapterSelectCommand = new OleDbCommand(sqlstr conn); //设置命令为SelectCommand类型的

adapterFill(mydatasetnotes); //执行并将结果添加到mydataset中的notes表中

connClose(); //关闭连接!

在对上面的程序加一些补充说明由于getNoteLista是得到一系列记录并通过控件DataGrid来做分页显示的所以我返回的是一个DataView类型的对象!

               

上一篇:测试sql语句性能

下一篇:SignalR与WCF双工模式结合实现服务端数据直推浏览器端