˜q™æ˜¯˜qžæŽ¥åˆ°æœ¬åœ°æ•°æ®åº“åQŒå¦‚æžœä½ æƒŒ™¿žåˆ°ç½‘¾lœä¸Šçš„的数æ®åº“,ž®Þp¦åˆ©ç”¨é›†æˆå®‰å…¨æ€§ï¼ŒåŒæ—¶å¿½ç•¥ç”¨æˆ·å和密ç 。如åQšSqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");
2.Oracleæ•°æ®åº“çš„˜qžæŽ¥åQšï¼ˆå‰æåQšå¿…™åÕd…ˆå®‰è£…Oracle客户端实用工å…ïL(f¨¥ng)š„适当版本åQŒåÆˆåˆ›å¾æ•°æ®åº“别å,接瀞®±å¯ä»¥ç”¨ä»¥ä¸‹çš„连接嗽W¦ä¸²˜q›è¡Œ˜qžæŽ¥åQ?/span>
SqConnection con=new SqlConnection("Provider=MSDAORA;Data Source=dbAlias;User id=yourid,password=youpwd;);
3.Accessæ•°æ®åº“çš„˜qžæŽ¥åQšï¼ˆä½ å¯ä»¥ä‹É用以下连接嗽W¦ä¸²æ¥è¿žæŽ¥ï¼‰
SqConnection con=new SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\yourdb.mdb;User id=yourid,password=youpwd;);˜qžæŽ¥åˆ°æ•°æ®åº“之åŽå›_¯è°ƒç”¨Connection对象的Open()æ–ÒŽ(gu¨©)³•æ¥æ‰“开与数æ®åº“的连接,åŒç†Close()æ–ÒŽ(gu¨©)³•用æ¥å…³é—与数æ®åº“的连接ã€?/p>
˜qžæŽ¥æ± :(x¨¬)
˜qžæŽ¥æ± 是什么?在一个三层结构ä¸åQŒå½“一个客æˆïL(f¨¥ng)«¯ä¸Žä¸é—´å±‚æœåŠ¡å™¨è¿›è¡Œé€šè®¯çš„æ—¶å€™ï¼ŒæœåŠ¡å™¨ä¼š(x¨¬)创å¾ä¸€ä¸ªä¸Žæ•°æ®åº“连接,òq¶æ‰§è¡Œæ“作的业务对象åQˆä¹Ÿž®±æ˜¯ä¸Žæ•°æ®åº“˜qžæŽ¥çš„实例)åQŒåŒæ—¶ä¼š(x¨¬)创å¾ä¸€ä¸?/font>Connection对象åQŒåœ¨æ”‘Öœ¨ä¸€ä¸ªæ± ä¸ï¼ˆå®žé™…上是一个线½E‹ï¼‰ã€‚当释放˜q™ä¸ªå®žä¾‹çš„æ—¶å€™ï¼Œæ¤å®žä¾‹ä¾¿å…³é—åQŒæ¤æ—¶åƈ没有真æ£çš„关闿•°æ®è¿žæŽ¥ï¼Œè€Œæ˜¯ž®†Connectionå¯¹è±¡æ ‡è®°ä¸ºå…³é—åŽå˜å‚¨åœ¨æ± ä¸ã€‚å¦‚æžœè¿™æ—¶å†æ¥å¯åŠ¨ä¸€ä¸ªæ–°çš„ä¸šåŠ¡å¯¹è±¡ï¼Œ˜q™æ—¶ž®×ƒ¼š(x¨¬)‹‚€(g¨¨)查现有的˜qžæŽ¥åQŒå¦‚æžœæ± ä¸æœ‰æ‰“开的连接,å³ä‹É用它åQŒå¦åˆ™å†åˆ›å¾ä¸€ä¸ªæ–°˜qžæŽ¥ã€?/font>
å¯èƒ½ä½ 会(x¨¬)觉得很奇怪,如果˜q™æ ·åQŒé‚£æ± ä¸ä¸æ˜¯æœ‰å¾ˆå¤šçš„对象åQŒå²‚䏿˜¯ä¼?x¨¬)浪费很多的资æºåQŒè¿™ä¸ªé—®é¢˜çš„解决æ–ÒŽ(gu¨©)¡ˆæ˜¯ä½ å¯ä»¥è®„¡½®ä¸Žæ•°æ®åº“的特定连接时é—ß_(d¨¢)¼ˆé»˜è®¤60¿U’)åQŒå¦‚果在˜q™ä¸ªæ—‰™—´å†…未被ä‹É用,.NETæä¾›ž®×ƒ¼š(x¨¬)关闿¤è¿žæŽ¥ã€?/font>
如何打开˜qžæŽ¥æ± ?默认情况下是打开çš?
如何关闘qžæŽ¥æ± ?å¯ä»¥ä½¿ç”¨OleDbConnection.ReleaseConnectionPool()æ–ÒŽ(gu¨©)³•æ¥å…³é—è¿žæŽ¥æ± åQŒæ›´æˆ–è€…ä½ å¯ä»¥åœ¨ï¼¯åQ¬ï×I åQ¤ïð‡˜qžæŽ¥å—符串ä¸åŠ ä¸ŠOLE DB Services= - 4;在用SqlConnection对象时å¯åœ¨è¿žæŽ¥ç¬¦ä¸åŠ ä¸ŠPooling=Falseã€‚è¿™æ—¶ä½ å†è°ƒç”¨Close()时候便ä¼?x¨¬)真æ£åœ°å…³é—与数æ®åº“的连接ã€?/p>
åQˆæ³¨1åQšå¯ä»¥ä‹É用SåQ±ï¼¬äº‹äšg探查器或性能监视器æ¥è§‚察˜qžæŽ¥åˆ°æ•°æ®åº“ä¸çš„˜qžæŽ¥æ•°ç›®åQŒä»¥è¯†åˆ«˜qžæŽ¥æ˜¯å¦çœŸæ£å…³é—æˆ–æ˜¯åªæ˜¯æ”‘Ö…¥æ± ä¸ã€‚)
åQˆæ³¨2åQšå¯ä»¥æ˜¾å¼è°ƒç”¨Dispose()æ–ÒŽ(gu¨©)³•在垃圾收集器回收之å‰é‡Šæ”¾èµ„æºåQŒä½†å¦‚æžœä½ åªæ˜¯å°†Connectionå¯¹è±¡è®¾äØ“(f¨´)åQ®ï¼µåQ¬ï¼¬çš„è¯åQŒæ˜¯ä¸ä¼š(x¨¬)æ–å¼€ä¸Žæ•°æ®æºçš„连接的åQ?/p>
利用Connection对象æ¥åˆ›å»ºCommand对象åQ?ADO.NETä¸ç”¨Commandå¯¹è±¡æ¥æ‰§è¡Œæ•°æ®æŸ¥è¯¢ï¼Œæ›´æ–°åQ‰ä¾‹ã€€åQ?/p>
SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");
using (OleDbCommand cmd=con.CreateCommadn())
{
cmd.CommandText="select * from table";
cmd.ExecuteNonQuery();
}
(注:(x¨¬)æ¤å¤„使用using 的好处是在进行椋ơæ“作åŽä¾¿å¯é‡Šæ”¾èµ„æºã€?
利用Connection对象æ¥åˆ›å»ºTransaction对象åQ?Transaction对象是ADO.NETä¸çš„事务½Ž¡ç†å¯¹è±¡åQ?/font>
例:(x¨¬)
SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");
con.Open();
OleDbTransaction tran=con.BeginTransaction(); (注:(x¨¬)è°ƒç”¨æ¤æ–¹æ³•会(x¨¬)在连接时˜q”回一个新的打开的Transaction对象æ¥è¿›è¡Œäº‹åŠ¡ç®¡ç†ï¼‰
(注:(x¨¬)事务是指一¾l„å•一实体˜q行的è¯å¥ï¼Œå¯ä»¥¼‹®ä¿æ•°æ®çš„完整性,防æ¢å› ç³»¾lŸæ•…éšœæˆ–å…¶å®ƒåŽŸå› è€Œå¼•èµïL(f¨¥ng)š„æ•°æ®ä¸¢å¤±ã€‚概念很抽象åQŒå‘µå‘µï¼Œçœ‹ä¸‹åŽÕd°±æ˜Žç™½äº†ï¼‰
事务有AåQ£ï¾ƒåQ¤å››ä¸ªå±žæ€§ï¼ˆå›_ŽŸåæ€§ï¼Œä¸€è‡´æ€§ï¼Œéš”离性,æŒä¹…性)åQ?/font>
åŽŸåæ€?/font>指在执行事务˜q‡ç¨‹ä¸ï¼Œ˜q™ä¸ª˜q‡ç¨‹è¦ä¹ˆæˆåŠŸæ‰§è¡ŒåQŒè¦ä¹ˆä¸æ‰§è¡Œã€?/font>
一致æ€?/font>指事务å‰å’Œäº‹åŠ¡åŽçš„æ•°æ®çš„一致性,也就是如果事务æˆåŠŸæ‰§è¡Œçš„è¯ï¼Œ¾pÈ»Ÿž®Þp¿”回æˆåŠŸçš„çŠ¶æ€ï¼ŒåÏx‰€æœ‰æ•°æ®çš„æ”¹å˜æ ‡è®°ä¸ºå·²å®ŒæˆåQŒå¦‚没完æˆäº‹åŠ¡ï¼Œå›_›žæ»šï¼Œòq¶å›žåˆ°å…ˆå‰çš„åˆæ³•状æ€ã€?/font>
隔离æ€?/font>指一个事务内的ä“Q何å˜åŒ–都独立于其它的事务åQˆç›¸å¯¹äºŽä¸¤ä¸ªäº‹åŠ¡çš„è¯´æ³•ï¼‰
æŒä¹…æ€?/font>指事务是æŒç®‹çš„,也就是事务æˆåŠŸå®ŒæˆåŽçš„æ”¹å˜æ˜¯æ°æ€¹…çš„ã€?br />
其他详细使用å¯ä»¥å‚ç…§MSDN