登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

015 我要设计一个编程助手,自动生成代码  

2012-02-09 21:58:15|  分类: 我的实验室 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
近期想写一个编程助手类的软件,希望用它来自动生成程序代码,为什么有这样的想法呢,这还得从自己每天的工作说起。做程序设计,总免不了写很多程序代码,写多了就会发现有很多工作是重复,一来工作重复,二来浪费了不必要的时间。其实我这个想法在几年前就出现。记得几年前做ASP代码设计时,找到一个软件叫ASP代码助手,可以自动生成一些重用的代码,减少了很多代码的书写工作,很是方便。虽然,有人说碰到代码重复时,可以写一些重用的DLL类来调用,但是,并不是所有代码都可以写成公用类的,而且写类本身也是一件麻烦的事情。

观察项目中的代码发现,一些变量的定义、赋值代码可以自动生成,另外,一些数据的操作,如添加、修改和删除等代码也可以用生成的方法实现。特别让我感兴趣,很希望实现的是对SQL语句的组合操作,我认为也应该可以实现,这似乎和数据表关系图设计类似,例如我们用过一些数据库设计软件,它们根据主从表的关系自动生成SQL查询语句,拖曳表之间的字段自动生成关联。但是,要实现数据表关系图功能对我现有水平来讲是很困难的,因此,我想到了一个折中办法,那就是通过DATATABLE来实现。

我希望先实现数据表关联代码的生成,于是,我简单做了一个例子,很快我就碰到了一些困难。

1.要连接数据库,数据库会分几种,我准备定义三种,oracle、sql server、access,因此针对不同的数据库我需要写三个数据库操作类

2.怎么得到数据库中所有的表、视图信息。
下面是实现的代码:

    Private Function GetSchemaTable(ByVal connection As Data.OleDb.OleDbConnection, ByVal Type As String)
        ' 获取数据表列表
        'Type 有:"TABLE,VIEW,ACCESS TABLE,SYSTEM TABLE",

        Type = Type.ToUpper

        Dim table_list As Data.DataTable
        table_list = connection.GetOleDbSchemaTable(Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Type})
        Return table_list
    End Function

3.怎么获得某个表的字段信息(如字段名、类型、大小和描述)
下面是实现的代码:

    Private Function GetSchemaTableColums(ByVal connection As Data.OleDb.OleDbConnection, ByVal tablename As String)
        Dim table_list As Data.DataTable
        table_list = connection.GetOleDbSchemaTable(Data.OleDb.OleDbSchemaGuid.Columns, New Object() {Nothing, Nothing, tablename, Nothing})

        Return table_list
    End Function

表中的字段名、类型和描述分别对应的名称是"Column_Name", "Data_Type", "Description"。
取的表的主键信息:table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null)
要注意的是类型获得是个数值,需要转换成对应英文描述或中文描述,因为我写了一个转换的函数。

Private Function gettypename(ByVal data_type As Integer) As String
        Dim data_typename As String = ""
        Select Case (data_type)
            Case 2
                data_typename = "Int"
            Case 3
                data_typename = "Int"
            Case 4
                data_typename = "Single"
            Case 5
                data_typename = "Double"
            Case 6
                data_typename = "Decimal"
            Case 7
                data_typename = "DateTime"
            Case 11
                data_typename = "Bool"
            Case 17
                data_typename = "Byte"
            Case 72
                data_typename = "String"
            Case 130
                data_typename = "String"
            Case 131
                data_typename = "Decimal"
            Case 128
                data_typename = "String"
            Case Else
                data_typename = "String"
        End Select
        Return data_typename
    End Function


4.另外,我碰到了对DATATABLE取其中部分列的问题,记得之前有看过类似的代码,但已经忘了。
参考:http://yinzhihua2008.blog.163.com/blog/static/794306720121995851705/
 
5.如何隐藏DataGridView中左边黑箭头的那列,而不隐藏其他列。
DataGridView1.RowHeadersVisible = false
 
6.如何全选一行
DataGridView1.SelectionMode = FullRowSelect
 
以上只是今天碰到的问题,明天还要继续。希望早点实现自己需要的功能。
  评论这张
 
阅读(853)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018