数据库高手请进

作者决定挑战自制数据库系统,主要目标包括实现SELECT、DELETE、UPDATE、INSERT和CREATE语句。针对SELECT语句,计划通过识别SQL关键字并处理不同情况,如全字段选择和指定字段选择。DELETE和UPDATE语句的实现面临挑战,提出了三种策略,包括副表记录、Random方法和数据复制法。INSERT语句相对较易,直接追加数据到文件。CREATE语句的解析和表创建设计较为复杂,涉及字段名、长度和属性。作者分享了开发过程中的思考和初步实现的简单教程,包括CREATE TABLE和SELECT语句的示例。
摘要由CSDN通过智能技术生成

2013-06-26

今天决定开源部分源码

VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form MainForm 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "数据库主窗口"
   ClientHeight    =   8340
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   11955
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   8340
   ScaleWidth      =   11955
   StartUpPosition =   2  '屏幕中心
   Begin VB.CommandButton Command7 
      Caption         =   "整理"
      Height          =   375
      Left            =   10680
      TabIndex        =   10
      Top             =   3360
      Width           =   1215
   End
   Begin VB.CommandButton Command6 
      Caption         =   "开始"
      Height          =   375
      Left            =   8040
      TabIndex        =   9
      Top             =   3360
      Width           =   1215
   End
   Begin VB.TextBox Text2 
      BorderStyle     =   0  'None
      Height          =   1095
      HideSelection   =   0   'False
      Left            =   0
      MultiLine       =   -1  'True
      ScrollBars      =   3  'Both
      TabIndex        =   8
      Top             =   7200
      Width           =   11895
   End
   Begin VB.CommandButton Command5 
      Caption         =   "测试SQL"
      Height          =   375
      Left            =   6720
      TabIndex        =   7
      Top             =   3360
      Width           =   1215
   End
   Begin MSComctlLib.ListView ListView1 
      Height          =   3255
      Left            =   2760
      TabIndex        =   6
      Top             =   3840
      Width           =   9135
      _ExtentX        =   16113
      _ExtentY        =   5741
      View            =   3
      LabelWrap       =   -1  'True
      HideSelection   =   -1  'True
      GridLines       =   -1  'True
      _Version        =   393217
      ForeColor       =   -2147483640
      BackColor       =   -2147483643
      BorderStyle     =   1
      Appearance      =   1
      NumItems        =   0
   End
   Begin VB.CommandButton Command4 
      Caption         =   "关闭"
      Height          =   375
      Left            =   9360
      TabIndex        =   5
      Top             =   3360
      Width           =   1215
   End
   Begin VB.CommandButton Command3 
      Caption         =   "导出EXCEL"
      Height          =   375
      Left            =   5400
      TabIndex        =   4
      Top             =   3360
      Width           =   1215
   End
   Begin VB.CommandButton Command2 
      Caption         =   "查找"
      Height          =   375
      Left            =   4080
      TabIndex        =   3
      Top             =   3360
      Width           =   1215
   End
   Begin VB.CommandButton Command1 
      Caption         =   "运行(&R)"
      Height          =   375
      Left            =   2760
      TabIndex        =   2
      Top             =   3360
      Width           =   1215
   End
   Begin VB.TextBox Text1 
      Height          =   3255
      Left            =   2760
      MultiLine       =   -1  'True
      TabIndex        =   1
      Top             =   0
      Width           =   9135
   End
   Begin MSComctlLib.TreeView TreeView1 
      Height          =   7095
      Left            =   0
      TabIndex        =   0
      Top             =   0
      Width           =   2655
      _ExtentX        =   4683
      _ExtentY        =   12515
      _Version        =   393217
      Style           =   7
      Appearance      =   1
   End
End
Attribute VB_Name = "MainForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'---MYDATA关系型数据库开发日志----------------------------------------------------------------------------
'2012/8/8
'细分CREATETABLE模块
'2012/8/1
'完成SELECT语句的初级功能,星号和字段选择。
'2012/7/31
'完成INSERT命令的开发,并开始进行SELECT的开发。
'2012/7/30
'完成CREATE TABLE命令的开发,并开始进行INSERT命令的开发
'
'2012/7/29
'程序主界面
'主要分为命令输入框,显示表名的树形表框,显示结果的数据框,执行各种命令的按钮栏和记录命令运行过程的记录框
'其中命令按钮栏包括运行,查找,导出EXCEL,测试SQL,开始,关闭,整理等按钮。
'
'-------------------------------------------------------------------------------

