欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

定义和创建数据库的标记方法

终极管理员 知识笔记 85阅读

Author : Water Like Smoke 20070124 This method of establishing database is called marking method. Now the outline of building a database has been completed and a class project has been built. When generated, it is a Sql2005BuilderDemo.dll file. On the assembly tag of this project, the SQL 9 directory attribute of the assembly : ('SQL9Works'' (local)') defines two tables: SQL9Table ('base'' employee') _ PublicEumeployeesQ9int ('employeeID'). pan, IsIdentity:=True, IsPK:=True)_IDSql9nvarchar ('name, length:=50, isnullable 3360=false) _ namesql9bit ('gender, defaultorbinding3360=1) _ sexendenumsql9table ('

rgba(0, 0, 0, 1)">Base""部门")> _
Public Enum Depart
    
<Sql9int("部门ID", IsIdentity:=True, IsPK:=True)> _
    ID

    
<Sql9nvarchar("部门", length:=50, Isnullable:=False)> _
    Name

End Enum

建库示例代码:

Imports LzmTW
Imports LzmTW.Sql2005Builder
Imports System.Reflection

Public Class CreateSql9Works
    
Private gLoginInformation As New LzmTW.uSystem.uData.uSql.LoginInformation

    
Private Function CreateConnection() As SqlClient.SqlConnection
        
Return New SqlClient.SqlConnection(gLoginInformation.ConnectionStringBuilder.ConnectionString)
    
