最近给中学做了一套有关MS SQL Server数据库的系统(可到http://www.itperson.com/software/下载限制版),做的过程中遇到了很多有关用SQL操作数据库、数据表和数据记录的问题,不同的数据库、不同的语言对SQL语句的认同性不一样。没有办法,只好自己到C++Builder 6 中去查帮助,到MS SQL Server去查帮助,不断的测试,才逐渐的拨开重雾,逐渐的对C++Builder 6中操作SQL Server的SQL语句有了一个大致的了解。
在查询和测试过程中,我将遇到的、正确的SQL语句汇总起来,并进行了分类整理,于是便有了这篇文章。之所以发布,主要是希望碰到类似问题的朋友不必再去翻书或者查英文帮助一类的东西,直接拿去用就行了。也算是给大家备个份、提个醒之类的东西吧,希望对大家以后的编程能起到一定的裨益。
一、建立数据库的语句:
ADOQuery->SQL->Add("Create database [database_name]")
二、建立数据表的语句:
1.不换行的方式:
ADOQuery->SQL->Add("Create Table [Table_Name]([Field_1][Type_1](Length_1) Not NULL,[Field_2][Type_2](Length_2),[Field_3][Type_3](Length_3) Not NULL)")
2.换行的方式:
ADOQuery->SQL->Add("Create Table [Table_Name]([Field_1][Type_1](Length_1) Not NULL,"+
"[Field_2][Type_2](Length_2),"+
"[Field_3][Type_3](Length_3) Not NULL)")
3.其中 [table_name] 可以用动态的方式书写:
...["+Dynamic_Table_Name+"]...
或者部分动态
...["Table_Name_Part_1"+Table_Name_Part_2+"]...
三、删除数据表的语句:
1. 删除只有以下唯一语句:
ADOQuery->SQL->Add("drop table [Table_Name]")
四、插入记录
1.一般法
ADOQuery->SQL->Add("Insert into table_name(Field_1,Field_2,...Field_N) Values(Field_1_Value,Field_2_Value,...Field_N_Value) where condition")
2.替换法
AnsiString InsertField,InsertValue;
InsertField=Field_1;
InsertValues=Field_1_value;
if(Edit_1->Text!="")
{
InsertField+=",Label_1->Caption";
InsertValues+="'"+Edit_1->Text+"'";
}
...
...
if(Edit_N->Text!="")
{
InsertField+=",Label_N->Caption";
InsertValues+="'"+Edit_N->Text+"'";
}
下面是SQL语句的写法:
ADOQuery->SQL->Add("Insert into Table_Name("+InsertField+") Values("+InsertValues+") where condition")
五、更新记录
1. 不换行法:
ADOQuery->SQL->Add("Update Table_Name Set Field_1='"+Edit_1->Text+"',Field_2='"+Edit_2->Text+"',...Field_N='"+Edit_N->Text+"' where condition")
2.判断条件换行法
ADOQuery->SQL->Add("Update Table_Name set Field_1='"+Edit_1->Text+"'")
if(Edit_2->Text!="")
{
ADOQuery->SQL->Add(",Field_2='"+Edit_2->Text+"'");
}
...
...
if(Edit_N->Text!="")
{
ADOQuery->SQL->Add(",Field_N='"+Edit_N->Text+"'");
}
ADOQuery->SQL->Add(" where condition")
六、删除记录
1.一般性删除法
ADOQuery->SQL->Add("Delete * from Table_Name where condition")
如果大家有更多或者更好的东东,别忘了发给我一份呀,我的邮箱是:webmaster@itperson.com。当然了,如果大家想同我探讨更多的技术也可以给我来信的吆(*_*)。
(我个人网站:阿尔博信:http://www.itperson.com)