许å¤å¦è
æ»ä¼é¢å¯¹äºæ°æ®åºçç¥è¯ï¼ä»¥ä¸çä¾å讲述å°Accessæ°æ®åºè¯´æï¼ç¨C#çDataSet类访é®æ°æ®åºçä¸äºæä½æ¹æ³ã
æä½æ¶åç主è¦C#ç±»æï¼
DataSetï¼å¯¹åºæ°æ®åºè¡¨çä¸ä¸ªéåï¼å®é
ä¸æ¯æ°æ®åºè¡¨å¨å
åä¸çä¸ä¸ªç¼å
DataTableï¼å¯¹åºæ°æ®åºè¡¨ï¼æ¯æ°æ®åºè¡¨è¡çéå
DataRowï¼å¯¹åºæ°æ®åºè¡¨è¡
OleDbConnectionï¼å»ºç«æ°æ®åºè¿æ¥
OleDbDataAdapterï¼ç±æ°æ®åºçæDataSet,并è´è´£DataSetä¸æ°æ®åºçåæ¥
OleDbCommandBuilderï¼çææ´æ°æ°æ®åºæéçæ令www.kmxxfk.com
DataSetãDataTableãDataRowç¨äºæ°æ®å¨ç¼åä¸çæä½ï¼è¿ä¸é¢çæä½åªææ´æ°å°æ°æ®åºä¸ï¼ä¿®æ¹ç»ææä¼è¢«æ°¸ä¹
ä¿åãOleDbConnection æ¯ç¨OLEDBæ¹æ³è¿æ¥æ°æ®åºæå¿
éçãOleDbDataAdapteråOleDbCommandBuilderç¨æ¥çæDataSetï¼å®ææ°æ®åºæ´æ°ãä¸OleDbDataAdapteråOleDbCommandBuilderç¸å¯¹åºï¼SqlDataAdapteråSqlCommandBuilderä¹å¯ä»¥å®æç¨SQLè¯è¨ä¸ºæ令çæ°æ®åºæ´æ°ã
å设å¨Dï¼çå建äºAccessæ°æ®åºï¼å
¶è·¯å¾ä¸ºd:\\0DBAcs\\account.mdbï¼æ°æ®åºä¸æä¸å¼ å为kaizhiçæ°æ®åºè¡¨ã表ç»æå¦ä¸ï¼
表åï¼Kaizhi
å段Field Nameç±»å说æ
1å¼æ¯IDkzIDé¿æ´åèªå¨ç¼å·
2å¼æ¯äººKzrenææ¬50å符
3å¼æ¯é¡¹ç®åkznameææ¬50å符
4æ¥æriqiæ¥æ/æ¶é´99-99-99ï¼0æ©ç
5å¼æ¯è¯´æshuomingææ¬225å符
6æ»éé¢zongeå精度å°æ°ç¹ä»»æï¼è¿é¡¹å¼æ¯çæ»è±è´¹
7æ°éshuliangé¿æ´å www.kmxxfc.com
8åä»·Danjiaå精度å°æ°ç¹ä»»æ
表建好ä¹åï¼ï¼1ï¼å¯¹è¡¨ä¸æ·»å æ°æ°æ®ï¼2ï¼æ¥è¯¢è¡¨ä¸çæ个å段ã为äºå®ç°è¿ä¸¤é¡¹åè½ï¼ä»¥ä¸å 个é®é¢è¦èèï¼
1åå¤å·¥ä½
声æå¿
é¡»çå
Œ
±åé
建ç«ä¸æ°æ®åºçè¿æ¥ï¼å建DataSet对象
2æ·»å è®°å½
å¨DataSet对象ä¸æ·»å è®°å½
åæ¥DataSet对象对象ä¸æ°æ®åºä¸çæ°æ®ï¼è¿ä¸ç¹å¾éè¦ï¼å¾å¤äººå¿è®°äºæ°æ®è¿è¡åæ¥ï¼ç»æå¾å¾æ¯æ·»å ãä¿®æ¹çæ°æ®ä¸è½ä¿åå°æ°æ®åºä¸ã
3æ¥è¯¢æ°æ®åºè¡¨ä¸æè®°å½çæå段ï¼
æ们å¯ä»¥å°ä¸è¿°åè½ç¨ä¸ä¸ªç±»DataOperå®ç°ï¼ä¸é¢æ¯ç¨åºè®¾è®¡ç主è¦æ´»å¨ã
声æè¦ç¨çC#ç³»ç»ç±»
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
声æDataOperç±»ä¸çå
Œ
±åé
private string DBlocation;
private OleDbConnection dbconn; //æ°æ®åºè¿æ¥
private OleDbDataAdapter da;
建ç«ä¸æ°æ®åºçè¿æ¥ï¼è¿ééç¨äºOLEDBæ¹æ³ï¼
dbconn = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0; Data Source=d:\\0DBAcs\\account.mdb");
dbconn.Open();
å建DataSet对象
da = new OleDbDataAdapter(@"select * from kaizhi", dbconn); //å¼ç¨æ°æ®åºè¿æ¥dbconn并ä¾æ®SQLè¯å¥"select * from kaizhi"å建OleDbDataAdapter对象da
DataSet ds = new DataSet(); //å建DataSet对象
da.Fill(ds); //ç¨OleDbDataAdapter对象daå¡«å
ãæ´æ°åå建çDataSet对象
æ·»å è®°å½å¹¶æ´æ°æ°æ®åº
OleDbCommandBuilder cb = new OleDbCommandBuilder(da); // å建OleDbCommandBuilder对象cbç¨äºæ´æ°OleDbDataAdapter对象daçInsertãDeleteãUpdateæ令
da.UpdateCommand = cb.GetUpdateCommand(); //æ´æ°OleDbDataAdapter对象daçæ令
设计人åå¯ä»¥ç¼åèªå·±çæ´æ°æ令ï¼ä¹å¯ä»¥è±¡ä¸é¢æåçé£æ ·ç¨ç³»ç»é»è®¤çæ令ãä½ä¸ç®¡ææ ·ï¼ä¸é¢çè¯å¥ä¸è½ç¼ºå°ï¼å¦åç¨åºå¨è¿è¡ä¸ä¼æåºå¼å¸¸System.InvalidOperationExceptionï¼å¹¶æ示ï¼Update requires a valid InsertCommand when passed DataRow collection with new rows.
DataRow drx = ds.Tables[0].NewRow(); //å建ä¸æ¡æ°è®°å½è¡
drx["kzren"] = "kzren";
drx["kzname"]="kzname";
drx["riqi"]=2008-10-11;
drx["shuoming"]="shuoming";
drx["zonge"] = 12;
drx["shuliang"] = 3;
drx["danjia"] = 4;
ds.Tables[0].Rows.Add(drx); //å¨è¡¨ä¸è¿½å è®°å½
da.Update(ds); //æ´æ°æ°æ®åº
è¦æ¥è¯¢å¼ç¨æè®°å½çæå段ï¼ç´æ¥æå¦ä¸çæ¹æ³å¼ç¨å°±å¯ä»¥äºã
String kx=ds.Tables[0].Rows[0]["kzren"].ToString()
è¿æ¥access
é¦å
çä¸ä¸ªä¾å代ç çæ:
ç¨åºä»£ç :www.lzfsk.com/
--------------------------------------------------------------------------------
using system.data;
using system.data.oledb;
......
string strconnection="provider=microsoft.jet.oledb.4.0;";
strconnection+=@"data source=c:\\begas.Net\\northwind.mdb";
oledbconnection objconnection=new oledbconnection(strconnection);
......
objconnection.open();
objconnection.close();
......
--------------------------------------------------------------------------------
解é:
è¿æ¥accessæ°æ®åºéè¦å¯¼å
¥é¢å¤çå½å空é´,æ以æäºæåé¢ç两æ¡usingå½ä»¤,è¿æ¯å¿
ä¸å¯å°ç!
strconnectionè¿ä¸ªåééåæ¾çæ¯è¿æ¥æ°æ®åºæéè¦çè¿æ¥å符串,ä»æå®äºè¦ä½¿ç¨çæ°æ®æä¾è
åè¦ä½¿ç¨çæ°æ®æº.
"provider=microsoft.jet.oledb.4.0;"æ¯ææ°æ®æä¾è
,è¿é使ç¨çæ¯microsoft jetå¼æ,ä¹å°±æ¯accessä¸çæ°æ®å¼æ,ASP.netå°±æ¯é è¿ä¸ªåaccessçæ°æ®åºè¿æ¥ç.
"data source=c:\\begaspnet\\northwind.mdb"æ¯æææ°æ®æºçä½ç½®,ä»çæ åå½¢å¼æ¯"data source=mydrive:mypath\\myfile.mdb".
ps:
1."+="åé¢ç"@"符å·æ¯é²æ¢å°åé¢å符串ä¸ç"\\"解æ为转ä¹å符.
2.å¦æè¦è¿æ¥çæ°æ®åºæ件åå½åæ件å¨åä¸ä¸ªç®å½ä¸,è¿å¯ä»¥ä½¿ç¨å¦ä¸çæ¹æ³è¿æ¥:
strconnection+="data source=";
strconnection+=mappath("northwind.mdb");
è¿æ ·å°±å¯ä»¥çå¾ä½ åä¸å¤§å ä¸è¥¿äº!
3.è¦æ³¨æè¿æ¥å符串ä¸çåæ°ä¹é´è¦ç¨åå·æ¥åé.
"oledbconnection objconnection=new oledbconnection(strconnection);"è¿ä¸å¥æ¯å©ç¨å®ä¹å¥½çè¿æ¥å符串æ¥å»ºç«äºä¸ä¸ªé¾æ¥å¯¹è±¡,以å对æ°æ®åºçæä½æ们é½è¦åè¿ä¸ªå¯¹è±¡æ交é.
"objconnection.open();"è¿ç¨æ¥æå¼è¿æ¥.è³æ¤,ä¸accessæ°æ®åºçè¿æ¥å®æ.å
¶ä½æä½(æå
¥,å é¤...)请åé
ç¸å
³ä¹¦ç±
è¿æ¥SQL Server
ä¾å代ç çæ:
ç¨åºä»£ç :
--------------------------------------------------------------------------------
using system.data;
using system.data.sqlclient;
...
string strconnection="user id=sa;passWord=;";
strconnection+="initial catalog=northwind;server=yoursqlserver;";
strconnection+="connect timeout=30";
sqlconnection objconnection=new sqlconnection(strconnection);
...
objconnection.open();
objconnection.close();
...
--------------------------------------------------------------------------------
解é:
è¿æ¥sql serveræ°æ®åºçæºå¶ä¸è¿æ¥accessçæºå¶æ²¡æä»ä¹å¤ªå¤§çåºå«,åªæ¯æ¹åäºconnection对象åè¿æ¥å符串ä¸çä¸ååæ°.
é¦å
,è¿æ¥sql server使ç¨çå½å空é´ä¸æ¯"system.data.oledb",èæ¯"system.data.sqlclient".
å
¶æ¬¡å°±æ¯ä»çè¿æ¥å符串äº,æ们ä¸ä¸ªä¸ä¸ªåæ°æ¥ä»ç»(注æ:åæ°é´ç¨åå·åé):
"user id=sa":è¿æ¥æ°æ®åºçéªè¯ç¨æ·å为sa.ä»è¿æä¸ä¸ªå«å"uid",æ以è¿å¥æ们è¿å¯ä»¥åæ"uid=sa".
"password=":è¿æ¥æ°æ®åºçéªè¯å¯ç 为空.ä»çå«å为"pwd",æ以æ们å¯ä»¥å为"pwd=".
è¿é注æ,ä½ çsql serverå¿
须已ç»è®¾ç½®äºéè¦ç¨æ·ååå¯ç æ¥ç»å½,å¦åä¸è½ç¨è¿æ ·çæ¹å¼æ¥ç»å½.å¦æä½ çsql server设置为Windowsç»å½,é£ä¹å¨è¿éå°±ä¸éè¦ä½¿ç¨"user id"å"password"è¿æ ·çæ¹å¼æ¥ç»å½,èéè¦ä½¿ç¨"trusted_connection=sspi"æ¥è¿è¡ç»å½.
"initial catalog=northwind":使ç¨çæ°æ®æºä¸º"northwind"è¿ä¸ªæ°æ®åº.ä»çå«å为"database",æ¬å¥å¯ä»¥åæ"database=northwind".
"server=yoursqlserver":使ç¨å为"yoursqlserver"çæå¡å¨.ä»çå«å为"data source","address","addr".å¦æ使ç¨çæ¯æ¬å°æ°æ®åºä¸å®ä¹äºå®ä¾å,åå¯ä»¥å为"server=(local)\\å®ä¾å";å¦ææ¯è¿ç¨æå¡å¨,åå°"(local)"æ¿æ¢ä¸ºè¿ç¨æå¡å¨çå称æipå°å.
"connect timeout=30":è¿æ¥è¶
æ¶æ¶é´ä¸º30ç§.
å¨è¿é,建ç«è¿æ¥å¯¹è±¡ç¨çæé å½æ°ä¸º:sqlconnection.
å
¶ä½çå°±åaccess没æä»ä¹åºå«äº!
********************************************************************************************************************
ç¨c#访é®accessæ°æ®åº
æç¼åè¿ä¸ªç¨åºçå¨æºæ¯å½æå¸æç¨c sharp访é®msaccessæ°æ®åºçæ¶åæ没æåæ³è·å¾ä»»ä½ä¿¡æ¯ååèææ.ç½ä¸æè½è·å¾çææææé½æ¯åéäºsqlç,æ以æ们å°å两æ¥æ¥ç¼åè¿ä¸ªåºç¨ç¨åº,第ä¸æ们å°å±ç¤ºå¦ä½è¿æ¥å°msaccessæ°æ®åºç¶åççå®æå¤å¤æ.æå,æ们就è¿æ ·å®æäºè¿ä¸ªç¨åº.
é²è¨å°åº,让æ们å¼å§æ£é¢.è¿æ¥å°æ°æ®åºçè¿ç¨ä¸æ们æ©å
çadoè¿æ¥è¿ç¨ç¸æ¯å·²ç»åçäºè¾å¤§çåå.ä¸é¢çå¾è¡¨æ°å½ç(æå¸æå¦æ¤)oledbconnection--> oledbcommand --> oledbdatareader.ç°å¨é£äºçæadoç人å¾ææ¾è½çåºä¸¤è
çç¸ä¼¼ä¹å¤ä½æ¯ä¸ºäºä½¿é£äºè¿æ²¡æå¾å¥½çéåºadoç人è½å¤æç½,ä¸é¢æ¯ä¸äºè§£é.
oledbconnection -->代表对æ°æ®åºçåä¸è¿æ¥,æ ¹æ®åºå±æ°æ®åºçåè½å®è½ç»ä½ æ纵æ°æ®åºçè½å.æä¸ç¹å¿
须记ä½,è½ç¶oledbconnection对象åºäºä½ç¨èå´,å®ä¹ä¸ä¼èªå¨è¢«å
³é.æ以,ä½ å°ä¸å¾ä¸æ¾ç¤ºçè°ç¨è¿ä¸ªå¯¹è±¡çclose()æ¹æ³.
oledbcommand -->è¿æ¯å°±è±¡æ们å¨adoä¸ä½¿ç¨çä¸æ ·çé常çcommand对象.ä½ å¯ä»¥éè¿è¿ä¸ªå¯¹è±¡è°ç¨sqlåå¨è¿ç¨ææ¯sqlæ¥è¯¢è¯å¥.
oledbdatareader -->è¿ä¸ªç±»æ¥æé常大çéè¦æ§å 为å®æä¾äºå®é
ä¸ç对æ°æ®åºåºå±æ°æ®éç访é®.å½ä½ è°ç¨oledbcommandçexecutereaderæ¹æ³çæ¶åå®å°±ä¼è¢«å建,.net beta2 sdk说ä¸è¦ç´æ¥å建è¿ä¸ªç±»ç对象.
ç°å¨ä½ å¯ä»¥å¨.net beta 2çææ¡£ä¸çå°æ´å¤çå
³äºè¿äºä¸»è¦å¯¹è±¡ç说æ,ä¸é¢æ¯æåºå¦ä½å¨ç¨åºä¸è®¿é®æ°æ®åºçæºä»£ç .
using system;
using system.data.oledb;
class oledbtest{
public static void main()
{
/å建æ°æ®åºè¿æ¥
oledbconnection aconnection = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=c:\\\\db1.mdb");
/å建command对象并ä¿åsqlæ¥è¯¢è¯å¥
oledbcommand acommand = new oledbcommand("select * from emp_test", aconnection);
try
{
aconnection.open();
/å建datareader 对象æ¥è¿æ¥å°è¡¨å
oledbdatareader areader = acommand.executereader();
console.writeline("this is the returned data from emp_test table");
/循ç¯éåæ°æ®åº
while(areader.read())
{
console.writeline(areader.getint32(0).tostring());
}
/å
³éreader对象
areader.close();
/å
³éè¿æ¥,è¿å¾éè¦
aconnection.close();
}
/ä¸äºé常çå¼å¸¸å¤ç
catch(oledbexception e)
{
console.writeline("error: {0}", e.errors[0].message);
}
}
}
æåè¿è¡è¿ä¸ªç¨åºçæ¥éª¤
1.ç¨msaccesså建ä¸ä¸ªåå«db1.mdbçæ°æ®åº
2.å建ä¸ä¸ªåå«emp_testç表å
3.使å®å
å«ä¸åæ°æ®å
emp_code int
emp_name text
emp_ext text
4.å°ä¸é¢ç代ç ä¿åå°sample.csæ件ä¸
5.ç¡®ä¿æ°æ®åºä½äºc:\\并确ä¿mdac2.6ææ¯æ´æ°ççæ¬å·²ç»è¢«å®è£
6.ç¼è¯è¿è¡
ç°å¨è®©æ们æ¥äºè§£ä¸äºæ们å¨oledbconnection对象çæé å½æ°çå°çä¸è¥¿çä¸äºç»è,å¨è¿éä½ çè§è¯¸å¦"provider="ä¹ç±»çä¸è¥¿.ä¸é¢æ¯ä¸äºåado.netå
¼å®¹ç驱å¨ç¨åºç±»å.
sqlolddb --> microsoft ole db provider for sql server,
msdaora --> microsoft ole db provider for Oracle,
microsoft.jet.oledb.4.0 --> ole db provider for microsoft jet
ä½ å¯ä»¥éæ©å
¶ä¸çä»»ä½ä¸ä¸ªä½æ¯ä»ä»¬ä¼éè¦ä¼ éä¸åçåæ°,ä¾å¦jet.oledb.éè¦ä¼ émdbæ件çååèsqloledbéè¦ä¼ éç¨æ·ååå¯ç .
ææè¿äºé©±å¨ç¨åºé½ä½äºsystem.data.oledbå½å空é´é,æä»¥ä½ å¿
é¡»å
æ¬å®,èä¸å®ä»¬åoledb provider for odbcä¸å
¼å®¹,ä¹å°±æ¯è¯´ä½ ä¸è½å¨VB6.0ç¨åºé使ç¨è¿äºé©±å¨ç¨åºæ¥è®¿é®æ°æ®åº,æ以ä¸è¦å»å¯»æ¾è§£é为ä»ä¹è¦æè¿äºæ°æ®åºæ¾å¨c:\\ä¸çèµæäº
å½ä½ 使ç¨microsoft sql server 7.0 æè
æ´æ°çæ¬çæ¶å,ä¸é¢æ¯å¾®è½¯ç»åºçä¸äºæ导:
æ¨è使ç¨.net data providerå¨ä¸åæ
åµä¸,使ç¨microsoft sql server 7.0 æè
æ´æ°çæ¬çä¸é´å±åºç¨ç¨åº,使ç¨microsoft data engine (msde)æicrosoft sql server 7.0 æè
æ´æ°çæ¬çåå±åºç¨ç¨åº.
建议å°ole db provider for sql server (sqloledb)åole db .net data providerä¸èµ·ä½¿ç¨.
对äºmicrosoft sql server 6.5åæ´æ©ççæ¬,ä½ å¿
é¡»åæ¶ä½¿ç¨ole db provider for sql server å ole db.net data provider.
æ¨è使ç¨microsoft sql server 6.5åæ´æ©ççæ¬ææ¯oracleçä¸é´å±åºç¨ç¨åºä½¿ç¨ole db .net data provider.
对äºmicrosoft sql server 7.0 æè
æ´æ°çæ¬,æ¨èsql server .net data provider.
æ¨èåå±åºç¨ç¨åºä½¿ç¨microsoft accessæ°æ®åº.
ä¸æ¨èä¸ä¸ªä¸é´å±ç¨åºåæ¶ä½¿ç¨ole db .net data provideråmicrosoft accessæ°æ®åº.
ä¸åæ¯æole db provider for odbc (msdasql)