C#读取数据库

上传人:ya****h 文档编号:117408389 上传时间:2022-07-08 格式:DOCX 页数:9 大小:27.16KB
收藏 版权申诉 举报 下载
C#读取数据库_第1页
第1页 / 共9页
C#读取数据库_第2页
第2页 / 共9页
C#读取数据库_第3页
第3页 / 共9页
资源描述:

《C#读取数据库》由会员分享,可在线阅读,更多相关《C#读取数据库(9页珍藏版)》请在装配图网上搜索。

1、本文给大家介绍6种使用C#读取数据库所有表名称的方法。如果你需要这方面的操作,请看一下本文的介绍。第1、sqldmoSQLDMO是操作SQLServer的理想的方式,如果您的数据库是SQLServer就可以考虑使用这种方式。在C#中使用SQLDMO需要添加SQLDMO的引用,然后在当前的文件中usingSQLDMO;即可以使用SQLDMO。SQLDMO的对象模型大家可以在SQLServer的帮助中获得。privatevoidGetTabels_DMO(stringstrServerName,stringstrUser,stringstrPWD,stringstrDatabase)SQLDMO.

2、SQLServerServer=newSQLDMO.SQLServerClass();/连接到服务器Server.Connect(strServerName,strUser,strPWD);/对所有的数据库遍历,获得指定数据库for(inti=0;iServer.Databases.Count;i+)/判断当前数据库是否是指定数据库if(Server.Databases.Item(i+1,dbo).Name=strDatabase)/获得指定数据库SQLDMO._Databasedb=Server.Databases.Item(i+1,dbo);/获得指定数据库中的所有表for(intj=0;

3、jdb.Tables.Count;j+)MessageBox.Show(db.Tables.Item(j+1,dbo).Name);第2、adoxadox是adoExtensionsforDDLandSecurity,是微软对ADO技术的扩展,使用它我们可以操作数据库的结构。它是一个COM组件,估计以后在ADO.NET中会增加ADOX的一些功能。如果大家需要ADOX的一些资料,我可以提供。下面的一个例子就是使用ADOX来获得当前数据库的所有表。privatevoidGetTables_ADOX()/ADO的数据库连接ADODB.ConnectionClasscn=newADODB.Connec

4、tionClass();stringConnectionString=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;InitialCatalog=Test;DataSource=HBXP;cn.Open(ConnectionString,sa,0);操作ADOX的Catalog对象CatalogClasscat=newCatalogClass();cat.ActiveConnection=cn;for(inti=0;icat.Tables.Count;i+)MessageBox.Show(cat.Tablesi.Name);注意:在上面的代码中cat.

5、ActiveConnection不能是ADO.Net中的Connection,而应该是ADO的Connection。第3、中的oledbconnection在c#中我们首先会考虑使用来解决问题,如果没有方法才会考虑使用adox或者sqldmo来解决这个问题。虽然adox和sqldmo也能够解决这个问题,但是他们毕竟是com组件,在.net中使用起来和在非.net平台会有一些差异,不是很顺手。下面的示例就显示了在中的oledbconnection的方法getoledbschematable来获得数据库的架构。大家可以在msdn中看到这个方法的说明:publicDataTableGetOleDbS

6、chemaTable(Guidschema,objectrestrictions);参数schemaOleDbSchemaGuid的值之一,它指定要返回的架构表。restrictions限制值的Object数组。这些值按照限制列的顺序来应用。即,第一个限制值应用于第一个限制列,第二个限制值应用于第二个限制列,依此类推。返回值包含请求的架构信息的DataTable。更多的信息大家可以查询MSDN,下面将示例如何实现。privatevoidGetTables_ADONET()/处理OleDbConnectionstringstrConnectionString=IntegratedSecurity

7、=SSPI;DataSource=HBXP;InitialCatalog=Test;Provider=SQLOLEDB.1;OleDbConnectioncn=newOleDbConnection(strConnectionString);cn.Open();利用OleDbConnection的GetOleDbSchemaTable来获得数据库的结构DataTabledt=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newobjectnull,null,null,TABLE);foreach(DataRowdrindt.Rows)MessageB

8、ox.Show(String)drTABLE_NAME);文章来自学IT网:信息架构视图是sql-92标准中定义的架构视图,这些视图独立于系统表。信息架构视图的最大优点是,即使我们对系统表进行了重要的修改,应用程序也可以正常地使用这些视图进行访问。下面的示例使用信息架构视图来工作。privatevoidGetTables_INFORMATION_SCHEMA()/打开连接stringstrConnectionString=System.Configuration.ConfigurationSettings.AppSettingsConnectionString;sqlcn=newSqlConn