Dim intBiaoNum As Integer
Dim nodex As Node
Dim runSQL As String

'-------------------------------------------------------------------
'运行按钮
'此按钮的设计目的
'主要为读取命令输入框中的字符
'
Private Sub Command1_Click()
'运行
    Dim strCommand As String
    Dim strEnd As String
    
    
    If Me.Text1.SelText = "" Then
        runSQL = Me.Text1.Text
    Else
        runSQL = Me.Text1.SelText
    End If
    
    If runSQL = "" Then
        MsgBox "没有读取到命令", vbCritical, "错误"
        Exit Sub
    End If
    
    strEnd = Right(runSQL, 1)
    Debug.Print strEnd
    If strEnd <> ";" Then
        MsgBox "命令没有正确结束", vbCritical, "错误"
        Exit Sub
    End If
    runSQL = UCase(runSQL)
    runSQL = Replace(runSQL, vbCrLf, "")
    runSQL = Trim(runSQL)
    strCommand = Left(runSQL, 6)
    Debug.Print strCommand
    
    Select Case strCommand
        Case "CREATE":
            Debug.Print "CREATE"
            Call analyzeCREATETABLE(runSQL)
        Case "SELECT":
            Debug.Print "SELECT"
            Call analyzeSELECT(runSQL)
        Case "INSERT":
            Debug.Print "INSERT"
            Call analyzeINSERT(runSQL)
        Case "UPDATE":
        
        Case "DELETE"
            
        Case Else
            MsgBox "无法解析此命令", vbCritical, "错误"
    End Select
    
End Sub

Private Sub Command4_Click()
'
    End
    
End Sub

Private Sub Command5_Click()
'测试SQL
'    Call Test1
'    Call TEST2
'    Call TEST3
'    Call Test4
'    Call analyzeCREATETABLE("")
'    Debug.Print Dir(App.Path + "\ABC_S.DataS")
'    Call Test5
'    Call Test6
'    Debug.Print Me.Text1.SelText
    
End Sub

'    TreeView1.Nodes("root").Expanded = True
Private Sub Test4()
'
    Dim str1 As String
    Dim str2 As String
    
    str1 = Me.Text1.Text
    If str1 = "" Then
        MsgBox "没有读取到命令", vbCritical, "错误"
        Exit Sub
    End If
    
    str2 = Right(str1, 1)
    Debug.Print str2
    If str2 <> ";" Then
        MsgBox "命令没有正确结束", vbCritical, "错误"
        Exit Sub
    End If
    str1 = UCase(str1)
    str1 = Replace(str1, vbCrLf, "")
    Call analyzeCREATETABLE(str1)
    Debug.Print str1
End Sub
'字符= Replace(字符,  vbCrLf,"")
Private Sub Test1()


'    Set nodex = Me.TreeView1.Nodes.Add(, , "X1", "aaa")
'    Me.TreeView1.Nodes.Add "X1", tvwChild, "XX1", "abcd"
'    Me.TreeView1.Nodes.Add "XX1", tvwChild, "xxx1", "eeefg"
'    Me.TreeView1.Nodes.Add "X1", tvwChild, "XX2", "abecd"
'
'    Set nodex = Me.TreeView1.Nodes.Add(, , "X2", "abc")
'
'    Me.TreeView1.Nodes("X1").Expanded = True
'    Me.TreeView1.Nodes("XX1").Expanded = True
    Set nodex = Me.TreeView1.Nodes.Add(, , "Zhu1", "主数据库")
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao1", "TestTable1"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao2", "TEST2"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao3", "SKU"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao4", "CUST"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao5", "STORERKEY"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao6", "ASN"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao7", "ORDER"
    Me.TreeView1.Nodes.Add "Zhu1", tvwChild, "Biao8", "ITEM"
    Me.TreeView1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值