C#读取数据库.docx
- 文档编号:7553373
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:12
- 大小:22.69KB
C#读取数据库.docx
《C#读取数据库.docx》由会员分享,可在线阅读,更多相关《C#读取数据库.docx(12页珍藏版)》请在冰豆网上搜索。
C#读取数据库
本文给大家介绍6种使用C#读取数据库所有表名称的方法。
如果你需要这方面的操作,请看一下本文的介绍。
第1、sqldmo
SQLDMO是操作SQLServer的理想的方式,如果您的数据库是SQLServer就可以考虑使用这种方式。
在C#中使用SQLDMO需要添加SQLDMO的引用,然后在当前的文件中usingSQLDMO;即可以使用SQLDMO。
SQLDMO的对象模型大家可以在SQLServer的帮助中获得。
privatevoidGetTabels_DMO(stringstrServerName,stringstrUser,stringstrPWD,stringstrDatabase)
{
SQLDMO.SQLServerServer=newSQLDMO.SQLServerClass();
//连接到服务器
Server.Connect(strServerName,strUser,strPWD);
//对所有的数据库遍历,获得指定数据库
for(inti=0;i { //判断当前数据库是否是指定数据库 if(Server.Databases.Item(i+1,"dbo").Name==strDatabase) { //获得指定数据库 SQLDMO._Databasedb=Server.Databases.Item(i+1,"dbo"); //获得指定数据库中的所有表 for(intj=0;j { MessageBox.Show(db.Tables.Item(j+1,"dbo").Name); } } } } 第2、adox adox是adoExtensionsforDDLandSecurity,是微软对ADO技术的扩展,使用它我们可以操作数据库的结构。 它是一个COM组件,估计以后在ADO.NET中会增加ADOX的一些功能。 如果大家需要ADOX的一些资料,我可以提供。 下面的一个例子就是使用ADOX来获得当前数据库的所有表。 privatevoidGetTables_ADOX() { //ADO的数据库连接 ADODB.ConnectionClasscn=newADODB.ConnectionClass(); 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;i { MessageBox.Show(cat.Tables[i].Name); } } 注意: 在上面的代码中cat.ActiveConnection不能是ADO.Net中的Connection,而应该是ADO的Connection。 第3、中的oledbconnection 在c#中我们首先会考虑使用来解决问题,如果没有方法才会考虑使用adox或者sqldmo来解决这个问题。 虽然adox和sqldmo也能够解决这个问题,但是他们毕竟是com组件,在.net中使用起来和在非.net平台会有一些差异,不是很顺手。 下面的示例就显示了在中的oledbconnection的方法getoledbschematable来获得数据库的架构。 大家可以在msdn中看到这个方法的说明: publicDataTableGetOleDbSchemaTable( Guidschema, object[]restrictions); 参数 schema OleDbSchemaGuid的值之一,它指定要返回的架构表。 restrictions 限制值的Object数组。 这些值按照限制列的顺序来应用。 即,第一个限制值应用于第一个限制列,第二个限制值应用于第二个限制列,依此类推。 返回值 包含请求的架构信息的DataTable。 更多的信息大家可以查询MSDN,下面将示例如何实现。 privatevoidGetTables_ADONET() { //处理OleDbConnection stringstrConnectionString=@"IntegratedSecurity=SSPI;DataSource=HBXP;InitialCatalog=Test;Provider=SQLOLEDB.1"; OleDbConnectioncn=newOleDbConnection(strConnectionString); cn.Open(); //利用OleDbConnection的GetOleDbSchemaTable来获得数据库的结构 DataTabledt=cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newobject[]{null,null,null,"TABLE"}); foreach(DataRowdrindt.Rows) { MessageBox.Show((String)dr["TABLE_NAME"]); } } 文章来自学IT网: 第4、信息架构视图 信息架构视图是sql-92标准中定义的架构视图,这些视图独立于系统表。 信息架构视图的最大优点是,即使我们对系统表进行了重要的修改,应用程序也可以正常地使用这些视图进行访问。 下面的示例使用信息架构视图来工作。 privatevoidGetTables_INFORMATION_SCHEMA() { //打开连接 stringstrConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; sqlcn=newSqlConnection(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,就可以使用如下的方式来获得当前数据库的所有表: privatevoidGetTables_SystemTable() { //打开连接 stringstrConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; sqlcn=newSqlConnection(strConnectionString); sqlcn.Open(); //使用信息架构视图 SqlCommandsqlcmd=newSqlCommand("SELECTOBJECT_NAME(id)FROMsysobjectsWHERExtype='U'ANDOBJECTPROPERTY(id,'IsMSShipped')=0",sqlcn); SqlDataReaderdr=sqlcmd.ExecuteReader(); while(dr.Read()) { MessageBox.Show(dr.GetString(0)); } } 第6、使用sqlserver的存储过程“sp_tables” 下面是“盛国军”朋友提出的使用存储过程的方法的补充代码。 publicvoidGetTables_StoredProcedure() { //处理OleDbConnection stringstrConnectionString=@"IntegratedSecurity=SSPI;DataSource=HBXP;InitialCatalog=Test;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(dr["TABLE_NAME"].ToString()); } } 文章来自学IT网: 给你一个方法,自己去扩展: privatevoidEventCellChanged(intcolumn,introw)//自己想要的行与列数目 { this.tableLayoutPanel1.Controls.Clear(); //rowsettings; this.tableLayoutPanel1.RowCount=row; this.tableLayoutPanel1.RowStyles.Clear(); for(inti=0;i { this.tableLayoutPanel1.RowStyles.Add(newRowStyle(SizeType.Percent,100/row)); } //columnsettings; this.tableLayoutPanel1.ColumnCount=column; this.tableLayoutPanel1.ColumnStyles.Clear(); for(inti=0;i { this.tableLayoutPanel1.ColumnStyles.Add(newColumnStyle(SizeType.Percent,100/column)); } for(inti=0;i { for(intj=0;j { label=newLabel(); label.Text=""//这里设置你需要显示的字符串; label.TextAlign=ContentAlignment.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表格的形式来存取数据。 这就要求程序设计人员要掌握把已经得到数据集,转换成Excel表格中。 那么作为.Net程序开发语言中的一个重要组成部分的C#是如何来实现这个过程的转换的,本文就来探讨一下这个问题。 一、COM组件的转换: 虽然C#可以利用.Net框架中的类库——.NetFrameWorkSDK,这个内容丰富,功能强大的类库来实现很多功能。 其实对于C#来说,还有一个重要的资源,那就是已经拥有的COM组件,最大可能使用这些COM组件,往往会得到问题解决的最佳路径。 说到这里,可能有读者会问,编译C#所使用到的类库,都是受管代码(ManagedCode),而COM是非受管代码(UnmanagedCode)的文件,这些COM组件难道可以被C#直接使用么? 这个问题问的非常好,其实这也是C#中使用COM组件的关键问题。 就如问题中所讲的,编译C#文件的时候,所使用的类库必须是受管代码(ManagedCode)文件,所以要使用是非受管代码(UnmanagedCode)的文件的COM组件,必须实现从非受管代码文件到受管代码文件的转换。 在.NetFrameWrokSDK中就专门为这种转换提供了一个工具“tlbimp.exe”。 如果你安装.NetFrameWorkSDK在“C”盘,那么你会在目录“C: \ProgramFiles\Microsoft.NET\FrameworkSDK\Bin”中发现他。 同样我们知道Excel对象的COM组件名称为“EXCEL9.OLB”,如果你在“C”盘安装了Office套件,你可以在目录“C: \ProgramFiles\MicrosoftOffice\Office”中发现这个文件。 在找到了上述的二个文件后,把这二个文件都拷贝到C盘的根目录下面后,只需要运行下列简单的命令就可以实现对此COM组件的转换了,具体的命令如下: tlbimp.exeExcel9.olb 运行完此命令后,就可以在C盘的根目录下面发现多出来三个DLL文件,分别是“excel.dll”、“vbide.dll”和“office.dll”。 这就是由此COM组件转换而成的类库文件。 在编译下面介绍的程序的时候,将会用到此三个文件。 二、本文中介绍的程序设计及运行环境 (1).微软视窗2000服务器版 (2)..NetFrameworkSDKBeta2以上版本 (3).MicrosoftDataAccessComponent2.6以上版本(MDAC2.6) (4).Office2000套件 三、本文介绍的数据库的数据字典: 在下面程序中,采用的数据库类型是SQLServer7.0。 数据库服务器选用的是本地服务器,数据库名称为“temp”,数据表名称为“table01”,数据字典如下: 字段名称 字段类型 字段长度 姓名 varchar 10 性别 varchar 10 工作单位 varchar 50 四、C#实现从数据集到Excel表格的转变的主要步骤和实现方法: (1)连接数据库,得到数据集: 实现这个过程相对比较简单,利用下面这些代码就可以实现对数据库的连接和得到自己的数据集,在下面的代码中,都有相应的注释,具体如下: try { //建立数据连接,此字符串的意思是打开Sqlserver数据库,服务器名称为本//地,数据库为temp stringstrCon="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=temp;DataSource=Localhost"; OleDbConnectionmyConn =newOleDbConnection(strCon); myConn.Open(); stringstrCom="SELECT*FROMtable01"; //创建一个DataSet对象 DataSetmyDataSet=newDataSet(); OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn); myCommand.Fill(myDataSet,"table01"); //关闭此OleDbConnection myConn.Close(); } catch(Exceptioney) { MessageBox.Show("连接错误! "+ey.ToString(),"错误"); } DataTabletable=myDataSet.Tables[0]; //得到数据集 (2)创建一个空的Excel电子表格文档 这就要使用到由COM组件转换成的三个DLL文件了,在这些文件中定义了一个类“Excel.Application”,C#就是通过这个类来创建Excel电子表格文档的,下面是在C#中创建Excel表格的具体实现代码: Excel.Applicationexcel=newExcel.Application(); excel.Application.Workbooks.Add(true); 这样一个空的Excel表格就产生了。 (3)读取数据的字段名称,并在产生的Excel表格的第一行显示出来 为了在电子表格中显示的更明了,所以在定义字段名称的时候采用了中文,在“excel”对象中有一个属性“Cells”,此属性就是特指Excel表格中的每一个小的单元,你可以通过设定此属性的二个参数来访问创建的Excel表格中的每一个单元。 下面就是实现此段功能的代码: intcolIndex=0; foreach(DataColumncolintable.Columns) { colIndex++; excel.Cells[1,colIndex]=col.ColumnName; } (4).实现数据集到Excel表格的转换 以Excel表格来显示数据集中的数据,所运用的知识和(3)中的基本相同,下面是实现此功能的程序代码: introwIndex=1; foreach(DataRowrowintable.Rows) { rowIndex++; colIndex=0; foreach(DataColumncolintable.Columns) { colIndex++; excel.Cells[rowIndex,colIndex]= row[col.ColumnName].ToString(); } } 创建示例Excel工作表 启动MicrosoftExcel,然后创建一个新的工作表。 将以下信息添加到新工作表中以创建一个简单的Excel数据库: AB 1FirstNameLastName 2ScottBishop 3KatieJordan 注意: 虽然在本示例中数据是从单元格A1开始的,但是您可以将此数据添加到工作表中的任何相邻接的单元格。 突出显示此数据所在的行和列。 在插入菜单上,指向名称,然后单击定义。 在“当前工作簿中的名称”文本框中,键入myRange1,然后单击确定。 在文件菜单上,单击保存。 在“保存位置”列表中,选择Web服务器的根目录(通常为C: \InetPub\Wwwroot\)。 在“文件名”文本框中,键入ExcelData.xls。 单击确定。 在文件菜单上,单击退出。 返回页首 使用VisualC#.NET创建ASP.NET示例 此代码示例说明如何查询和显示Excel工作表中的信息。 以下代码使用您在上一节中创建的工作表。 打开MicrosoftVisualStudio.NET。 此时将显示VisualStudio.NET集成开发环境(IDE)。 在文件菜单上,指向新建,然后单击项目。 在新建项目对话框的项目类型下面,单击VisualC#项目。 在模板下面,单击ASP.NETWeb应用程序。 在新建项目对话框中,找到名称和位置文本框。 注意,名称
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 读取 数据库