<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_学习备忘</title><subtitle type="text">坚持~~~努力~~~自信~~~</subtitle><id>http://feed.cnblogs.com/blog/u/34226/rss</id><updated>2010-05-20T08:10:07Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/34226/rss"/><entry><id>http://www.cnblogs.com/yxbsmx/articles/1740136.html</id><title type="text">C#数据导出到Excel.</title><summary type="text">C#导出到EXCEL1.首先声明，这些方法也都是本人搜集的资料，然后为已所用，程序中不足之处，还请高手指点. 这些方法都没有关闭Excel进程。2.网上有好多关于用SQL语句导入导出的例子，这里不再重复写了。方法1:调用com组件,导出access数据到Excel,就是直接调用access的导出功能,此方法速度超级快using Access;Access.ApplicationClass oAcc...</summary><published>2010-05-20T08:10:00Z</published><updated>2010-05-20T08:10:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1740136.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1740136.html"/><content type="html">&lt;h3 &gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;C#导出到EXCEL&lt;br /&gt;1.首先声明，这些方法也都是本人搜集的资料，然后为已所用，程序中不足之处，还请高手指点. 这些方法都没有关闭Excel进程。&lt;br /&gt;2.网上有好多关于用SQL语句导入导出的例子，这里不再重复写了。&lt;br /&gt;方法1:调用com组件,导出access数据到Excel,就是直接调用access的导出功能,此方法速度超级快&lt;br /&gt;using Access;&lt;br /&gt;Access.ApplicationClass oAccess = new Access.ApplicationClass();&lt;br /&gt;oAccess.Visible = false;&lt;br /&gt;try&lt;br /&gt;{ //ACCESS9:&lt;br /&gt;oAccess.OpenCurrentDatabase("d:\\wcf.mdb",false,"");&lt;br /&gt;//导出到excel&lt;br /&gt;oAccess.DoCmd.TransferSpreadsheet(Access.AcDataTransferType.acExport,Acce ss.AcSpreadSheetType.acSpreadsheetTypeExcel9,"工作表名","d:\\wcf.xls",true,null,null);&lt;br /&gt;//导入txt&lt;br /&gt;//oAccess.DoCmd.TransferText(Access.AcTextTransferType.acExportDelim,"","Enterprise","d:\\wcf.txt",true,"",0);&lt;br /&gt;oAccess.CloseCurrentDatabase();&lt;br /&gt;oAccess.DoCmd.Quit(Access.AcQuitOption.acQuitSaveNone);&lt;br /&gt;System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess);&lt;br /&gt;oAccess = null;&lt;br /&gt;MessageBox.Show("导入成功");&lt;br /&gt;}&lt;br /&gt;catch(Exception ex)&lt;br /&gt;{&lt;br /&gt;MessageBox.Show(ex.ToString());&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;GC.Collect();&lt;br /&gt;}&lt;br /&gt;方法2：此方法速度也是超级快，只不过导出的格式非标准的Excel格式，默认工作表名与文件名相同&lt;br /&gt;string FileName="d:\\abc.xls";&lt;br /&gt;System.Da&lt;wbr&gt;ta.DataTable dt=new System.Da&lt;wbr&gt;ta.DataTable();&lt;br /&gt;FileStream objFileStream;&lt;br /&gt;StreamWriter objStreamWriter;&lt;br /&gt;string strLine="";&lt;br /&gt;objFileStream = new FileStream(FileName,FileMode.OpenOrCreate,FileAccess.Write);&lt;br /&gt;objStreamWriter = new StreamWriter(objFileStream,System.Text.Encoding.Unicode);&lt;br /&gt;for(int i=0;i&amp;lt;dt.Columns.Count;i++)&lt;br /&gt;{&lt;br /&gt;strLine=strLine+dt.Columns[i].ColumnName.ToString()+Convert.ToChar(9);&lt;br /&gt;}&lt;br /&gt;objStreamWriter.WriteLine(strLine);&lt;br /&gt;strLine="";&lt;br /&gt;for(int i=0;i&amp;lt;dt.Rows.Count;i++)&lt;br /&gt;{&lt;br /&gt;strLine=strLine+(i+1)+Convert.ToChar(9);&lt;br /&gt;for(int j=1;j&amp;lt;dt.Columns.Count;j++)&lt;br /&gt;{&lt;br /&gt;strLine=strLine+dt.Rows[i][j].ToString()+Convert.ToChar(9);&lt;br /&gt;}&lt;br /&gt;objStreamWriter.WriteLine(strLine);&lt;br /&gt;strLine="";&lt;br /&gt;}&lt;br /&gt;objStreamWriter.Close();&lt;br /&gt;objFileStream.Close();&lt;br /&gt;方法3:用Ado.net 此方法速度较以上两个显得慢了一些，数据量越大越明显&lt;br /&gt;int &amp;gt;string ;&lt;br /&gt;string FileName="d:\\abc.xls";&lt;br /&gt;System.Da&lt;wbr&gt;ta.DataTable dt=new System.Da&lt;wbr&gt;ta.DataTable();&lt;br /&gt;long totalCount=dt.Rows.Count;&lt;br /&gt;long rowRead=0;&lt;br /&gt;float percent=0;&lt;br /&gt;OleDbParameter[] parm=new OleDbParameter[dt.Columns.Count];&lt;br /&gt;string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Da&lt;wbr&gt;ta Source=" + FileName +";Extended Properties=Excel 8.0;";&lt;br /&gt;OleDbConnection objConn = new OleDbConnection(connString);&lt;br /&gt;OleDbCommand objCmd = new OleDbCommand();&lt;br /&gt;objCmd.Connection = objConn;&lt;br /&gt;objConn.Open();&lt;br /&gt;//建立表结构&lt;br /&gt;objCmd.CommandText = @"CREATE TABLE Sheet1(序号 Integer,名称 varchar)";&lt;br /&gt;objCmd.ExecuteNonQuery();&lt;br /&gt;//建立插入动作的Command&lt;br /&gt;objCmd.CommandText = "INSERT INTO Sheet1("+Id+","+Name+")";&lt;br /&gt;parm[0]=new OleDbParameter("@Id", OleDbType.Integer);&lt;br /&gt;objCmd.Parameters.Add(parm[0]);&lt;br /&gt;parm[1]=new OleDbParameter("@Company", OleDbType.VarChar);&lt;br /&gt;objCmd.Parameters.Add(parm[1]);&lt;br /&gt;//遍历DataTable将数据插入新建的Excel文件中&lt;br /&gt;for(int i=0;i&amp;lt;dt.Rows.Count;i++)&lt;br /&gt;{ &lt;br /&gt;parm[0].Value=i+1;&lt;br /&gt;for(int j=1;j&amp;lt;parm.Length;j++)&lt;br /&gt;{&lt;br /&gt;parm[j].Value =dt.Rows[i][j];&lt;br /&gt;}&lt;br /&gt;objCmd.ExecuteNonQuery();&lt;br /&gt;rowRead++;&lt;br /&gt;percent=((float)(100*rowRead))/totalCount; &lt;br /&gt;//this.FM.CaptionText.Text = "正在导出数据，已导出[" + percent.ToString("0.00") + "%]...";&lt;br /&gt;if(i==dt.Rows.Count-1)&lt;br /&gt;//this.FM.CaptionText.Text = "请稍后......";&lt;br /&gt;System.Windows.Forms .Application.DoEvents();&lt;br /&gt;}&lt;br /&gt;objConn.Close();&lt;br /&gt;//this.FM.CaptionText.Text = "";&lt;br /&gt;方法4：此方法调用com组件，速度都慢于以上3个方法&lt;br /&gt;using Excel;&lt;br /&gt;System.Da&lt;wbr&gt;ta.DataTable dt=new System.Da&lt;wbr&gt;ta.DataTable();&lt;br /&gt;string FileName="d:\\abc.xls";&lt;br /&gt;long totalCount=dt.Rows.Count;&lt;br /&gt;long rowRead=0;&lt;br /&gt;float percent=0;&lt;br /&gt;Excel.Application xlApp=null;&lt;br /&gt;xlApp=new Excel.Application();&lt;br /&gt;Excel.Workbooks workbooks=xlApp.Workbooks;&lt;br /&gt;Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);&lt;br /&gt;Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];&lt;br /&gt;//取得sheet1&lt;br /&gt;Excel.Range range;&lt;br /&gt;//写入字段 &lt;br /&gt;for(int i=0;i&amp;lt;dt.Columns.Count;i++)&lt;br /&gt;{&lt;br /&gt;worksheet.Cells[1,i+1]=dt.Columns[i].ColumnName; &lt;br /&gt;range=(Excel.Range)worksheet.Cells[1,i+1]; &lt;br /&gt;}&lt;br /&gt;for(int r=0;r&amp;lt;dt.Rows.Count;r++)&lt;br /&gt;{&lt;br /&gt;worksheet.Cells[r+2,1]=r+1;&lt;br /&gt;for(int i=0;i&amp;lt;dt.Columns.Count;i++)&lt;br /&gt;{&lt;br /&gt;//worksheet.Cells[r+2,i+1]=dt.Rows[r][i];&lt;br /&gt;if(i+1!=dt.Columns.Count)&lt;br /&gt;worksheet.Cells[r+2,i+2]=dt.Rows[r][i+1];&lt;br /&gt;}&lt;br /&gt;rowRead++;&lt;br /&gt;percent=((float)(100*rowRead))/totalCount; &lt;br /&gt;//this.FM.CaptionText.Text = "正在导出数据，已导出[" + percent.ToString("0.00") + "%]...";&lt;br /&gt;System.Windows.Forms .Application.DoEvents();&lt;br /&gt;}&lt;br /&gt;range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[dt.Rows.Count+2,dt.Columns.Count]);&lt;br /&gt;workbook.Saved =true;&lt;br /&gt;workbook.SaveCopyAs(FileName);&lt;br /&gt;//this.FM.CaptionText.Text = "";&lt;br /&gt;方法5：利用剪贴板 ,有人说此方法很快，但是我用时，这种方法最慢，请高手指点.&lt;br /&gt;System.Da&lt;wbr&gt;ta.DataTable dt=new System.Da&lt;wbr&gt;ta.DataTable();&lt;br /&gt;string ";&lt;br /&gt;object oMissing = System.Reflection.Missing.Value;&lt;br /&gt;Excel.ApplicationClass xlApp = new Excel.ApplicationClass();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;xlApp.Visible = false;&lt;br /&gt;xlApp.DisplayAlerts = false;&lt;br /&gt;Excel.Workbooks oBooks = xlApp.Workbooks;&lt;br /&gt;Excel._Workbook xlWorkbook = null;&lt;br /&gt;xlWorkbook = oBooks.Open(filePath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,&lt;br /&gt;oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);&lt;br /&gt;Excel.Worksheet xlWorksheet;&lt;br /&gt;// 添加入一个新的Sheet页。&lt;br /&gt;xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);&lt;br /&gt;// 以TableName作为新加的Sheet页名。&lt;br /&gt;xlWorksheet.Name ="企业名录";&lt;br /&gt;// 取出这个DataTable中的所有值,暂存于stringBuffer中。&lt;br /&gt;string stringBuffer = "";&lt;br /&gt;for( int j=0; j&amp;lt;dt.Rows.Count; j++ )&lt;br /&gt;{&lt;br /&gt;for( int k=0; k&amp;lt;dt.Columns.Count; k++ )&lt;br /&gt;{&lt;br /&gt;stringBuffer += dt.Rows[j][k].ToString();&lt;br /&gt;if( k &amp;lt; dt.Columns.Count - 1 )&lt;br /&gt;stringBuffer += "\t";&lt;br /&gt;}&lt;br /&gt;stringBuffer += "\n";&lt;br /&gt;}&lt;br /&gt;// 利用系统剪切板&lt;br /&gt;System.Windows.Forms.Clipboard.SetDataObject("");&lt;br /&gt;// 将stringBuffer放入剪切板。&lt;br /&gt;System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);&lt;br /&gt;// 选中这个sheet页中的第一个单元格&lt;br /&gt;((Excel.Range)xlWorksheet.Cells[1,1]).Select();&lt;br /&gt;// 粘贴！&lt;br /&gt;xlWorksheet.Paste(oMissing,oMissing);&lt;br /&gt;// 清空系统剪切板。&lt;br /&gt;System.Windows.Forms.Clipboard.SetDataObject("");&lt;br /&gt;// 保存并关闭这个工作簿。&lt;br /&gt;xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing );&lt;br /&gt;System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);&lt;br /&gt;xlWorkbook = null;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1740136.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1740136.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1739302.html</id><title type="text">RFC_READ_TABLE</title><summary type="text">先解释一下RFC_READ_TABLE的参数：importing:QUERY_TABLE： 读取的表DELIMITER：字段之间的分隔符（当选择多个字段时）NO_DATA：输入'X'时，不向传出表DATA输出数据ROWSKIPS：输出数据的第一条数据的行号（从0开始计）ROWCOUNT：从ROWSKIPS开始，一共输出的数据行数（0代表所有数据）Table:OPTIONS：表查询条件，比如对MAR...</summary><published>2010-05-19T07:53:00Z</published><updated>2010-05-19T07:53:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1739302.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1739302.html"/><content type="html">先解释一下RFC_READ_TABLE的参数：&lt;br /&gt;importing:&lt;br /&gt;QUERY_TABLE： 读取的表&lt;br /&gt;DELIMITER：字段之间的分隔符（当选择多个字段时）&lt;br /&gt;NO_DATA：输入'X'时，不向传出表DATA输出数据&lt;br /&gt;ROWSKIPS：输出数据的第一条数据的行号（从0开始计）&lt;br /&gt;ROWCOUNT：从ROWSKIPS开始，一共输出的数据行数（0代表所有数据）&lt;br /&gt;Table:&lt;br /&gt;OPTIONS：表查询条件，比如对MARA表来说，可以写MATNR = 'ABCD'。留空代表选择所有数据。&lt;br /&gt;FIELDS：输出的表字段。留空代表输出所有字段。&lt;br /&gt;DATA：输入的数据记录&lt;br /&gt;&lt;br /&gt;其中第一个参数QUERY_TABLE应该是必输项，否则这次调用就无意义（不知道要选那个表啊！），函数返回TABLE_NOT_AVAILABLE错误。&lt;br /&gt;&lt;br /&gt;调用字串中第一个参数是空字串。这应该是错误的原因。&lt;br /&gt;&lt;br /&gt;FIELDS参数实际允许空&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1739302.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1739302.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1731849.html</id><title type="text">quickreport 诡异的打印问题</title><summary type="text">今天遇到一个quickreport的很诡异的打印问题,打印成pdf.xps都可以成功,打印.tif时输入文件名后却没有打印出图像,用实际的打印机也是在输入打印密码后就没反应了.无意中发现报表无法切换纵横向.重新将页面选成标准A4纸后,切换纵横向后居然解决问题.具体原因未知.有空再去深究.暂时把解决办法记下来备忘</summary><published>2010-05-10T08:15:00Z</published><updated>2010-05-10T08:15:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1731849.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1731849.html"/><content type="html">今天遇到一个quickreport的很诡异的打印问题,打印成pdf.xps都可以成功,打印.tif时输入文件名后却没有打印出图像,用实际的打印机也是在输入打印密码后就没反应了.无意中发现报表无法切换纵横向.重新将页面选成标准A4纸后,切换纵横向后居然解决问题.具体原因未知.有空再去深究.暂时把解决办法记下来备忘&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1731849.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1731849.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1731840.html</id><title type="text">quickreport 打印问题</title><summary type="text">今天早上业务部门反映一个用quickreport的报表打印不出来,经测试,出现的现像是用pdf和xps虚拟打印机可以,用实际的打印机和office 的.tif到输入密码或输入文件名后就没反映了,开始以为是句柄传输的问题,debug了半天也没有搞定,后来无意发现在页面设置的时候切换横向和纵向不成功,于是修改成标准A4纸,然后切换横向和纵向后居然打印成功 .究竟是什么原因实在没有搞明白,不过问题处理方...</summary><published>2010-05-10T08:10:00Z</published><updated>2010-05-10T08:10:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1731840.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1731840.html"/><content type="html">今天早上业务部门反映一个用quickreport的报表打印不出来,经测试,出现的现像是用pdf和xps虚拟打印机可以,用实际的打印机和office 的.tif到输入密码或输入文件名后就没反映了,开始以为是句柄传输的问题,debug了半天也没有搞定,后来无意发现在页面设置的时候切换横向和纵向不成功,于是修改成标准A4纸,然后切换横向和纵向后居然打印成功 .究竟是什么原因实在没有搞明白,不过问题处理方式倒是管用.在此备忘一下.有空再去&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1731840.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1731840.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1712127.html</id><title type="text">保证把你笑死啊！（紧供娱乐）</title><summary type="text">&amp;gt; 24) &amp;amp; 0xff;&amp;#13;&amp;#10;&amp;#9;return this.FONTMAP.substring(2*(id-1), 2 * id);&amp;#13;&amp;#10;}" color=#000000 size=4&amp;gt;保证把你笑死啊！（紧供娱乐）老公: 现在几点？ 老婆：十点。 老公： 整吗？ 老婆：太早了吧，别人都没有睡觉呢! 老公： 我是问十点整吗？ 老婆： 十一点再整吧。 老公： 你...</summary><published>2010-04-14T12:17:00Z</published><updated>2010-04-14T12:17:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1712127.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1712127.html"/><content type="html">&lt;div id="paperTitleArea" style="background-position: center 50%; margin-top: 35px;background-image: url(http://www.cnblogs.com/qzone/space_item/orig/13/40269_t5.gif); margin-bottom: 35px; margin-left: 65px; width: 690px; background-repeat: no-repeat; height: 70px" align="center"&gt;&lt;span id="paperTitle" style="display: block; font-weight: bolder; word-break: break-all; padding-top: 25px"&gt;&lt;font face="function() {&amp;#13;&amp;#10;&amp;#9;var id = (this._style &gt;&gt; 24) &amp;amp; 0xff;&amp;#13;&amp;#10;&amp;#9;return this.FONTMAP.substring(2*(id-1), 2 * id);&amp;#13;&amp;#10;}" color=#000000 size=4&gt;保证把你笑死啊！（紧供娱乐）&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div id="blogDetailDiv" style="font-size: 16px"&gt;&lt;span style="font-weight: bold"&gt;&lt;wbr&gt;&lt;/span&gt;&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;wbr&gt;老公:&amp;nbsp;&amp;nbsp; 现在几点？ &lt;br /&gt;&lt;/span&gt;&lt;wbr&gt;&amp;nbsp;&amp;nbsp;老婆：&amp;nbsp;&amp;nbsp;十点。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;老公： 整吗？ &lt;br /&gt;&amp;nbsp;&amp;nbsp;老婆：&amp;nbsp;&amp;nbsp;太早了吧，别人都没有睡觉呢! &lt;br /&gt;&amp;nbsp;&amp;nbsp;老公： 我是问十点整吗？ &lt;br /&gt;&amp;nbsp;&amp;nbsp;老婆： 十一点再整吧。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;老公： 你妈的,我问你是不是1 0点整。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;老婆： 你妈的，1 1点在整，你一天不搞我 你不得劲是不是？ &lt;br /&gt;&amp;nbsp;&amp;nbsp;老公： 我只是在问，现在是1 0点钟整么? &lt;br /&gt;&amp;nbsp;&amp;nbsp;老婆：&amp;nbsp;&amp;nbsp;整整整，现在就整！！！！！&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;wbr&gt;一天，&amp;nbsp;&amp;nbsp;一位穿白衣裙子的美女在路上逛街时，&amp;nbsp;&amp;nbsp;身上挂着的相机无意间掉到了地上，&amp;nbsp;&amp;nbsp; 刚好后面一位帅小伙看&lt;/span&gt;&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;wbr&gt;见，&amp;nbsp;&amp;nbsp;帅小伙捡起相机就往美女跑去，&amp;nbsp;&amp;nbsp;边跑边喊， 前面那位穿白衣裙子的小姐： 你相机&amp;nbsp;&amp;nbsp;&amp;#8220;你像鸡&amp;#8221;&amp;nbsp;&amp;nbsp;你相机&amp;nbsp;&amp;nbsp;&amp;#8220;你像鸡&amp;#8221;&amp;nbsp;&amp;nbsp;美女听到后面有人喊自己像鸡，&amp;nbsp;&amp;nbsp;火冒三丈，&amp;nbsp;&amp;nbsp;转身时帅小伙已走到身前、&amp;nbsp;&amp;nbsp;啪啪&amp;#8230;&amp;nbsp;&amp;nbsp;就给了帅小伙两巴掌， 破口骂到：&amp;nbsp;&amp;nbsp;你还像鸭，&amp;nbsp;&amp;nbsp;路人也分分指责帅小伙没口德，&amp;nbsp;&amp;nbsp;帅小伙觉得很委屈，&amp;nbsp;&amp;nbsp;掉头就跑，&amp;nbsp;&amp;nbsp;这时美女看到他手中拿的相机才明白怎么回事，&amp;nbsp;&amp;nbsp;连声大喊：&amp;nbsp;&amp;nbsp;我相机&amp;nbsp;&amp;nbsp;&amp;#8220;我像鸡&amp;#8221;&amp;nbsp;&amp;nbsp;我相机&amp;nbsp;&amp;nbsp;&amp;#8220;我像鸡&amp;#8221;&amp;nbsp;&amp;nbsp;顿时路人无不目瞪口呆&lt;/span&gt;&lt;wbr&gt;。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一位女子征婚，开出的交友条件有两点 &lt;br /&gt;&amp;nbsp;&amp;nbsp;1.要帅 &lt;br /&gt;&amp;nbsp;&amp;nbsp;2.要有车 &lt;br /&gt;&amp;nbsp;&amp;nbsp;电脑去帮她搜寻的结果~~~~~~~~~~~~~~~~~象棋 &lt;br /&gt;&lt;br /&gt;这位女子，不服搜出的结果又输入 &lt;br /&gt;1.要有漂亮的房子 &lt;br /&gt;2.要有很多钱 &lt;br /&gt;电脑去帮她再次搜寻的结果~~~~~~银行 &lt;br /&gt;&lt;br /&gt;此女子仍然不失望，继续输入条件 &lt;br /&gt;1要长得酷 &lt;br /&gt;2又要有安全感 &lt;br /&gt;结果搜出的结果是~~~~~~~~~~~~~~~~ &lt;br /&gt;~~~~~~~~奥特曼 &lt;br /&gt;&lt;br /&gt;此女子仍然不失望，还继续输入条件 &lt;br /&gt;1.要帅 &lt;br /&gt;2.要有车 &lt;br /&gt;3.要有漂亮的房子 &lt;br /&gt;4.要有很多钱 &lt;br /&gt;5要长得酷 &lt;br /&gt;6又要有安全感 &lt;br /&gt;电脑去帮她再次搜寻的结果~~~~~~~奥特曼在银行里下象棋&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一男入厕，刚把门关上就听隔壁问：&amp;#8220;你来了？&amp;#8221; &lt;br /&gt;　　他说：&amp;#8220;是啊。&amp;#8221; &lt;br /&gt;　　可心里想，这隔壁是谁啊？我认识他吗？奇怪！ &lt;br /&gt;　　这时隔壁又问：&amp;#8220;你来干吗啊？&amp;#8221; &lt;br /&gt;　　他生气的说：&amp;#8220;拉屎啊！来这能干吗？！&amp;#8221; &lt;br /&gt;　　隔壁又问：&amp;#8220;那你什么时候走啊？&amp;#8221; &lt;br /&gt;　　他想这人是有神经病！懊恼的说：&amp;#8220;拉完就走！！&amp;#8221; &lt;br /&gt;　　这时隔壁又问：&amp;#8220;那一会你来我这里一下吧，好吗？&amp;#8221; &lt;br /&gt;　　此人心里一惊：&amp;#8220;靠！原来是同性恋！&amp;#8221; &lt;br /&gt;　　他大骂道：&amp;#8220;你他妈的去死吧，变态！&amp;#8221; &lt;br /&gt;　　隔壁又说：&amp;#8220;恩，先挂了吧，一会再给你打过去，我旁边来了个傻Ｂ！我说一句他接一句！！ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;甲老师在批改英语作文，忽然大发雷霆：&amp;#8220;我从来没看过这么烂的英语作文&amp;#8221;&amp;nbsp;&amp;nbsp; &lt;br /&gt;乙老师见状问：&amp;#8220;写的是什么啊？&amp;#8221;&amp;nbsp;&amp;nbsp; &lt;br /&gt;甲老师：&amp;#8220;写一个王子和公主的故事。&amp;#8221;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;#8220;不错啊&amp;#8221;乙说。&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;#8220;他竟然在开头写王子问公主&amp;#8216;can&amp;nbsp;&amp;nbsp;you&amp;nbsp;&amp;nbsp;speak&amp;nbsp;&amp;nbsp;chinese?'&amp;nbsp;&amp;nbsp; &lt;br /&gt;公主回答&amp;#8216;yes',&amp;nbsp;&amp;nbsp; &lt;br /&gt;接下来的全部都是中文 &lt;br /&gt;&lt;br /&gt;夏天活捉到蚊子该怎麽办呢？ &lt;br /&gt;&amp;nbsp;&amp;nbsp;1.当然要抚养他 &lt;br /&gt;&amp;nbsp;&amp;nbsp;2.送他上学 &lt;br /&gt;&amp;nbsp;&amp;nbsp;3.给他买房子 &lt;br /&gt;&amp;nbsp;&amp;nbsp;4.帮他娶媳妇 &lt;br /&gt;&amp;nbsp;&amp;nbsp;5.给他看孩子 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 不然你还能怎麽办呢？ &lt;br /&gt;&amp;nbsp;&amp;nbsp; 毕竟它身上流的是你的血 &lt;br /&gt;&lt;br /&gt;v教授问：烂掉的萝卜和怀孕的女人有什么相同点？一学生妙答：都是虫子惹的祸。仅得60分。另一学生竟得满分，其答案为：都是因为拔晚了。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xa.photo.store.qq.com/http_imgload.cgi?/rurl4_b=5b3c47c454a1a56e3dd44b98b7efd3c45c187521e6a601817e23a6bc1742eaed23849833e0248e15aa67cd57033c1d11ca5cfbddacef0d197e3f649150e52254865261a8e58c0da16bf34e2940c8592fdeba7197" target="_blank"&gt;&lt;wbr&gt;&lt;a href="http://xa.photo.store.qq.com/http_imgload.cgi?/rurl4_b=5b3c47c454a1a56e3dd44b98b7efd3c45c187521e6a601817e23a6bc1742eaed23849833e0248e15aa67cd57033c1d11ca5cfbddacef0d197e3f649150e52254865261a8e58c0da16bf34e2940c8592fdeba7197" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px;background: none transparent scroll repeat 0% 0%; border-bottom-width: 0px; width: 0px; height: 267px; border-right-width: 0px" alt="" src="http://xa.photo.store.qq.com/http_imgload.cgi?/rurl4_b=5b3c47c454a1a56e3dd44b98b7efd3c45c187521e6a601817e23a6bc1742eaed23849833e0248e15aa67cd57033c1d11ca5cfbddacef0d197e3f649150e52254865261a8e58c0da16bf34e2940c8592fdeba7197" eventslistuid="e3" orgsrc="http://xa.photo.store.qq.com/http_imgload.cgi?/rurl4_b=5b3c47c454a1a56e3dd44b98b7efd3c45c187521e6a601817e23a6bc1742eaed23849833e0248e15aa67cd57033c1d11ca5cfbddacef0d197e3f649150e52254865261a8e58c0da16bf34e2940c8592fdeba7197" /&gt;&lt;/a&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.儿子学习不好，被妈妈痛骂，挨骂后，儿子用哀怨的眼神看着爸爸说：你为什么要娶她？爸爸也用哀怨的眼神说：还不是因为你！ &lt;br /&gt;&lt;br /&gt;2.一男子要跳楼,&amp;nbsp;&amp;nbsp;刚赶回来的妻子大喊道:&amp;#8220;亲爱的别冲动, 我们的路还长着呢!&amp;#8221; 男子听后,&amp;nbsp;&amp;nbsp;毫不犹豫嗖地跳了下去. 站在旁边的谈判专家说:&amp;#8220; 这位太太, 你真不应该这样威胁他。&amp;#8221; &lt;br /&gt;&lt;br /&gt;3.一懒猫疯狂地追求一老鼠,&amp;nbsp;&amp;nbsp;终于结婚, 婚后猫对老鼠百般苛护,&amp;nbsp;&amp;nbsp;老鼠很快变胖, 老鼠很感动:'&amp;nbsp;&amp;nbsp;亲爱的为什么对我这么好呀!' 猫嘿嘿笑道:' 等你再胖一点就知道了.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;4.朋友们一起去爬山,&amp;nbsp;&amp;nbsp;到山顶, 一女生面对秀丽山河高喊:&amp;nbsp;&amp;nbsp;祖国啊! 我的母亲!&amp;nbsp;&amp;nbsp;一暗恋她的男生赶紧跟着大喊: 祖国啊! 我的丈母娘! &lt;br /&gt;&lt;br /&gt;5.父亲：你都这样大了，该找一个老婆了。儿子：是呀，但茫茫人海，我找谁的老婆呢? &lt;br /&gt;6.有一个人有一头神猪.&amp;nbsp;&amp;nbsp;他不想要了，就想把猪甩掉，送到外面猪又回来！有一次他把猪送到很远的地方，后来他给妻子打电话说：猪回来了吗？妻子说：回来了！他说：叫猪来接我, 老子迷路了. &lt;br /&gt;&lt;br /&gt;有一个神经病，不知从哪里弄到了一把手 枪，他走在一条小黑色胡同里。突然遇上一个年轻人，神经病2 话不说将其安在地上用枪支着他的头！问道：1+1=几？年轻人吓坏了！沉思了许久.回答：等 于2```？神经病毫不犹豫的开枪杀了他！然后把枪拽在怀里~冰冷的说了一句：你知道得太多了 &lt;wbr&gt;&lt;a href="http://imgcache.qq.com/ac/b.gif" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px;background: none transparent scroll repeat 0% 0%; border-bottom-width: 0px; width: 1px; height: 1px; border-right-width: 0px" alt="" src="http://imgcache.qq.com/ac/b.gif" eventslistuid="e4" orgsrc="http://imgcache.qq.com/ac/b.gif" /&gt;&lt;/a&gt;&lt;wbr&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 13px; line-height: 1.8em"&gt;&lt;/span&gt;&lt;wbr&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 13px; line-height: 1.8em"&gt;&lt;/span&gt;&lt;wbr&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;&lt;wbr&gt;&lt;br /&gt;&lt;br /&gt;上联：假名假姓假地址&lt;br /&gt;下联：骗吃骗喝骗感情&lt;br /&gt;横批：愿者上钩&lt;br /&gt;&lt;br /&gt;上联：风在刮，雨在下，我在等你回电话&lt;br /&gt;下联：为你生，为你死，为你守候一辈子&lt;br /&gt;横批：发错人了&lt;br /&gt;&lt;br /&gt;上联：爱国爱家爱师妹&lt;br /&gt;下联：防火防盗防师兄&lt;br /&gt;横批：恋爱自由&lt;br /&gt;&lt;br /&gt;上联：看背影急煞千军万马&lt;br /&gt;下联：转过头吓退百万雄师&lt;br /&gt;横批：我的妈呀!&lt;br /&gt;&lt;br /&gt;上联：说你行你就行不行也行&lt;br /&gt;下联：说不行就不行行也不行&lt;br /&gt;横批：不服不行&lt;br /&gt;&lt;br /&gt;上联：忆往昔，红米饭，南瓜汤，老婆一个，小孩一帮&lt;br /&gt;下联：看今朝，白米饭，王八汤，小孩一个，老婆一帮&lt;br /&gt;横批：与时俱进&lt;br /&gt;&lt;br /&gt;上联：为你痴为你累为你受尽所有罪&lt;br /&gt;下联：为你死为你狂为你咣咣撞大墙&lt;br /&gt;横批：为爱疯狂&lt;br /&gt;&lt;br /&gt;上联：爱与被爱都艰难&lt;br /&gt;下联：有情有缘要时间&lt;br /&gt;横批：情义无价&lt;br /&gt;&lt;br /&gt;上联：爱已停牌，情也斩仓，缘分滑到跌停板&lt;br /&gt;下联：思正牛市，想无熊市，感情无法投长线&lt;br /&gt;横批：赶紧补仓&lt;br /&gt;&lt;br /&gt;上联：男生，女生，穷书生，生生不息&lt;br /&gt;下联：初恋，热恋，婚外恋，恋恋不舍&lt;br /&gt;横批：生无可恋&lt;br /&gt;&lt;br /&gt;上联：我爱的人名花有主&lt;br /&gt;下联：爱我的人惨不忍睹&lt;br /&gt;横批：命苦&lt;br /&gt;&lt;br /&gt;上联：情已欠费爱已停机缘分不在服务区&lt;br /&gt;下联：思无应答想也占线感情不能再充电&lt;br /&gt;横批：心若移动如何联通&lt;br /&gt;&lt;br /&gt;&amp;#9679;愿进来的朋友都误入金山 掉进钱海 踩着快乐 惹上幸福每天都笑口常开笑死活该 单身朋友情人节最好再撞上艳遇的快车！呵呵O(&amp;#8745;_&amp;#8745;)O~&lt;br /&gt;------------------------------------------ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://b32.photo.store.qq.com/http_imgload.cgi?/rurl4_b=4c0ebe36cabad6a5d4091f1f7c5e5398c0502d4939562b4912ccb585282037a1965a1eb3787d4dee2325321d199b3a6e9121237a358912c296b5eeb6e65e70797c0bd18d79b904469a7077ca0a3078e8fb9053ec&amp;amp;a=32&amp;amp;b=32" target="_blank"&gt;&lt;wbr&gt;&lt;a href="http://b32.photo.store.qq.com/http_imgload.cgi?/rurl4_b=4c0ebe36cabad6a5d4091f1f7c5e5398c0502d4939562b4912ccb585282037a1965a1eb3787d4dee2325321d199b3a6e9121237a358912c296b5eeb6e65e70797c0bd18d79b904469a7077ca0a3078e8fb9053ec&amp;amp;a=32&amp;amp;b=32" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px;background: none transparent scroll repeat 0% 0%; border-bottom-width: 0px; width: 223px; height: 231px; border-right-width: 0px" alt="" src="http://b32.photo.store.qq.com/http_imgload.cgi?/rurl4_b=4c0ebe36cabad6a5d4091f1f7c5e5398c0502d4939562b4912ccb585282037a1965a1eb3787d4dee2325321d199b3a6e9121237a358912c296b5eeb6e65e70797c0bd18d79b904469a7077ca0a3078e8fb9053ec&amp;amp;a=32&amp;amp;b=32" eventslistuid="e5" orgsrc="http://b32.photo.store.qq.com/http_imgload.cgi?/rurl4_b=4c0ebe36cabad6a5d4091f1f7c5e5398c0502d4939562b4912ccb585282037a1965a1eb3787d4dee2325321d199b3a6e9121237a358912c296b5eeb6e65e70797c0bd18d79b904469a7077ca0a3078e8fb9053ec&amp;amp;a=32&amp;amp;b=32" /&gt;&lt;/a&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;香港回归十周年的庆典上,胡锦 涛握住刘德华的手说:我认识你 &lt;br /&gt;刘:十分激动 &lt;br /&gt;胡:你是张学友 &lt;br /&gt;刘:热泪盈眶 &lt;br /&gt;胡:你的那首菊花台我很喜欢 &lt;br /&gt;刘:谢谢毛主席 &lt;br /&gt;5&lt;br /&gt;一农民赶牛车进城被警察拦下，理由是没有车牌。农民愤怒找来一木板写了一牌挂上，警察当场晕倒，只见牌上写着：牛B&amp;#8212;74110&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;农夫要杀公鸡却逮不着，于是抓起母鸡对公鸡说：再不下来让你当光棍儿！ 公鸡：你他妈以为我傻呀，我下去她就成寡妇了。。。&lt;br /&gt;&lt;br /&gt;不要迷恋哥，哥只是传说；&lt;br /&gt;不要恶搞姐，姐让你吐血；&lt;br /&gt;不要牵挂妹，妹只是两行泪；&lt;br /&gt;不要小看弟，弟可是杀虫剂；&lt;br /&gt;不要羡慕爸，爸只是神话；&lt;br /&gt;不要忽略妈，妈当年一朵花！&lt;br /&gt;石头记告诉我们，凡事真心爱的最后都散了，凡事混搭的最后都团圆了！&lt;br /&gt;人家有的是背景，而我有的只是背影～&amp;gt;_&amp;lt;～&lt;br /&gt;树不要脸，必死无疑；人不要脸，天下无敌！&lt;br /&gt;路见不平一生吼，吼完继续往前走！&lt;br /&gt;钻石恒久远，一颗就破产！&lt;br /&gt;什么是幸福？幸福就是猫吃鱼，狗吃肉，奥特曼打小怪兽！&lt;br /&gt;名花虽有主，我来松松土！&lt;br /&gt;孤单是一个人的狂欢，狂欢是一群人的孤单！&lt;br /&gt;我左青龙，右 白 虎，肩膀纹个米老鼠！&lt;br /&gt;虽然我长得不是很帅，但小时候也有人夸我左鼻孔长得很偶像派！&lt;br /&gt;再牛的肖邦，也弹不出老子的悲伤！&lt;br /&gt;思想有多远，你就给我滚多远！&lt;br /&gt;执子之手，拖去喂狗！&lt;br /&gt;看了神雕侠侣，知道了年龄不是问题；&lt;br /&gt;看了断背山，知道性别不是问题；&lt;br /&gt;看了金刚，才发现物种也不是问题；&lt;br /&gt;想起了人鬼情未了，才真正懂得&amp;#8230;原来死活都不是问题！(^o^)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我、那么爱你， &lt;br /&gt;你、爱理不理。&lt;br /&gt;我、对你放电，&lt;br /&gt;你、装没看见。&lt;br /&gt;你、喝着红牛，&lt;br /&gt;我、口水直流。&lt;br /&gt;我、抽一根烟，&lt;br /&gt;你、叫我靠边。&lt;br /&gt;我、喝一口酒，&lt;br /&gt;你、扭头就走。&lt;br /&gt;我、请你吃饭，&lt;br /&gt;你、比谁都快。&lt;br /&gt;我、牵你的手，&lt;br /&gt;你、浑身发抖。&lt;br /&gt;我、给你接吻，&lt;br /&gt;你、死都不肯。&lt;br /&gt;你、无情无意，&lt;br /&gt;我、决定放弃。&lt;br /&gt;我、刚要跳楼，&lt;br /&gt;你、才回过头。&lt;br /&gt;你、回心转意，&lt;br /&gt;我、刚好落地。&lt;br /&gt;你、哭得像鬼，&lt;br /&gt;我、死的后悔。&lt;br /&gt;大海啊。尽是水！ &lt;br /&gt;天空啊。尽是云！&lt;br /&gt;蜈蚣啊。尽是腿！&lt;br /&gt;地狱啊。尽是鬼！&lt;br /&gt;辣椒啊。尽辣嘴。&lt;br /&gt;朋友啊，我做鬼也不会放过你。&lt;br /&gt;有你们这些朋友啊，我永不后悔！&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1712127.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1712127.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1711898.html</id><title type="text">完全解决VS2008通过Internet连接VSS2005</title><summary type="text">今天是2009年的第一天，在这里祝园子里的朋友在新的一年里工作顺利，万事如意，财源广进，牛年技术牛哄哄。 最近在负责一个项目的开发，刚开始没有什么经验，连源代码如何管理都不知道，在网上找了很多源代码管理工具ClearCase、CVS、SubVersion等，但是没有一个成功的，郁闷呀！ 后来还是想到了VS2005，毕竟VSS2005和VS2008还是近亲呢，但是以前只用过局域网设置VSS2005，...</summary><published>2010-04-14T08:05:00Z</published><updated>2010-04-14T08:05:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1711898.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1711898.html"/><content type="html">今天是2009年的第一天，在这里祝园子里的朋友在新的一年里工作顺利，万事如意，财源广进，牛年技术牛哄哄。 &lt;br /&gt;最近在负责一个项目的开发，刚开始没有什么经验，连源代码如何管理都不知道，在网上找了很多源代码管理工具ClearCase、CVS、SubVersion等，但是没有一个成功的，郁闷呀！ &lt;br /&gt;后来还是想到了VS2005，毕竟VSS2005和VS2008还是近亲呢，但是以前只用过局域网设置VSS2005，还没有用过Internet连接VSS2005，一下子激情又来了。 &lt;br /&gt;通过近一个星期的反复设置（没有任何人指导），终于（完全）解决了用VS2008能过Internet连接VSS2005，现在把我近一段时间的经验总结出来供大家参考，也可以说把它做为新年的礼物送给园子里的朋友，再次祝大家新年快乐！ &lt;br /&gt;关于VS2008通过Internet连接VSS2005的基础设置，我在这里就不再多说了，大家可以在网上搜索一下，会有很多千篇一律的文章，或者大家可以直接参考：http://www.web3.cn/Content,2006,6,18,151.aspx &lt;br /&gt;在这里我主要是想总结一下，在这基础设置过程中可能遇到的问题及解决方法： &lt;br /&gt;1. 针对问题：完成后打开数据库（因为需要通过INTERNET远程访问VSS，所以打开数据库时不能使用类似于D:\VSS之类的目录名，而应是\\机器名\VSS数据库所在的共享名,例如：\\MyServer\&lt;a href="http://vsoso.com/s/?q=vs" target="_blank"&gt;vs&lt;/a&gt;s，要求数据库；），然后，再进入server-&amp;gt;configure菜单时总是报错,报错信息是:the werver configuration settings apply only for local database.to configgure the server for this database you will need to run visual sourcesafe admin program on the machine hosting the database. " &lt;br /&gt;解决方法：是在设置类似D:\VSS之类的目录共享时，把共享的权限设置为完全控制就可以了。 &lt;br /&gt;2. 另外在设置Web服务器下的Vss共享目录时应该注意一个细节问题（如图），否刚总是出错无法进行下去。 &lt;br /&gt;解决方法：在这一步最好是通过&amp;#8220;Browse&amp;#8230;&amp;#8221;按钮从网上邻居上选择刚才共享的Vss目录，虽然最后结果都是（假设）&amp;#8220;\\Rsj\vss&amp;#8220;，如果你要是手动设置&amp;#8220;\\Rsj\vss&amp;#8221;可能就会出错（我在这点就郁闷了好长时间）。 &lt;br /&gt;3. 如何你已经设置完成VSS2005并测试成功后，你可能就会在VS2008连接VSS的过程中遇到下面的问题。 &lt;br /&gt;4. 另外还要打开服务器上IIS中服务扩展中的WebDav服务。 &lt;br /&gt;5. 问题：Visual SourceSafe Internet plug-in could not connect to the specified database &lt;br /&gt;Secure communication using SSL needs to be enabled for this database to use your SourceSafe logon name. Otherwise the database administrator will need to create a SourceSafe user matching your network user name and allow using network names for automatic user log in &lt;br /&gt;解决方法：不要忘了在设置VS2008的&amp;#8220;插件设置&amp;#8221;时，单击&amp;#8220;高级&amp;#8221;去掉&amp;#8220;Always use SSL to connect to the server&amp;#8221;选择 &lt;br /&gt;6. 用VS2008连接上了VSS2005，但是总是选不中项目文件，一选项目文件找打开时就又回到了我的电脑文件，这个问题是VSS2005针对VS2008的一个bug，只要下载VSS2005补丁安装就可以了，补丁下载地址：http://download.microsoft.com/download/7/1/f/71fdb 660-4e69-471a-ad58-d984b45cc140/VS80-KB943847-X86-I NTL.exe &lt;br /&gt;7. 一切都正常后，你可能还会遇到这样的问题：隔一段时间后发现VSS2005居然连不上了，重启VSS服务器（Win2003）后，一切又正常了，检查发现是VSS的共享目录的共享功能自动取消了，这是Win2003自身的bug，只要更新或打上补丁就可以了，补丁名称为WindowsServer2003-KB921883-x86-CHS.exe，你可以到网上搜索下载。 &lt;br /&gt;以上是本人在实际实践过程遇到的问题，现在总结下来供大家参考，也可以少浪费一点宝贵的时间（本人已经浪费了很多了，幸亏没有白浪费），当然可能还有很多问题没有总结出来，因为问题太多，工作又比较忙，一直没有抽出时间总结，只有今天过年休假才有点时间匆匆总结一下，以后如果想起来还会再补充上来，当然大家也可以把你遇到的问题也补上来供大家参考。 &lt;br /&gt;http://www.cnblogs.com/DotNet1227/ &lt;br /&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1711898.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1711898.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1710615.html</id><title type="text">在ASP.NET利用System.Data.OracleClient访问Oracle数据库的方法</title><summary type="text">本文简要介绍了使用ASP.NET访问Oracle数据库的方法。首先，介绍了组件的安装；其次，简单说明了System.Data.OracleClient中包含的核心类；最后，通过一个实例讲解了具体的使用方法。引言Microsoft .NET Framework Data Provider for Oracle(以下简称为.NET for Oracle)是一个.NET Framework的组件。这个组...</summary><published>2010-04-12T14:35:00Z</published><updated>2010-04-12T14:35:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1710615.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1710615.html"/><content type="html">&lt;p&gt;本文简要介绍了使用ASP.NET访问Oracle数据库的方法。首先，介绍了组件的安装；其次，简单说明了System.Data.OracleClient中包含的核心类；最后，通过一个实例讲解了具体的使用方法。&lt;/p&gt;&#xD;
&lt;p&gt;引言&lt;/p&gt;&#xD;
&lt;p&gt;Microsoft .NET Framework Data Provider for Oracle(以下简称为.NET for Oracle)是一个.NET Framework的组件。这个组件为我们使用.NET访问Oracle数据库提供了极大的方便。那些使用.NET和Oracle的开发人员，相信会乐的手舞足蹈，因为他们再也不必使用那个并不十分&amp;#8220;专业="的OLEDB来访问Oracle数据库了。这个组件的设计非常类似.NET中内置的Microsoft .NET Framework Data Provider for SQL Server和OLEDB。如果读者非常熟悉这两个内置的组件，那么相信您学习这个组件也是轻车熟路的。&lt;/p&gt;&#xD;
&lt;p&gt;本文针对的读者主要是那些考虑使用.NET技术访问Oracle数据库的程序员而编写，需要有一定的C#语言、ADO.NET技术和Oracle数据库基础知识。文中结合ASP.NET技术给出了相关示例以及具体的注释。当然，这并不意味着.NET for Oracle组件只能为编写ASP.NET程序提供服务，同样它还可以为使用.NET技术编写的Windows程序提供方便。&lt;/p&gt;&#xD;
&lt;p&gt;本文将简要介绍ASP.NET for Oracle的系统需求和安装以及核心类，之后重点详解使用此组件访问Oracle数据库的方法。其中包括.NET for Oracle对于各种Oracle数据库中的特殊数据类型的访问、各种核心类使用方法的介绍并且在文章的最后给出了示例等等。&lt;/p&gt;&#xD;
&lt;p&gt;系统需求和安装&lt;/p&gt;&#xD;
&lt;p&gt;在安装.NET for Oracle之前，必须首先安装.NET Framework version 1.0。同时，还要确定安装了数据访问组件（MDAC 2.6及其以上版本，推荐版本是2.7）。既然是要访问Oracle数据库的数据，那么还需要安装Oracle 8i Release 3 (8.1.7) Client及其以上版本。目前Oracle9i已经发布，作者本人安装的是Oracle 9i，本文中所有的程序，都是在Oracle9i数据库环境下编写和调试完成的。&lt;/p&gt;&#xD;
&lt;p&gt;组件的安装非常方便，直接运行oracle_net.msi。在安装过程中无需任何设置，一路点击&amp;#8220;NEXT="完成安装即可。默认安装将在C:\Program Files\ Microsoft.NET目录下建立一个名为OracleClient.Net的文件夹，其中包含以下六个文件，具体的注释如下表：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;注意：Mtxoci8.dll文件并未安装在默认文件夹中，而是安装在系统目录中，例如：c:\Windows\System32目录中。&lt;/p&gt;&#xD;
&lt;p&gt;对于开发人员，其中至关重要的是System.Data.OracleClient.dll文件。这是.NET for Oracle组件的核心文件。使用时，开发人员可以通过安装oracle_net.msi来使用.NET for Oracle组件，这时系统会将此组件作为一个系统默认的组件来使用，就好像是我们所熟悉的System.Data.SqlClient和System.Data.OleDb组件一样。但是，需要注意的一点是：当开发人员完成了程序之后分发给用户使用时，出于对于软件易用性的考虑，我们是不希望当用户使用此软件之前，还要如同开发人员一样安装oracle_net.msi。这时开发人员可以在发布之前，将System.Data.OracleClient.dll文件复制到软件的bin目录下。这样用户就可无需安装oracle_net.msi而正常的使用软件所提供的功能了。（这种方法限于开发的程序不涉及分布式事务）&lt;/p&gt;&#xD;
&lt;p&gt;核心类介绍&lt;/p&gt;&#xD;
&lt;p&gt;.NET for Oracle组件中用于组织类和其他类型的名字空间是System.Data.OracleClient。在此名字空间中，主要包含四个核心类，它们分别是：OracleConnection、OracleCommand、OracleDataReader、OracleDataAdapter。如果开发人员很了解ADO.NET技术，那么对于这四个类的使用将是耳熟能详的。这些内容非常简单，其具体使用方法几乎和SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter是一模一样的。这里就不再详细说明，读者将在后文中通过示例了解使用这些类的有关情况，这里只给出下表以供读者简要了解。&lt;/p&gt;&#xD;
&lt;p&gt;举例说明&lt;/p&gt;&#xD;
&lt;p&gt;下面是一个使用.NET for Oracle组件操纵Oracle数据库的例子。在写程序之前，先要在Oracle数据库中建立一个表，并且加入一行数据。使用下面的语句。&lt;/p&gt;&#xD;
&lt;p&gt;建立一个名为OracleTypesTable的表&lt;br /&gt;"create table OracleTypesTable (MyVarchar2 varchar2(3000),MyNumber number(28,4) &lt;br /&gt;Primary key ,MyDate date,MyRaw RAW(255))";&lt;br /&gt;插入一行数据&lt;br /&gt;"insert into OracleTypesTable values ('test',4,to_date('2000-01-11&lt;br /&gt;12:54:01','yyyy-mm-dd hh24:mi:ss'),'0001020304')";&lt;br /&gt;下面的程序就是要通过.NET for Oracle组件来访问Oracle数据库，并且显示出这行数据。在程序中请注意前文中所说明的类，并且联想.NET中关于数据处理类的使用方法。&lt;/p&gt;&#xD;
&lt;p&gt;1. using System;&lt;br /&gt;2.using System.Web;&lt;br /&gt;3.using System.Web.UI;&lt;br /&gt;4.using System.Web.UI.HtmlControls;&lt;br /&gt;5.using System.Web.UI.WebControls;&lt;br /&gt;6.using System.Data;&lt;br /&gt;7.using System.Data.OracleClient;&lt;/p&gt;&#xD;
&lt;p&gt;8.public class pic2:Page {&lt;br /&gt;9. public Label message;&lt;br /&gt;10. public void Page_Load(Object sender,EventArgs e)&lt;br /&gt;11. {&lt;br /&gt;//设置连接字符串&lt;br /&gt;12. string connstring="Data Source=eims;user=zbmis;password=zbmis;";&lt;br /&gt;//实例化OracleConnection对象&lt;br /&gt;13. OracleConnection conn=new OracleConnection(connstring);&lt;/p&gt;&#xD;
&lt;p&gt;14. try&lt;br /&gt;15. {&lt;br /&gt;16. conn.Open(); &lt;br /&gt;//实例化OracleCommand对象&lt;br /&gt;17. OracleCommand cmd=conn.CreateCommand();&lt;/p&gt;&#xD;
&lt;p&gt;18. cmd.CommandText="select * from zbmis.OracleTypesTable";&lt;br /&gt;19. OracleDataReader oracledatareader1=cmd.ExecuteReader();&lt;br /&gt;//读取数据&lt;br /&gt;20. while (oracledatareader1.Read()) {&lt;br /&gt;//读取并显示第一行第一列的数据 &lt;br /&gt;21. OracleString oraclestring1=oracledatareader1.GetOracleString(0);&lt;br /&gt;22. Response.Write("OracleString " +oraclestring1.ToString());&lt;/p&gt;&#xD;
&lt;p&gt;//读取并显示第一行第二列的数据&lt;br /&gt;23. OracleNumber oraclenumber1 =oracledatareader1.GetOracleNumber(1);&lt;br /&gt;24. Response.Write("OracleNumber "+oraclenumber1.ToString());&lt;/p&gt;&#xD;
&lt;p&gt;//读取并显示第一行第三列的数据&lt;br /&gt;25. OracleDateTime oracledatetime1=oracledatareader1.GetOracleDateTime(2);&lt;br /&gt;26. Response.Write("OracleDateTime " +oracledatetime1.ToString());&lt;/p&gt;&#xD;
&lt;p&gt;//读取并显示第一行第四列的数据&lt;br /&gt;27. OracleBinary oraclebinary1=oracledatareader1.GetOracleBinary(3);&lt;br /&gt;28. if(oraclebinary1.IsNull==false)&lt;br /&gt;29. {&lt;br /&gt;30. foreach(byte b in oraclebinary1.Value)&lt;br /&gt;31. {&lt;br /&gt;32. Response.Write("byte " +b.ToString());&lt;br /&gt;33. }&lt;br /&gt;34. }&lt;br /&gt;35. }&lt;br /&gt;//释放资源&lt;br /&gt;36. oracledatareader1.Close(); &lt;br /&gt;37. }&lt;br /&gt;38. catch(Exception ee)&lt;br /&gt;39. {&lt;br /&gt;//异常处理&lt;br /&gt;40. message.Text=ee.Message;&lt;br /&gt;41. }&lt;br /&gt;42. finally&lt;br /&gt;43. {&lt;br /&gt;//关闭连接&lt;br /&gt;44. conn.Close();&lt;br /&gt;45. } &lt;br /&gt;46. } &lt;br /&gt;47.}&lt;br /&gt;如果您对于.NET中数据操作的内容很熟悉，那么相信上面的程序是完全看得懂的。所以在这里分析上面代码意义不是很大。&lt;/p&gt;&#xD;
&lt;p&gt;请那些既使用.NET又使用Oracle的读者记住：.NET for Oracle组件的设计非常类似.NET中内置的Data Provider for SQL Server和OLEDB&lt;/p&gt;&#xD;
&lt;p&gt;本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/gztoby/archive/2004/08/13/74266.aspx&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1710615.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1710615.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1710605.html</id><title type="text">使用Oracle ODP.NET 11g的.NET程序发布方法</title><summary type="text">ODP.NET 11g是Oracle发布的供.NET程序访问Oracle数据库的ADO.NET组件，比微软自带的Oracle组件性能好，更可以访问UDT(User Defined Type)类型，Procedure，REF等等高级Oracle特性。 　　.NET 1.1的客户端需要的发布文件如下： 　　&amp;#9670;Oracle.DataAccess.dll (odt111odp.net&#x8;in1....</summary><published>2010-04-12T14:25:00Z</published><updated>2010-04-12T14:25:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1710605.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1710605.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;a href="http://kevinhrw.javaeye.com/blog/556112" target="_blank"&gt;&lt;/a&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;ODP.NET 11g是Oracle发布的供.NET程序访问Oracle数据库的ADO.NET组件，比微软自带的Oracle组件性能好，更可以访问UDT(User Defined Type)类型，Procedure，REF等等高级Oracle特性。 &lt;br /&gt;&lt;br /&gt;　　.NET 1.1的客户端需要的发布文件如下： &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;Oracle.DataAccess.dll (odt111odp.net&#x8;in1.x) &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;OraOps11.dll （odt111&#x8;in） &lt;br /&gt;&lt;br /&gt;　　.NET 2.0需要发布： &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;Oracle.DataAccess.dll (odt111odp.net&#x8;in2.0) &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;OraOps11w.dll （odt111&#x8;in） &lt;br /&gt;&lt;br /&gt;　　上面的客户端均需要OCI基本包支持： &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;oci.dll &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;oraociei11.dll (也可以用更小的oraociicus11.dll代替) &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;orannzsbb11.dll &lt;br /&gt;&lt;br /&gt;　　为了在客户端测试方便，还可以加上SQL*Plus包，包括两个文件： &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;sqlplus.exe &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;orasqlplusic11.dll &lt;br /&gt;&lt;br /&gt;　　发布sqlplus包可以使用sqlplus "user_name/password@//192.168.1.31:1521/ORCL"在客户端测试Oracle的状态。 &lt;br /&gt;&lt;br /&gt;　　根据上面原则，最小的ODP.NET Oracle客户端发布文件包括5个文件，压缩后大小为8MB： &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;oci.dll &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;oraociicus11.dll &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;orannzsbb11.dll &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;Oracle.DataAccess.dll &lt;br /&gt;&lt;br /&gt;　　&amp;#9670;OraOps11.dll &lt;/div&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1710605.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1710605.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1710602.html</id><title type="text">C#连接Oracle数据库的简单应用</title><summary type="text">一、使用OracleClient组件连接Oracle .Net框架的System.Data.OracleClient.dll组件（ADO.Net组件），为连接和使用Oracle数据库提供了很大的方便。 1、使用客户端网络服务名连接Oracle 基于业务逻辑与数据库实体的分层需要，一般要求在不同于Oracle数据库主机的客户端机器连接和使用Oracle数据库。这种情况要么是通过C/S应用程序的客户端...</summary><published>2010-04-12T14:20:00Z</published><updated>2010-04-12T14:20:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1710602.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1710602.html"/><content type="html">&lt;div &gt;&lt;span &gt;&lt;/span&gt;&#xD;
&lt;h2  id="t_5f30147a0100em8y"&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;span &gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;&lt;strong&gt;一、使用OracleClient组件连接Oracle&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; .Net框架的System.Data.OracleClient.dll组件（ADO.Net组件），为连接和使用Oracle数据库提供了很大的方便。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 1、使用客户端网络服务名连接Oracle&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 基于业务逻辑与数据库实体的分层需要，一般要求在不同于Oracle数据库主机的客户端机器连接和使用Oracle数据库。这种情况要么是通过C/S应用程序的客户端访问数据库的情况；要么是在B/S应用程序中，在WEB服务器端远程连接Oracle数据库服务器。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 通过客户端网络服务名远程连接Oracle，要求在客户端机器中安装Oracle客户端工具（安装类型可以不必选择&amp;#8220;管理员&amp;#8221;模式，而只需要安装运行时支持即可，为应用程序提供基本的网络服务配置工具等）。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 建立连接的语句比较简单，关键点为data source的设置。这里的data source不像SqlServer连接字串中指的是数据库名称，而是指客户端网络服务名（相关内容请参考前面有关客户端安装的文章）。对于本文的Oracle安装来说，data source对应着E:\Oracle_Client\oracle\ora92\network\admin\tnsnames.ora配置文件中的网络服务名（出于方便试验的原因，数据库与独立的客户端工具分别安装在了同一台机器的不同目录）。在具体实施连接时，将根据data source的值去该客户网络服务配置文件中查找对应项，以获取数据库服务器主机地址、端口、全局数据库名等连接信息。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 建立连接的主要代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; using System.Data.OracleClient;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //这里的&amp;#8220;remotedb&amp;#8221;对应于&amp;#8220;Oracle客户端的安装与远程连接配置&amp;#8221;一文中配置的客户端网络服务名&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OracleConnection conn=&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; new OracleConnection("data source=remotedb;User Id=scott;Password=scott;");&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; conn.Open();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 2、本地连接和使用Oracle&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 本地使用Oracle是指在安装Oracle数据库的主机中连接和使用Oracle数据库。从安全性和负载均衡的角度考虑，这种方式是不可取的。这里仅作为实验使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 本地连接的代码与远程连接实际上没有什么分别，只不过其data source指向服务器端的客户网络服务名。对于本文的数据库安装，它指向E:\Oracle_Server\oracle\ora92\network\admin\tnsnames.ora文件中所定义的网络服务名（有关内容请参考&amp;#8220;Oracle客户端的安装与远程连接配置&amp;#8221;一文）。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 对于这种本地连接方式，在服务器端不能存在独立安装的客户端工具，否则data source只会去匹配独立客户端的tnsnames.ora文件，即使找不到对应的网络服务名，也不会再去匹配服务器端的服务名。这不知是.Net组件的设计错误，还是故意为之，以鼓励远程连接和使用Oracle。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;二、使用OleDB组件连接和访问Oracle数据库&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OleDB组件是通过Oracle OleDB驱动程序（OraOLEDB.dll）连接和访问Oracle数据库，使用OleDB驱动的前提也是要在客户端安装运行时环境。可以采用自定义的客户端安装方式，安装包括OraOLEDB.dll等在内的必须的文件，可以不必安装包括配置客户网络服务等的客户端工具。在这种情况下，OleDB的连接字串及简单访问数据库的代码如下所示：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; using System.Data.OleDb;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //这里的Data&amp;nbsp;&lt;wbr&gt;Source直接被赋值为类似tnsnames.ora文件中网络服务名定义的内容，不再需要客户端&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //的配置文件tnsnames.ora(OracleClient也可以这样处理）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OleDbConnection conn=&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; new OleDbConnection("Provider=OraOLEDB.Oracle.1;Server=localhost;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Data&amp;nbsp;&lt;wbr&gt; Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; (HOST = localhost)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = mydb.bawei)));&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; User ID=scott;Password=scott;");&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; conn.Open();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OleDbCommand comm=new OleDbCommand("select * from scott.emp",conn);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OleDbDataReader dr=comm.ExecuteReader();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Console.WriteLine("姓名&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 职位");&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; while(dr.Read())&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Console.WriteLine(dr.GetString(1)+"&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; "+dr.GetString(2));&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;}&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Console.ReadLine();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; dr.Close();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; conn.Close();&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 使用OleDB组件可以获得比OracleClient更高的效率和性能，因为OleDB是比ADO.NET更底层的组件，ADO.NET也要通过OleDB获取数据。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;三、一个使用Oracle存储过程的简单登录验证程序&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 1、创建用户表&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 作为实验用表，用户表admin仅包含用户名和密码两个字段。创建表的SQL语句如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; CREATE TABLE SCOTT.ADMIN ("NAME" VARCHAR2(20) NOT NULL,&amp;nbsp;&lt;wbr&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; "PASSWORD" VARCHAR2(20) NOT NULL)&amp;nbsp;&lt;wbr&gt;TABLESPACE "EXAMPLE"&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 2、创建验证用户登录的存储过程&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; CREATE OR REPLACE&amp;nbsp;&lt;wbr&gt; PROCEDURE "SCOTT"."P_LOGIN" (v_Name varchar2,&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; v_Password varchar2,b_Passed out char) as&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; n_Count number;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; begin&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; select count(*) into n_Count from admin where name=v_Name and password=v_Password;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; if n_Count &amp;gt; 0 then&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; b_Passed:='1';&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; else&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; b_Passed:='0';&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; end if;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; end;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 3、在Sql Plus等sql工具中使用PL/SQL测试存储过程是否可用：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; set serveroutput on;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; declare&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; v_Name varchar2(20);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; v_password varchar(20);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;b_Passed char(1);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; begin&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; v_Name:='mxh';&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; v_Password:='mxh';&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; p_Login(v_Name,v_Password,b_Passed);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; if b_Passed ='1' then&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; DBMS_OUTPUT.PUT_LINE('SUCCESS');&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; end if;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 4、创建一个登录窗口，实验C#对存储过程的调用：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; （1）编写数据访问类，用于访问和操作数据库：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //DataAccess.cs&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; using System;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; using System.Data;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; using System.Data.OracleClient;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; namespace OraLoginProcedure&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;public class DataAccess&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private string connStr="data source=yourdb;User Id=scott;Password=scott;";&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private OracleConnection conn=null;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public DataAccess()&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public DataAccess(string strConnection)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; this.connStr=strConnection;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public OracleConnection getConnection()&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; try&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; if(conn==null)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; conn=new OracleConnection(connStr);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; if(conn.State==ConnectionState.Open)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; conn.Open();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;return conn;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; catch(OracleException e)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; throw e;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;}&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public void closeConnection()&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;if(conn.State==ConnectionState.Open)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; conn.Close();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //执行存储过程&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public void RunProcedure(string storedProcName,OracleParameter[] parameters)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OracleCommand cmd=new OracleCommand(storedProcName,getConnection());&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; cmd.CommandType=CommandType.StoredProcedure;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; foreach(OracleParameter parameter in parameters)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; cmd.Parameters.Add(parameter);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; cmd.ExecuteNonQuery();//执行存储过程&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; closeConnection();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //执行登录验证（在实际应用中应该把这种执行业务逻辑的代码与数据操作基础代码分离，以&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //实现软件的清晰分层、增强代码的可复用性）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public bool Login(string username,string password)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; OracleParameter[] parameters={&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; new OracleParameter("v_Name",OracleType.VarChar,20),&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; new OracleParameter("v_Password",OracleType.VarChar,20),&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; new OracleParameter("b_Passed",OracleType.Char,1)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;};&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; parameters[0].Value=username;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; parameters[1].Value=password;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; parameters[0].Direction=ParameterDirection.Input;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; parameters[1].Direction=ParameterDirection.Input;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;parameters[2].Direction=ParameterDirection.Output;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; try&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; RunProcedure("P_LOGIN",parameters);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; if(parameters[2].Value.ToString() == "1")&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; return true;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; else&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; return false;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;}&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; catch(Exception e)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; throw e;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;}&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; （2）编写登录验证的界面程序：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; 登录界面比较简单，也未考虑对输入数据的合法性验证。界面如下图所示：&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;wbr&gt;&lt;a href="http://photo.blog.sina.com.cn/showpic.html#blogid=5f30147a0100em8y&amp;amp;url=http://static15.photo.sina.com.cn/orignal/5f30147at71617a04774e&amp;amp;690" target="_blank"&gt;&lt;img title="C#连接Oracle数据库的简单应用" style="max-width: 500px" alt="C#连接Oracle数据库的简单应用" src="http://static15.photo.sina.com.cn/bmiddle/5f30147at71617a04774e&amp;amp;690" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; //Form1.cs&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; using System.Data;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; namespace OraLoginProcedure&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public class Login : System.Windows.Forms.Form&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private System.Windows.Forms.Button button1;//登录按钮&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private System.Windows.Forms.TextBox textBox1;//用户名输入框&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private System.Windows.Forms.TextBox textBox2;//密码输入框&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private System.Windows.Forms.Label label1;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private System.Windows.Forms.Label label2;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; public Login()&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; InitializeComponent();&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; &amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;}&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; ......&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; /// 应用程序的主入口点。&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; [STAThread]&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; static void Main()&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Application.Run(new Login());&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; private void button1_Click(object sender, System.EventArgs e)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; try&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;{&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; string username=textBox1.Text.Trim();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; string password=textBox2.Text.Trim();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; this.Close();//关闭界面后就读不到其中的控件输入了&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;DataAccess da=new DataAccess();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; if(da.Login(username,password))&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; MessageBox.Show("Hello "+username);&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; else&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; MessageBox.Show("Login failed");&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Application.Exit();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; catch(Exception ex)&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; {&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; this.Close();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; MessageBox.Show(ex.ToString());&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; Application.Exit();&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt;&amp;nbsp;&lt;wbr&gt; }&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1710602.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1710602.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yxbsmx/articles/1710298.html</id><title type="text">TStringList 常用方法与属性&amp;amp;DelimitedText空格问题</title><summary type="text">TStringList 常用方法与属性&amp;amp;DelimitedText空格问题//TStringList 常用方法与属性:varList: TStringList;i: Integer;beginList := TStringList.Create;List.Add('Strings1'); {添加}List.Add('Strings2');List.Exchange(0,1); {置换}Li...</summary><published>2010-04-12T07:51:00Z</published><updated>2010-04-12T07:51:00Z</updated><author><name>yxbsmx</name><uri>http://www.cnblogs.com/yxbsmx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yxbsmx/articles/1710298.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yxbsmx/articles/1710298.html"/><content type="html">&lt;p&gt;TStringList 常用方法与属性&amp;amp;DelimitedText空格问题&lt;br /&gt;//TStringList 常用方法与属性:&lt;br /&gt;var&lt;br /&gt;List: TStringList;&lt;br /&gt;i: Integer;&lt;br /&gt;begin&lt;br /&gt;List := TStringList.Create;&lt;br /&gt;List.Add('Strings1');&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {添加}&lt;br /&gt;List.Add('Strings2');&lt;br /&gt;List.Exchange(0,1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {置换}&lt;br /&gt;List.Insert(0,'Strings3');&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {插入}&lt;br /&gt;i := List.IndexOf('Strings1'); {第一次出现的位置}&lt;br /&gt;List.Sort;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {排序}&lt;br /&gt;List.Sorted := True;&amp;nbsp;&amp;nbsp; {指定排序}&lt;br /&gt;List.Count;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {总数}&lt;br /&gt;List.Text;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {文本集合}&lt;br /&gt;List.Delete(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {删除, 0是第一个数据}&lt;br /&gt;List.LoadFromFile('c:\tmp.txt');{打开}&lt;br /&gt;List.SaveToFile('c:\tmp.txt'); {保存}&lt;br /&gt;List.Clear;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {清空}&lt;br /&gt;List.Free;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {释放}&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;//读入字符串&lt;br /&gt;var&lt;br /&gt;List: TStringList;&lt;br /&gt;begin&lt;br /&gt;List := TStringList.Create;&lt;br /&gt;List.CommaText := 'aaa,bbb,ccc,ddd';&lt;br /&gt;//相当于: List.Text := 'aaa' + #13#10 + 'bbb' + #13#10' + 'ccc' + '#13#10' + 'ddd';&lt;/p&gt;&#xD;
&lt;p&gt;ShowMessage(IntToStr(List.Count)); //4&lt;br /&gt;ShowMessage(List[0]); //aaa&lt;/p&gt;&#xD;
&lt;p&gt;List.Free;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;//置换分隔符&lt;br /&gt;var&lt;br /&gt;List: TStringList;&lt;br /&gt;begin&lt;br /&gt;List := TStringList.Create;&lt;br /&gt;List.Delimiter := '|';&lt;br /&gt;List.DelimitedText := 'aaa|bbb|ccc|ddd';&lt;/p&gt;&#xD;
&lt;p&gt;ShowMessage(IntToStr(List.Count)); //4&lt;br /&gt;ShowMessage(List[0]); //aaa&lt;/p&gt;&#xD;
&lt;p&gt;List.Free;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;//类似的哈希表操作法&lt;br /&gt;var&lt;br /&gt;List: TStringList;&lt;br /&gt;begin&lt;br /&gt;List := TStringList.Create;&lt;/p&gt;&#xD;
&lt;p&gt;List.Add('aaa=111');&lt;br /&gt;List.Add('bbb=222');&lt;br /&gt;List.Add('ccc=333');&lt;br /&gt;List.Add('ddd=444');&lt;/p&gt;&#xD;
&lt;p&gt;ShowMessage(List.Names[1]); //bbb&lt;br /&gt;ShowMessage(List.ValueFromIndex[1]); //222&lt;br /&gt;ShowMessage(List.Values['bbb']); //222&lt;/p&gt;&#xD;
&lt;p&gt;//ValueFromIndex 可以赋值:&lt;br /&gt;List.ValueFromIndex[1] := '2';&lt;br /&gt;ShowMessage(List[1]); //bbb=2&lt;/p&gt;&#xD;
&lt;p&gt;//可以通过 Values 赋值:&lt;br /&gt;List.Values['bbb'] := '22';&lt;br /&gt;ShowMessage(List[1]); //bbb=22&lt;/p&gt;&#xD;
&lt;p&gt;List.Free;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;//避免重复值&lt;br /&gt;var&lt;br /&gt;List: TStringList;&lt;br /&gt;begin&lt;br /&gt;List := TStringList.Create;&lt;/p&gt;&#xD;
&lt;p&gt;List.Add('aaa');&lt;/p&gt;&#xD;
&lt;p&gt;List.Sorted := True; //需要先指定排序&lt;br /&gt;List.Duplicates := dupIgnore; //如有重复值则放弃&lt;/p&gt;&#xD;
&lt;p&gt;List.Add('aaa');&lt;/p&gt;&#xD;
&lt;p&gt;ShowMessage(List.Text); //aaa&lt;/p&gt;&#xD;
&lt;p&gt;//Duplicates 有3个可选值:&lt;br /&gt;//dupIgnore: 放弃;&lt;br /&gt;//dupAccept: 结束;&lt;br /&gt;//dupError: 提示错误.&lt;/p&gt;&#xD;
&lt;p&gt;List.Free;&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;//排序与倒排序&lt;br /&gt;{排序函数}&lt;br /&gt;function DescCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;&lt;br /&gt;begin&lt;br /&gt;Result := -AnsiCompareText(List[Index1], List[Index2]);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;List: TStringList;&lt;br /&gt;begin&lt;br /&gt;List := TStringList.Create;&lt;/p&gt;&#xD;
&lt;p&gt;List.Add('bbb');&lt;br /&gt;List.Add('ccc');&lt;br /&gt;List.Add('aaa');&lt;/p&gt;&#xD;
&lt;p&gt;//未排序&lt;br /&gt;ShowMessage(List.Text); //bbb ccc aaa&lt;/p&gt;&#xD;
&lt;p&gt;//排序&lt;br /&gt;List.Sort;&lt;br /&gt;ShowMessage(List.Text); //aaa bbb ccc&lt;/p&gt;&#xD;
&lt;p&gt;//倒排序&lt;br /&gt;List.CustomSort(DescCompareStrings); //调用排序函数&lt;br /&gt;ShowMessage(List.Text); //ccc bbb aaa&lt;/p&gt;&#xD;
&lt;p&gt;//假如:&lt;br /&gt;List.Sorted := True;&lt;br /&gt;List.Add('999');&lt;br /&gt;List.Add('000');&lt;br /&gt;List.Add('zzz');&lt;br /&gt;ShowMessage(List.Text); //000 999 aaa bbb ccc zzz&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;DelimitedText空格&lt;/p&gt;&#xD;
&lt;p&gt;DelimitedText 空格也默认为分割符的原因很简单: &lt;br /&gt;Borland的程序员把这个属性对应的write方法中的一行代码多加了一个空格。&lt;/p&gt;&#xD;
&lt;p&gt;2种方法解决这个问题。&lt;/p&gt;&#xD;
&lt;p&gt;空格问题的解决方法之一:&lt;br /&gt;先StringReplace用一个特殊字符替代空格，然后StringReplace回来&lt;br /&gt;ss:='aa|bb c| c';&lt;br /&gt;ss:= StringReplace(ss,' ','#',[rfReplaceAll]);&lt;br /&gt;s:= TStringList.Create;&lt;br /&gt;s.Delimiter:= '|';&lt;br /&gt;s.DelimitedText:= ss;&lt;br /&gt;for i:= 0 to s.Count - 1 do&lt;br /&gt;begin&lt;br /&gt;s[i]:= StringReplace(s[i],'#',' ',[rfReplaceAll]);&lt;br /&gt;memo1.Lines.Add(s[i]);&lt;br /&gt;end;&lt;/p&gt;&#xD;
&lt;p&gt;空格问题的解决方法之二:&lt;/p&gt;&#xD;
&lt;p&gt;找到 {DelphiInstDir}\source\Win32\rtl\common\Classes.pas 文件，知道SetDelimitedText函数。如下所示：&lt;/p&gt;&#xD;
&lt;p&gt;注：{DelphiInstDir}为Delphi安装目录&lt;/p&gt;&#xD;
&lt;p&gt;procedure TStrings.SetDelimitedText(const Value: string); &lt;br /&gt;var &lt;br /&gt;P, P1: PChar; &lt;br /&gt;S: string; &lt;br /&gt;begin &lt;br /&gt;BeginUpdate; &lt;br /&gt;try &lt;br /&gt;Clear; &lt;br /&gt;P := PChar(Value); &lt;br /&gt;while P^ in [#1..' '] do &lt;br /&gt;{$IFDEF MSWINDOWS} &lt;br /&gt;P := CharNext(P); &lt;br /&gt;{$ELSE} &lt;br /&gt;Inc(P); &lt;br /&gt;{$ENDIF} &lt;br /&gt;while P^ &amp;lt;&amp;gt; #0 do &lt;br /&gt;begin &lt;br /&gt;if P^ = QuoteChar then &lt;br /&gt;S := AnsiExtractQuotedStr(P, QuoteChar) &lt;br /&gt;else &lt;br /&gt;begin &lt;br /&gt;P1 := P; &lt;br /&gt;// while (P^ &amp;gt; ' ') and (P^ &amp;lt;&amp;gt; Delimiter) do //源代码&lt;br /&gt;while (P^ &amp;gt; '') and (P^ &amp;lt;&amp;gt; Delimiter) do&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //修改后的代码&lt;/p&gt;&#xD;
&lt;p&gt;为方便携带，可将Classes.pas 文件重新编译到你的工程文件中即可。步骤：工程-添加到工程-Classes.pas&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/xiaguamanshu/archive/2010/04/11/5472695.aspx&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yxbsmx/aggbug/1710298.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yxbsmx/articles/1710298.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