End Function

    
Private Function CreateCommand(ByVal sql As StringAs SqlClient.SqlCommand
        
Return New SqlClient.SqlCommand(sql, Me.CreateConnection)
    
End Function

    
Private Function GetCreateDatabaseString(ByVal catalog As DatabaseBuilder.SqlCatalogInfo) As String
        
Return catalog.StringCreateDatabaseOverrides
    
End Function

    
Private Function GetCreateTablesString(ByVal catalog As DatabaseBuilder.SqlCatalogInfo) As String
        
Return catalog.StringCreateTablesOverrides
    
End Function

    
Private Function CreateDatabase(ByVal catalog As DatabaseBuilder.SqlCatalogInfo) As Boolean
        
Me.gLoginInformation.Database = "master" '即Use master
        Using cm As SqlClient.SqlCommand = Me.CreateCommand(GetCreateDatabaseString(catalog))
            cm.Connection.Open()
            
Try
                Console.WriteLine(cm.CommandText)
                cm.ExecuteNonQuery()
            
Catch ex As Exception
                Console.WriteLine(ex.Message)
                
Return False
            
Finally
                cm.Connection.Close()
            
End Try
        
End Using

        Console.WriteLine()

        
Me.gLoginInformation.Database = catalog.CatalogName '即Use Sql9Works
        Using cm As SqlClient.SqlCommand = Me.CreateCommand(GetCreateTablesString(catalog))
            cm.Connection.Open()
            
Try
                Console.WriteLine(cm.CommandText)
                cm.ExecuteNonQuery()
            
Catch ex As Exception
                Console.WriteLine(ex.Message)
                
Return False
            
Finally
                cm.Connection.Close()
            
End Try
        
End Using

        
Return True
    
End Function

    
Private Function Sql9WorksCatalog() As DatabaseBuilder.SqlCatalogInfo
        
Dim ass As Reflection.Assembly = Reflection.Assembly.LoadFrom("Sql2005BuilderDemo.dll")
        
Dim info As New DatabaseBuilder.SqlDbaseInfo
        info.LoadFrom(ass)
        
Return info.Catalog
    
End Function

    
Public Function ReCreateDatabase() As Boolean
        
Return Me.CreateDatabase(Me.Sql9WorksCatalog)
    
End Function
End Class

调用:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
    
Dim demo As New CreateSql9Works
    demo.ReCreateDatabase()
End Sub

就可以生成数据库Sql9Works了.
Console出来的字串如下:

 

      USE master
      ;
      
IF  EXISTS
      (
      
SELECT *
      
FROM sys.databases
      
WHERE name = N'Sql9Works'
      )
      
DROP DATABASE Sql9Works
      ;
      
CREATE DATABASE Sql9Works
      ;
    


      
IF NOT EXISTS
      (
      
SELECT *
      
FROM sys.schemas
      
WHERE name = N'Base'
      )
      
EXEC sys.sp_executesql N'CREATE SCHEMA [Base] AUTHORIZATION [dbo]'
      ;
    

      
IF  EXISTS
      (
      
SELECT *
      
FROM sys.objects
      
WHERE object_id = OBJECT_ID(N'[Base].[职员]')
      
AND type in (N'U')
      )
      
DROP TABLE [Base].[职员]
      ;
      
CREATE TABLE [Base].[职员]
      (
      
[职员ID] [int] IDENTITY(1,1NOT NULL,
      
[姓名] [nvarchar] (50NOT NULL ,
      
[性别] [bit] 

      )
      ;
    

      
ALTER TABLE [Base].[职员]
      
ADD CONSTRAINT [PK_职员] PRIMARY KEY
      (
      职员ID

      )
      ;
    

      
IF NOT EXISTS
      (
      
SELECT *
      
FROM sys.schemas
      
WHERE name = N'Base'
      )
      
EXEC sys.sp_executesql N'CREATE SCHEMA [Base] AUTHORIZATION [dbo]'
      ;
    

      
IF  EXISTS
      (
      
SELECT *
      
FROM sys.objects
      
WHERE object_id = OBJECT_ID(N'[Base].[部门]')
      
AND type in (N'U')
      )
      
DROP TABLE [Base].[部门]
      ;
      
CREATE TABLE [Base].[部门]
      (
      
[部门ID] [int] IDENTITY(1,1NOT NULL,
      
[部门] [nvarchar] (50NOT NULL 

      )
      ;
    

      
ALTER TABLE [Base].[部门]
      
ADD CONSTRAINT [PK_部门] PRIMARY KEY
      (
      部门ID

      )
      ;

这样做好处是,数据库是由类(虽说是枚举)

 

<Sql9Table("Base""职员")> _
Public Enum Employee
    
<Sql9int("职员ID", IsIdentity:=True, IsPK:=True)> _
    ID

    
<Sql9nvarchar("姓名", length:=50, Isnullable:=False)> _
    Name

    
<Sql9bit("性别", DefaultOrBinding:=1)> _
    Sex

End Enum

定义的.它包含了表的基本信息(外键约束现在还没考虑).
据此可以生成实体类等等.

因为它信息丰富,甚至可以据此信息直接来读写数据库了.




取数据库Northwind信息,结果为:

<Assembly: AssemblySql9Catalog(Name:="Northwind",Server:=".\SQLExpress")>

<Sql9Table(Name:="Categories",Schema:="dbo")> _
Public Enum Categories
    
<Sql9int(Name:="CategoryID",IsPrimary:=True,IsNullable:=False,IsIdentity:=True)> _
    [CategoryID]

    
<Sql9nvarchar(Name:="CategoryName",IsNullable:=False,Length:=15)> _
    [CategoryName]

    
<Sql9ntext(Name:="Description")> _
    [Description]

    
<Sql9image(Name:="Picture")> _
    [Picture]

End Enum



<Sql9Table(Name:="CustomerCustomerDemo",Schema:="dbo")> _
Public Enum CustomerCustomerDemo
    
<Sql9nchar(Name:="CustomerID",IsPrimary:=True,IsNullable:=False,Length:=5)> _
    [CustomerID]

    
<Sql9nchar(Name:="CustomerTypeID",IsPrimary:=True,IsNullable:=False,Length:=10)> _
    [CustomerTypeID]

End Enum



<Sql9Table(Name:="CustomerDemographics",Schema:="dbo")> _
Public Enum CustomerDemographics
    
<Sql9nchar(Name:="CustomerTypeID",IsPrimary:=True,IsNullable:=False,Length:=10)> _
    [CustomerTypeID]

    
<Sql9ntext(Name:="CustomerDesc")> _
    [CustomerDesc]

End Enum



<Sql9Table(Name:="Customers",Schema:="dbo")> _
Public Enum Customers
    
<Sql9nchar(Name:="CustomerID",IsPrimary:=True,IsNullable:=False,Length:=5)> _
    [CustomerID]

    
<Sql9nvarchar(Name:="CompanyName",IsNullable:=False,Length:=40)> _
    [CompanyName]

    
<Sql9nvarchar(Name:="ContactName",Length:=30)> _
    [ContactName]

    
<Sql9nvarchar(Name:="ContactTitle",Length:=30)> _
    [ContactTitle]

    
<Sql9nvarchar(Name:="Address",Length:=60)> _
    [Address]

    
<Sql9nvarchar(Name:="City",Length:=15)> _
    [City]

    
<Sql9nvarchar(Name:="Region",Length:=15)> _
    [Region]

    
<Sql9nvarchar(Name:="PostalCode",Length:=10)> _
    [PostalCode]

    
<Sql9nvarchar(Name:="Country",Length:=15)> _
    [Country]

    
<Sql9nvarchar(Name:="Phone",Length:=24)> _
    [Phone]

    
<Sql9nvarchar(Name:="Fax",Length:=24)> _
    [Fax]

End Enum



<Sql9Table(Name:="Employees",Schema:="dbo")> _
Public Enum Employees
    
<Sql9int(Name:="EmployeeID",IsPrimary:=True,IsNullable:=False,IsIdentity:=True)> _
    [EmployeeID]

    
<Sql9nvarchar(Name:="LastName",IsNullable:=False,Length:=20)> _
    [LastName]

    
<Sql9nvarchar(Name:="FirstName",IsNullable:=False,Length:=10)> _
    [FirstName]

    
<Sql9nvarchar(Name:="Title",Length:=30)> _
    [Title]

    
<Sql9nvarchar(Name:="TitleOfCourtesy",Length:=25)> _
    [TitleOfCourtesy]

    
<Sql9datetime(Name:="BirthDate")> _
    [BirthDate]

    
<Sql9datetime(Name:="HireDate")> _
    [HireDate]

    
<Sql9nvarchar(Name:="Address",Length:=60)> _
    [Address]

    
<Sql9nvarchar(Name:="City",Length:=15)> _
    [City]

    
<Sql9nvarchar(Name:="Region",Length:=15)> _
    [Region]

    
<Sql9nvarchar(Name:="PostalCode",Length:=10)> _
    [PostalCode]

    
<Sql9nvarchar(Name:="Country",Length:=15)> _
    [Country]

    
<Sql9nvarchar(Name:="HomePhone",Length:=24)> _
    [HomePhone]

    
<Sql9nvarchar(Name:="Extension",Length:=4)> _
    [Extension]

    
<Sql9image(Name:="Photo")> _
    [Photo]

    
<Sql9ntext(Name:="Notes")> _
    [Notes]

    
<Sql9int(Name:="ReportsTo")> _
    [ReportsTo]

    
<Sql9nvarchar(Name:="PhotoPath",Length:=255)> _
    [PhotoPath]

End Enum



<Sql9Table(Name:="EmployeeTerritories",Schema:="dbo")> _
Public Enum EmployeeTerritories
    
<Sql9int(Name:="EmployeeID",IsPrimary:=True,IsNullable:=False)> _
    [EmployeeID]

    
<Sql9nvarchar(Name:="TerritoryID",IsPrimary:=True,IsNullable:=False,Length:=20)> _
    [TerritoryID]

End Enum



<Sql9Table(Name:="Order Details",Schema:="dbo")> _
Public Enum Order Details
    
<Sql9int(Name:="OrderID",IsPrimary:=True,IsNullable:=False)> _
    [OrderID]

    
<Sql9int(Name:="ProductID",IsPrimary:=True,IsNullable:=False)> _
    [ProductID]

    
<Sql9money(Name:="UnitPrice",IsNullable:=False,DefaultOrBinding:="((0))")> _
    [UnitPrice]

    
<Sql9smallint(Name:="Quantity",IsNullable:=False,DefaultOrBinding:="((1))")> _
    [Quantity]

    
<Sql9real(Name:="Discount",IsNullable:=False,DefaultOrBinding:="((0))")> _
    [Discount]

End Enum



<Sql9Table(Name:="Orders",Schema:="dbo")> _
Public Enum Orders
    
<Sql9int(Name:="OrderID",IsPrimary:=True,IsNullable:=False,IsIdentity:=True)> _
    [OrderID]

    
<Sql9nchar(Name:="CustomerID",Length:=5)> _
    [CustomerID]

    
<Sql9int(Name:="EmployeeID")> _
    [EmployeeID]

    
<Sql9datetime(Name:="OrderDate")> _
    [OrderDate]

    
<Sql9datetime(Name:="RequiredDate")> _
    [RequiredDate]

    
<Sql9datetime(Name:="ShippedDate")> _
    [ShippedDate]

    
<Sql9int(Name:="ShipVia")> _
    [ShipVia]

    
<Sql9money(Name:="Freight",DefaultOrBinding:="((0))")> _
    [Freight]

    
<Sql9nvarchar(Name:="ShipName",Length:=40)> _
    [ShipName]

    
<Sql9nvarchar(Name:="ShipAddress",Length:=60)> _
    [ShipAddress]

    
<Sql9nvarchar(Name:="ShipCity",Length:=15)> _
    [ShipCity]

    
<Sql9nvarchar(Name:="ShipRegion",Length:=15)> _
    [ShipRegion]

    
<Sql9nvarchar(Name:="ShipPostalCode",Length:=10)> _
    [ShipPostalCode]

    
<Sql9nvarchar(Name:="ShipCountry",Length:=15)> _
    [ShipCountry]

End Enum



<Sql9Table(Name:="Products",Schema:="dbo")> _
Public Enum Products
    
<Sql9int(Name:="ProductID",IsPrimary:=True,IsNullable:=False,IsIdentity:=True)> _
    [ProductID]

    
<Sql9nvarchar(Name:="ProductName",IsNullable:=False,Length:=40)> _
    [ProductName]

    
<Sql9int(Name:="SupplierID")> _
    [SupplierID]

    
<Sql9int(Name:="CategoryID")> _
    [CategoryID]

    
<Sql9nvarchar(Name:="QuantityPerUnit",Length:=20)> _
    [QuantityPerUnit]

    
<Sql9money(Name:="UnitPrice",DefaultOrBinding:="((0))")> _
    [UnitPrice]

    
<Sql9smallint(Name:="UnitsInStock",DefaultOrBinding:="((0))")> _
    [UnitsInStock]

    
<Sql9smallint(Name:="UnitsOnOrder",DefaultOrBinding:="((0))")> _
    [UnitsOnOrder]

    
<Sql9smallint(Name:="ReorderLevel",DefaultOrBinding:="((0))")> _
    [ReorderLevel]

    
<Sql9bit(Name:="Discontinued",IsNullable:=False,DefaultOrBinding:="((0))")> _
    [Discontinued]

End Enum



<Sql9Table(Name:="Region",Schema:="dbo")> _
Public Enum Region
    
<Sql9int(Name:="RegionID",IsPrimary:=True,IsNullable:=False)> _
    [RegionID]

    
<Sql9nchar(Name:="RegionDescription",IsNullable:=False,Length:=50)> _
    [RegionDescription]

End Enum



<Sql9Table(Name:="Shippers",Schema:="dbo")> _
Public Enum Shippers
    
<Sql9int(Name:="ShipperID",IsPrimary:=True,IsNullable:=False,IsIdentity:=True)> _
    [ShipperID]

    
<Sql9nvarchar(Name:="CompanyName",IsNullable:=False,Length:=40)> _
    [CompanyName]

    
<Sql9nvarchar(Name:="Phone",Length:=24)> _
    [Phone]

End Enum



<Sql9Table(Name:="Suppliers",Schema:="dbo")> _
Public Enum Suppliers
    
<Sql9int(Name:="SupplierID",IsPrimary:=True,IsNullable:=False,IsIdentity:=True)> _
    [SupplierID]

    
<Sql9nvarchar(Name:="CompanyName",IsNullable:=False,Length:=40)> _
    [CompanyName]

    
<Sql9nvarchar(Name:="ContactName",Length:=30)> _
    [ContactName]

    
<Sql9nvarchar(Name:="ContactTitle",Length:=30)> _
    [ContactTitle]

    
<Sql9nvarchar(Name:="Address",Length:=60)> _
    [Address]

    
<Sql9nvarchar(Name:="City",Length:=15)> _
    [City]

    
<Sql9nvarchar(Name:="Region",Length:=15)> _
    [Region]

    
<Sql9nvarchar(Name:="PostalCode",Length:=10)> _
    [PostalCode]

    
<Sql9nvarchar(Name:="Country",Length:=15)> _
    [Country]

    
<Sql9nvarchar(Name:="Phone",Length:=24)> _
    [Phone]

    
<Sql9nvarchar(Name:="Fax",Length:=24)> _
    [Fax]

    
<Sql9ntext(Name:="HomePage")> _
    [HomePage]

End Enum



<Sql9Table(Name:="Territories",Schema:="dbo")> _
Public Enum Territories
    
<Sql9nvarchar(Name:="TerritoryID",IsPrimary:=True,IsNullable:=False,Length:=20)> _
    [TerritoryID]

    
<Sql9nchar(Name:="TerritoryDescription",IsNullable:=False,Length:=50)> _
    [TerritoryDescription]

    
<Sql9int(Name:="RegionID",IsNullable:=False)> _
    [RegionID]

End Enum


 

标签:
声明:无特别说明,转载请标明本文来源!