自己动手写一个业务实体生成器(2)

本文介绍了如何从SQL Server 2000和Access数据库中获取表及字段等元数据的方法。对于SQL Server 2000,可通过一条查询语句获取表名;而Access则需通过ADODB连接并使用OpenSchema方法来实现。
好了,这次我们说说从数据库获取一些元数据,是这样说的吧,^_^!我们先回想一下,以往我们写项目的时候,都是先设计好数据库,然后根据数据库的结构和数据进行编程了,那么既然要能根据数据库生产代码,那我们就必须知道数据库里面的表还有字段的相应类型等一些信息,恩,目前这个生成器只支持Access和MSSQL2000,所以就先说说这两个吧!
      sql2000的就用一句查询语句可以获取哦:
select [name] from sysobjects where xtype = 'U' and [name] <> 'sysdiagrams' order by [name]";看意思应该可以看明白吧,不多罗嗦了,这样我们就把对应数据库的表查询出来了,是不是简单呢,呵呵,就是这样啦。然后我们就要根据表获取对应表的字段的信息了。我们可以对表查询一条记录,以DataTable类型返回,它会映射到数据库的表,包括字段的信息,这样就可以获取了,记住实例化Command时要加上这句
 command.MissingSchemaAction = MissingSchemaAction.AddWithKey;
至于作用你可以查查msdn,会有所收获的!

现在比如我们要取主键,就可以这样写 DataColumn [] pk=dt.PrimaryKey;
pk[0]就是主键咯!^_^,具体大家可以多看看msdn,我想收获会更多哦!
Access就比较麻烦点:
 1   ADODB.ConnectionClass conn = new ADODB.ConnectionClass();
 2             conn.Provider = "Microsoft.Jet.OLEDB.4.0";
 3             string connStr = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + this.txtPath.Text;
 4             conn.Open(connStr.Substring(connStr.ToLower().IndexOf("data source"+ "data source".Length).Trim('='' '), nullnull0);
 5 
 6             ADODB.Recordset rsTables = conn.GetType().InvokeMember("OpenSchema", BindingFlags.InvokeMethod, null, conn, new object[] { ADODB.SchemaEnum.adSchemaTables }) as ADODB.Recordset;
 7             while (!rsTables.EOF)
 8             {
 9                 if (!(rsTables.Fields["TABLE_NAME"].Value as string).StartsWith("MSys"))
10                 {
11                     this.AccessTable.Items.Add(rsTables.Fields["TABLE_NAME"].Value.ToString());
12                     
13                 }
14                 rsTables.MoveNext();
15             }

要用到ADODB,添加引用先哦!上述代码是从Access中查询所有表的名称,添加到一个checkboxlist上!
其他大都相同,就不多说了!有问题欢迎提出来!(新手一起进步!)下次我们讲一些细节,过程中我们应该会讨论一些技巧,比如用模板生成还是拼凑字符串!

转载于:https://www.cnblogs.com/Ablog-sunny/archive/2007/10/17/927558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值