C#读取数据库.docx

上传人:b****5 文档编号:7553373 上传时间:2023-01-24 格式:DOCX 页数:12 大小:22.69KB
下载 相关 举报
C#读取数据库.docx_第1页
第1页 / 共12页
C#读取数据库.docx_第2页
第2页 / 共12页
C#读取数据库.docx_第3页
第3页 / 共12页
C#读取数据库.docx_第4页
第4页 / 共12页
C#读取数据库.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C#读取数据库.docx

《C#读取数据库.docx》由会员分享,可在线阅读,更多相关《C#读取数据库.docx(12页珍藏版)》请在冰豆网上搜索。

C#读取数据库.docx

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应用程序。

在新建项目对话框中,找到名称和位置文本框。

注意,名称

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1