9、ection(strConnectionString);sqlcn.Open();/使用信息架构视图SqlCommandsqlcmd=newSqlCommand(SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHERETABLE_TYPE=BASETABLE,sqlcn);SqlDataReaderdr=sqlcmd.ExecuteReader();while(dr.Read()MessageBox.Show(dr.GetString(0);第5、使用系统表如果您的数据库系统是sqlserver,就可以使用如下的方式来获得当前数据库的所有表:priv

10、atevoidGetTables_SystemTable()/打开连接stringstrConnectionString=System.Configuration.ConfigurationSettings.AppSettingsConnectionString;sqlcn=newSqlConnection(strConnectionString);sqlcn.Open();/使用信息架构视图SqlCommandsqlcmd=newSqlCommand(SELECTOBJECT_NAME(id)FROMsysobjectsWHERExtype=UANDOBJECTPROPERTY(id,IsM

11、SShipped)=0,sqlcn);SqlDataReaderdr=sqlcmd.ExecuteReader();while(dr.Read()MessageBox.Show(dr.GetString(0);第6、使用sqlserver的存储过程“sp_tables”下面是“盛国军”朋友提出的使用存储过程的方法的补充代码。publicvoidGetTables_StoredProcedure()/处理OleDbConnectionstringstrConnectionString=IntegratedSecurity=SSPI;DataSource=HBXP;InitialCatalog=T

12、est;Provider=SQLOLEDB.1;OleDbConnectioncn=newOleDbConnection(strConnectionString);cn.Open();/执行存储过程OleDbCommandcmd=newOleDbCommand(sp_tables,cn);cmd.CommandType=CommandType.StoredProcedure;OleDbDataReaderdr=cmd.ExecuteReader();while(dr.Read()MessageBox.Show(drTABLE_NAME.ToString();文章来自学IT网:给你一个方法,自己

13、去扩展:privatevoidEventCellChanged(intcolumn,introw)/自己想要的行与列数目this.tableLayoutPanel1.Controls.Clear();/rowsettings;this.tableLayoutPanel1.RowCount=row;this.tableLayoutPanel1.RowStyles.Clear();for(inti=0;irow;i+)this.tableLayoutPanel1.RowStyles.Add(newRowStyle(SizeType.Percent,100/row);/columnsettings;

14、this.tableLayoutPanel1.ColumnCount=column;this.tableLayoutPanel1.ColumnStyles.Clear();for(inti=0;icolumn;i+)this.tableLayoutPanel1.ColumnStyles.Add(newColumnStyle(SizeType.Percent,100/column);for(inti=0;icolumn;i+)for(intj=0;jrow;j+)label=newLabel();label.Text=/这里设置你需要显示的字符串;label.TextAlign=ContentA

15、lignment.MiddleCenter;label.Anchor=(AnchorStyles)(AnchorStyles.Left|AnchorStyles.Right);label.AutoSize=true;label.TextAlign=ContentAlignment.MiddleCenter;tableLayoutPanel1.Controls.Add(label,i,j);Excel表格是微软公司Office套件中专门用作电子表格处理的软件,在实际的办公中,Excel表格的用途是非常广的,由此许多办公人员喜欢以Excel表格的形式来存取数据。这就要求程序设计人员要掌握把已经得到

16、数据集,转换成Excel表格中。那么作为.Net程序开发语言中的一个重要组成部分的C#是如何来实现这个过程的转换的,本文就来探讨一下这个问题。_、COM组件的转换:虽然C#可以利用.Net框架中的类库.NetFrameWorkSDK,这个内容丰富,功能强大的类库来实现很多功能。其实对于C#来说,还有一个重要的资源,那就是已经拥有的COM组件,最大可能使用这些COM组件,往往会得到问题解决的最佳路径。说到这里,可能有读者会问,编译C#所使用到的类库,都是受管代码(ManagedCode),而COM是非受管代码(UnmanagedCode)的文件,这些COM组件难道可以被C#直接使用么?这个问题问

17、的非常好,其实这也是C#中使用COM组件的关键问题。就如问题中所讲的,编译C#文件的时候,所使用的类库必须是受管代码(ManagedCode)文件,所以要使用是非受管代码(UnmanagedCode)的文件的COM组件,必须实现从非受管代码文件到受管代码文件的转换。在.NetFrameWrokSDK中就专门为这种转换提供了一个工具“tlbimp.exe”。如果你安装.NetFrameWorkSDK在“C”盘,那么你会在目录“C:ProgramFilesMicrosoft.NETFrameworkSDKBin中发现他。同样我们知道Excel对象的COM组件名称为“EXCEL9.OLB”,如果你在

18、“C”盘安装了Office套件,你可以在目录“C:ProgramFilesMicrosoftOfficeOffice中发现这个文件。在找到了上述的二个文件后,把这二个文件都拷贝到C盘的根目录下面后,只需要运行下列简单的命令就可以实现对此COM组件的转换了,具体的命令如下:tlbimp.exeExcel9.olb运行完此命令后,就可以在C盘的根目录下面发现多出来三个DLL文件,分别是“excel.dll”、“vbide.dll”和“office.dll”。这就是由此COM组件转换而成的类库文件。在编译下面介绍的程序的时候,将会用到此三个文件。二、本文中介绍的程序设计及运行环境(1) .微软视窗2

19、000服务器版(2) .NetFrameworkSDKBeta2以上版本(3) .MicrosoftDataAccessComponent2.6以上版本(MDAC2.6)(4) .Office2000套件三、本文介绍的数据库的数据字典:在下面程序中,采用的数据库类型是SQLServer7.0。数据库服务器选用的是本地服务器,数据库名称为“temp”,数据表名称为“tableOl”,数据字典如下:字段名称字段类型字段长度姓名varchar10性别varchar10工作单位varchar50四、C#实现从数据集到Excel表格的转变的主要步骤和实现方法:(1) 连接数据库,得到数据集:实现这个过程

20、相对比较简单,利用下面这些代码就可以实现对数据库的连接和得到自己的数据集,在下面的代码中,都有相应的注释,具体如下:try/建立数据连接,此字符串的意思是打开Sqlserver数据库,服务器名称为本/地,数据库为tempstringstrCon=Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=temp;DataSource=Localhost;OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=SELE

21、CT*FROMtableO1;创建一个DataSet对象DataSetmyDataSet=newDataSet();OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);myCommand.Fill(myDataSet,tableO1);/关闭此OleDbConnectionmyConn.Close();catch(Exceptioney)MessageBox.Show(连接错误!+ey.ToString(),错误);DataTabletable=myDataSet.TablesO;/得到数据集(2) 创建一个空的Excel电

22、子表格文档这就要使用到由COM组件转换成的三个DLL文件了,在这些文件中定义了一个类“Excel.Application”,C#就是通过这个类来创建Excel电子表格文档的,下面是在C#中创建Excel表格的具体实现代码:Excel.Applicationexcel=newExcel.Application();excel.Application.Workbooks.Add(true);这样一个空的Excel表格就产生了。(3) 读取数据的字段名称,并在产生的Excel表格的第一行显示出来为了在电子表格中显示的更明了,所以在定义字段名称的时候采用了中文,在“excel”对象中有一个属性“Cel

23、ls”,此属性就是特指Excel表格中的每一个小的单元,你可以通过设定此属性的二个参数来访问创建的Excel表格中的每一个单元。下面就是实现此段功能的代码:intcolIndex=0;foreach(DataColumncolintable.Columns)colIndex+;excel.Cells1,colIndex=col.ColumnName;(4).实现数据集到Excel表格的转换以Excel表格来显示数据集中的数据,所运用的知识和(3)中的基本相同,下面是实现此功能的程序代码:introwIndex=1;foreach(DataRowrowintable.Rows)rowIndex+

24、;colIndex=0;foreach(DataColumncolintable.Columns)colIndex+;excel.CellsrowIndex,colIndex=rowcol.ColumnName.ToString();创建示例Excel工作表启动MicrosoftExcel,然后创建一个新的工作表。将以下信息添加到新工作表中以创建一个简单的Excel数据库:AB1 FirstNameLastName2 ScottBishop3 KatieJordan注意:虽然在本示例中数据是从单元格A1开始的,但是您可以将此数据添加到工作表中的任何相邻接的单元格。突出显示此数据所在的行和列。在

25、插入菜单上,指向名称,然后单击定义。在“当前工作簿中的名称”文本框中,键入myRange1,然后单击确定。在文件菜单上,单击保存。在“保存位置”列表中,选择Web服务器的根目录(通常为C:InetPubWwwroot)。在“文件名”文本框中,键入ExcelData.xls。单击确定。在文件菜单上,单击退出。返回页首使用VisualC#.NET创建ASP.NET示例此代码示例说明如何查询和显示Excel工作表中的信息。以下代码使用您在上一节中创建的工作表。打开MicrosoftVisualStudio.NET。此时将显示VisualStudio.NET集成开发环境(IDE)。在文件菜单上,指向新

26、建,然后单击项目。在新建项目对话框的项目类型下面,单击VisualC#项目。在模板下面,单击ASP.NETWeb应用程序。在新建项目对话框中,找到名称和位置文本框。注意,名称文本框不可用(它显示为灰色)。位置文本框包含以下文本(或类似的文本):http:/localhost/WebApplication1将位置文本框中的文本替换为http:/localhost/ExcelCSTest,然后单击确定。此时将创建一个新项目,其中包括一个名为WebForm1.aspx的Web窗体。在VisualStudio.NETIDE中,找到“解决方案资源管理器”窗口。如果找不到该窗口,请单击视图菜单上的解决方案

27、资源管理器。在解决方案资源管理器中,右键单击WebForm1.aspx,然后单击视图设计器以显示用于设计页面外观的设计器。可以使用该设计器,添加控件并处理页面的外观。查找工具箱。根据您的“IDE选项”设置,工具箱可能以窗口或按钮的形式出现(通常出现在IDE的左侧)。如果找不到工具箱,请单击视图菜单上的工具箱。如果工具箱以按钮的形式出现,将指针移动到该按钮上以显示工具箱的内容。当Web窗体的设计器视图处于活动状态时,工具箱被划分为几部分,其中包括Web窗体、组件、HTML和其他部分。单击Web窗体部分。在工具箱的Web窗体部分,单击DataGrid,然后将其拖到WebForml的设计器上。右键单

28、击WebForml.aspx,然后单击查看代码以显示代码隐藏页的源代码。将下面的语句添加到代码隐藏页顶部的命名空间部分之上:usingSystem.Data.OleDb;usingSystem.Data;突出显示以下代码,右键单击该代码,然后单击复制。在WebForm1.aspx.cs中,将这些代码复制到Page_Load事件中:/Createconnectionstringvariable.ModifytheDataSource/parameterasappropriateforyourenvironment.StringsConnectionString=Provider=Microsof

29、t.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(./ExcelData.xls)+;+ExtendedProperties=Excel8.0;/Createconnectionobjectbyusingtheprecedingconnectionstring.OleDbConnectionobjConn=newOleDbConnection(sConnectionString);/Openconnectionwiththedatabase.objConn.Open();/ThecodetofollowusesaSQLSELECTcommandtodisp

30、laythedatafromtheworksheet./CreatenewOleDbCommandtoreturndatafromworksheet.OleDbCommandobjCmdSelect=newOleDbCommand(SELECT*FROMmyRange1,objConn);/CreatenewOleDbDataAdapterthatisusedtobuildaDataSet/basedontheprecedingSQLSELECTstatement.OleDbDataAdapterobjAdapter1=newOleDbDataAdapter();/PasstheSelectc

31、ommandtotheadapter.objAdapter1.SelectCommand=objCmdSelect;/CreatenewDataSettoholdinformationfromtheworksheet.DataSetobjDataset1=newDataSet();/FilltheDataSetwiththeinformationfromtheworksheet.objAdapter1.Fill(objDataset1,XLData);/BinddatatoDataGridcontrol.DataGrid1.DataSource=objDataset1.Tables0.Defa

32、ultView;DataGrid1.DataBind();/Cleanupobjects.objConn.Close();在文件菜单中,单击全部保存来保存项目文件。在生成菜单上,单击生成以生成项目。这就准备好了代码隐藏页中的代码,使之能够执行了。在解决方案资源管理器中,右键单击WebForm1.aspx,然后单击在浏览器中查看以运行代码。返回页首其他代码说明本文中的示例代码使用MicrosoftJetOLEDB提供程序访问Excel工作表。此代码使用以下连接字符串连接到工作表:/Createconnectionstringvariable.ModifytheDataSource/paramet

33、erasappropriateforyourenvironment.StringsConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;+DataSource=+Server.MapPath(./ExcelData.xls)+;+ExtendedProperties=Excel8.0;正如注释中所描述的那样,必须修改特定Excel工作表的路径信息。此外,还必须设置ExtendedProperties参数的值,以便正确地连接到文件。注意,连接字符串使用Server.MapPath函数。此函数使用文件相对于MicrosoftInternet信息服务(I

34、IS)的路径,并返回该文件的硬盘路径。例如,在创建示例Excel工作表部分中,您在Web根目录中创建了ExcelData.xls,该目录通常位于C:InetpubWwwroot。这还会在Wwwroot文件夹中创建名为ExcelCSTest的子文件夹,并在ExcelCSTest文件夹中创建名为WebForm1.aspx的文件。在此示例中,硬盘上的文件路径如下:C驱动器-Inetpub-Wwwroot(其中包含ExcelData.xls)-ExcelCSTest(包含WebForm1.aspx)文件的IIS路径如下所示:Web根目录(其中包含ExcelData.xls)-ExcelCSTest(包含WebForm1.aspx)在本例中,WebForm1.aspx页到ExcelData.xls文件的相对路径为“./ExcelData.xls”。“./”字符通知IIS转到上一级文件夹。因此,代码Server.MapPath(./ExcelData.xls)返回以下字符串:C:InetpubWwwrootExcelData.xls您无需使用Server.MapPath。您也可以将此信息硬编码为一个特定的路径,或使用任何方法提供该Excel文件在硬盘上的位置。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!