VB.NET学习笔记:ADO.NET操作ACCESS数据库——书写SQL语句时处理系统关键字如DEFAULT、ON、position等

一、默认值和级联更新删除关键字DEFAULT和ON

DEFAULT和ON是MS ACCESS SQL系统关键字,SQL语句中如果含有系统关键字,在ACCESS界面是无法执行的。如下SQL语句:

Create TABLE periodtbl
(
PDID AUTOINCREMENT,
PDname text(10) NOT NULL,
CONSTRAINT pk_periodtbl_PDID PRIMARY KEY (PDID),
CONSTRAINT UQ_periodtbl_PDname UNIQUE (PDname)
);

Create TABLE studenttbl
(
STUID AUTOINCREMENT,
STUname text(20) DEFAULT '请录入姓名',,
PDID INTEGER NOT NULL,
CONSTRAINT PK_studenttbl_STUID PRIMARY KEY (STUID),
CONSTRAINT FK_studenttbl_periodtbl_PDID  FOREIGN KEY (PDID)
  REFERENCES periodtbl(PDID)
  ON Delete NO ACTION
  ON Update CASCADE
);

执行进弹窗提示语法错误,如图:
SQL系统关键字
但在VB.NET中却可以很好的执行:

        Dim sqlstring As String = "Create TABLE studenttbl" & Environment.NewLine _
                                & "(" & Environment.NewLine _
                                & "STUID AUTOINCREMENT," & Environment.NewLine _
                                & "STUname text(20) DEFAULT '请录入姓名'," & Environment.NewLine _
                                & "PDID INTEGER NOT NULL," & Environment.NewLine _
                                & "CONSTRAINT PK_studenttbl_STUID PRIMARY KEY (STUID)," & Environment.NewLine _
                                & "CONSTRAINT FK_studenttbl_periodtbl_PDID  FOREIGN KEY (PDID)" & Environment.NewLine _
                                & "    REFERENCES periodtbl(PDID)" & Environment.NewLine _
                                & "    ON Delete NO ACTION" & Environment.NewLine _
                                & "    ON Update CASCADE" & Environment.NewLine _
                                & ");"

        '连接数据库
        Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\KingOne\Desktop\data\Database.accdb")
        '打开数据库
        conn.Open()
        '生成命令
        Dim cmd As New OleDbCommand(sqlstring, conn)
        '执行命令
        cmd.ExecuteNonQuery()
        '关闭数据库
        conn.Close()

执行后打开ACCESS文件查看效果:
默认值
ON关键字

二、vb.net系统关键字 position

在ACCESS界面可以很好的执行“SELECT position.* FROM position;”,但放到VB.NET程序中执行却报错,如图:
position关键字
把SQL语句修改为SELECT [position].* FROM [position]后正常执行命令。

三、原因分析

DEFAULT和ON是MS ACCESS SQL系统关键字所以无法在ACCESS界面执行,而position是VB.NET关键字所以无法在VB.NET中执行。对于MS ACCESS系统关键字可以直接放到VB.NET中执行,而对于VB.NET程序的系统关键字做表名或字段名用[]括起,当然最好不要使用系统关键字为妥。

猜你喜欢

转载自blog.csdn.net/zyjq52uys/article/details/89136156