vb6常用的sql语句
VBSQL命令

VB SQL命令全AAb s 求绝对值Ac tiveC ontro l 得到焦点的对象Acti veFor m 得到焦点的表单Arra y 指定数组Ap p 得知程序信息AppAc tivat e 激活执行中的应用程序A sc 求字符的内码AscB求字符的ASCIIAsc W 求字符的UniC ode Atn 求Tan-1BBeep发出预设的警示声CCall调用子程序Ca lenda r 选择月历Ch oose取出一列值的某个值CBoo l 数值转成布尔数CByt e 数值转成位元格式CCu r 数值转成货币格式CDa te 数据转成时间CDbl数值转成双精度浮点数CD ec 数据转成十进数ChD ir 改变目前路径缓充的路径ChDr ive 改变目前磁盘缓充的磁盘Chr由内码求得一字符ChrB由ASC II求得一字符C hrW 由UniCo de求得一字符C Int 数据转成In tegerCLn g 数据转成LongCom mand读出程序的参数C onst定义常数CosCOS C Sng 数值转成单精度浮点数CurD ir 得知目前路径缓充的路径CVar数值转成可变变量D Date得到目前电脑的时间Date$ 得到目前电脑时间字符串DateA dd 日期加法得日期Dat eDiff日期相减得数值DateP art 日期部份资讯Dat eSeri al 字符串转日期Date Value数字转日期Da y 得知日期变量内是几号D DB 折旧的计算Delet eSett ing 删除系统登录内的数据Dir得知目前路径内的文件名Do Event s 闲置函数EEnd结束程序Env iron取得环境变量的数据EOF某个文件缓冲的指标是否到档尾Eras e 重新初始化数组Err错误资讯Error错误代码信息E xp 得到自然对数F Fix 去除小数FileC opy T o 复制文件Fi leAtt r 文件开启模式FileD ateTi me 文件存档日期File Len 文件长度Filte r 筛选数组F ormat数据格式化输出FreeF ile 空的文件编号FV求得定期、定额支付且固定利率下之年金的值GGetA llSet ting得到所有系统登录的资讯Ge tAttr得知文件属性G etSet ting得到系统登录的资讯H Hex 将数值转成16进数表示的字符串Hour得知日期变量内是几时IIf. The n . E lse 判断结构IMESt atus得知IME输入法状态InS tr 寻找字符串里的字符串I nStrB寻找字符串里的AS CII IntSt rRev由字符串右边开始寻找字符串里的字符串Int取整数JJ oin 将数组数据加入分隔字符后组合成一新字符串KKill删除文件LLB ound得知数组最小起始范围LCa se 字符串转小写Left截取字符串左边几个字Le n 得知字符串的字数Len B 得知变量占用记忆体几个By teL oadPi cture载入图形Log求对数值 LSet字符串向左对齐LTrim移除字符串最左边的空白字符M Mid 截取字符串里某些字符串Min ute 得知日期变量内是几分MkDi r 建立新的数据颊Mont h 得知日期变量内是第几月NN ame A s 更改文件名N ow 得知目前点脑的日期与时间O O ct 字符转成八进制的字符串Opti on VB内部一些选项设定PP opupM enu 跳出菜单Print列印数据QQBCo lor 设定颜色(16色) RR andom ize 随机数初始化声明R eplac e 取代字符串中某些字符串V B6提供RGB设定颜色(255*255*255色) RmDir移除数据颊Rn d 得到一个随机数RSet字符串向右对齐RTrim去除字符串最右边的空白字符S SaveP ictur e 储存图形Sc reen得知屏幕简易资讯Secon d 得知日期变量内是几秒S etAtt r 设定文件属性Sgn 得知是整数还是负数vShel l 执行外部程序Sin 得知SinSpace填入数个空白字符Spli t 以某字符串将字符串拆解成数组 VB6提供S qr 求平方根S tr 数值转字符串StrC omp 比较字符串StrC onv 改变字符串型态St ring设定一个重覆的字符串Str Rever se 字符串反转V B6提供T Tab 列印n个制表符Ta n 得知T anT ime 得知、设定电脑时间Time$得知、设定时间字符串Ti mer 得知今天电脑总秒数TimeS erial字符串转时间T imeVa lue 数字转时间Trim去除字符串首尾的空白字符TypeN ame 得知变量类别的名称UU Bound得知数组的最值UCase字符串转大写VVa l 将字符串转成数字Var Type得知变量的类型WWe ekDay得知日期变量内是星期几W eekda yName将Wee kDay传回值改成文字显示V B6提供Y Year得知日期变量内是几年SQL c ode--语句功能--数据操作SELEC T --从数据库表中检索数据行和列IN SERT--向数据库表添加新数据行D ELETE --从数据库表中删除数据行UPDAT E --更新数据库表中的数据--数据定义CRE ATE T ABLE--创建一个数据库表DROP TABL E --从数据库中删除表AL TER T ABLE--修改数据库表结构CREA TE VI EW --创建一个视图DRO P VIE W --从数据库中删除视图C REATE INDE X --为数据库表创建一个索引DROP INDE X --从数据库中删除索引C REATE PROC EDURE --创建一个存储过程DRO P PRO CEDUR E --从数据库中删除存储过程CREA TE TR IGGER --创建一个触发器DROP TRIG GER --从数据库中删除触发器CRE ATE S CHEMA --向数据库添加一个新模式DROPSCHEM A --从数据库中删除一个模式CREA TE DO MAIN--创建一个数据值域ALTE R DOM AIN --改变域定义DRO P DOM AIN --从数据库中删除一个域--数据控制G RANT--授予用户访问权限DENY --拒绝用户访问REVOK E --解除用户访问权限--事务控制COMMI T --结束当前事务ROLL BACK--中止当前事务S ET TR ANSAC TION--定义当前事务数据访问特征--程序化SQLD ECLAR E --为查询设定游标EXP LAN --为查询描述数据访问计划OP EN --检索查询结果打开一个游标FE TCH --检索一行查询结果CLOSE --关闭游标PR EPARE --为动态执行准备SQL 语句EXE CUTE--动态地执行SQL语句D ESCRI BE --描述准备好的查询---局部变量de clare @idchar(10)--set@id = '10010001'sel ect @id ='10010001'---全局变量---必须以@@开头--I F ELS Edec lare@x in t @yint @z intsele ct @x = 1@y =2 @z=3if@x >@ypr int 'x > y' --打印字符串'x > y'els e if@y >@zpr int 'y > z'els e pri nt 'z > y'--C ASEu se pa nguu pdate empl oyeeset e_wage =ca sewh en jo b_lev el =’1’ t hen e_wage*1.08 when job_level = ’2’ the n e_w age*1.07 w hen j ob_le vel = ’3’thene_wag e*1.06 els e e_w age*1.05e nd--WHIL E CON TINUE BREA Kdec lare@x in t @yint @c intsele ct @x = 1@y=1while @x < 3be ginp rint@x --打印变量x的值w hile@y <3beg inse lect@c =100*@x + @ypri nt @c --打印变量c 的值sel ect @y = @y + 1endselec t @x= @x+ 1s elect @y = 1en d--WAITF OR--例等待1小时2分零3 秒后才执行S ELECT语句w aitfo r del ay ’01:02:03’s elect * fr om em ploye e--例等到晚上11 点零8 分后才执行SEL ECT 语句wai tfortime’23:08:00’sele ct *fromemplo yee***S ELECT***selec t *(列名) fr om ta ble_n ame(表名) wh ere c olumn_name oper atorvalueex:(宿主)s elect * fr om st ock_i nform ation wher e sto ckid= str(nid)stoc kname = 's tr_na me' stock namelike'% fi nd th is %'sto cknam e lik e '[a-zA-Z]%' --------- ([]指定值的范围)stock namelike'[^F-M]%'---------(^排除指定范围)---------只能在使用like关键字的wh ere子句中使用通配符)or stoc kpath = 's tock_path'or s tockn umber < 1000an d sto ckind ex =24no t sto cksex = 'm an's tockn umber betw een 20 and 100stock numbe r in(10,20,30)order by s tocki d des c(asc) --------- 排序,desc-降序,as c-升序order by 1,2 --------- by列号st ockna me =(sele ct st ockna me fr om st ock_i nform ation wher e sto ckid= 4)---------子查询--------- 除非能确保内层sele ct只返回一个行的值,--------- 否则应在外层wh ere子句中用一个i n限定符selec t dis tinct colu mn_na me fo rm ta ble_n ame --------- d istin ct指定检索独有的列值,不重复sele ct st ocknu mber,"sto cknum ber + 10"= sto cknum ber + 10 f rom t able_nameselec t sto cknam e , "stock numbe r" =count(*) f rom t able_namegroup by s tockn ame--------- g roupby 将表按行分组,指定列中有相同的值havin g cou nt(*) = 2---------havin g选定指定的组s elect *f rom t able1, tab le2 where tabl e1.id *= t able2.id -------- 左外部连接,t able1中有的而t able2中没有得以null表示tab le1.i d =*table2.id-------- 右外部连接sele ct st ockna me fr om ta ble1union [all] ----- un ion合并查询结果集,all-保留重复行sele ct st ockna me fr om ta ble2***i nsert***inser t int o tab le_na me (S tock_name,Stock_numb er) v alue("xxx","xx xx")value (sel ect S tockn ame , Stoc knumb er fr om St ock_t able2)---v alue为selec t语句***up date***u pdate tabl e_nam e set Stoc kname = "x xx" [where Stoc kid = 3]S tockn ame = defa ultS tockn ame = nullStoc knumb er =Stock name+ 4***de lete***d elete from tabl e_nam e whe re St ockid = 3trunc ate t able_name----------- 删除表中所有行,仍保持表的完整性d rop t abletable_name --------------- 完全删除表***alt er ta ble*** ---修改数据库表结构alte r tab le da tabas e.own er.ta ble_n ame a dd co lumn_namechar(2) nu ll .....s p_hel p tab le_na me ---- 显示表已有特征crea te ta ble t able_name(name char(20), agesmall int,lname varc har(30))i nsert into tabl e_nam e sel ect ......... -----实现删除列的方法(创建新表)alter tabl e tab le_na me dr op co nstra int S tockn ame_d efaul t ---- 删除S tockn ame的d efaul t 约束***fu nctio n(/*常用函数*/)***----统计函数----A VG --求平均值COUNT --统计数目MA X --求最大值M IN --求最小值SUM --求和--AVGusepangusele ct av g(e_w age)as de pt_av gWagefrom empl oyeegroup by d ept_i d--MAX--求工资最高的员工姓名use pang usel ect e_namefrom empl oyeewhere e_wa ge =(sele ct ma x(e_w age)fromemplo yee)--ST DEV()--ST DEV()函数返回表达式中所有数据的标准差--STDEV P()--STDE VP()函数返回总体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回总体变异数----算术函数----/***三角函数***/S IN(fl oat_e xpres sion) --返回以弧度表示的角的正弦COS(float_expr essio n) --返回以弧度表示的角的余弦TA N(flo at_ex press ion)--返回以弧度表示的角的正切COT(f loat_expre ssion) --返回以弧度表示的角的余切/***反三角函数***/ASIN(floa t_exp ressi on) --返回正弦是FLOA T 值的以弧度表示的角ACO S(flo at_ex press ion)--返回余弦是FLO AT 值的以弧度表示的角AT AN(fl oat_e xpres sion) --返回正切是FL OAT 值的以弧度表示的角A TAN2(float_expr essio n1,fl oat_e xpres sion2)--返回正切是float_expr essio n1 /f loat_expre s-sio n2的以弧度表示的角DEGR EES(n umeri c_exp ressi on)--把弧度转换为角度返回与表达式相同的数据类型可为--INT EGER/MONEY/REAL/FLOA T 类型RADIA NS(nu meric_expr essio n) --把角度转换为弧度返回与表达式相同的数据类型可为--INTE GER/M ONEY/REAL/FLOAT类型E XP(fl oat_e xpres sion) --返回表达式的指数值LO G(flo at_ex press ion)--返回表达式的自然对数值L OG10(float_expr essio n)--返回表达式的以10 为底的对数值SQRT(floa t_exp ressi on) --返回表达式的平方根/***取近似值函数***/CEIL ING(n umeri c_exp ressi on) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTE GER/M ONEY/REAL/FLOAT类型F LOOR(numer ic_ex press ion)--返回<=表达式的最小整数返回的数据类型与表达式相同可为--INT EGER/MONEY/REAL/FLOA T 类型ROUND(nume ric_e xpres sion) --返回以inte ger_e xpres sion为精度的四舍五入值返回的数据--类型与表达式相同可为INT EGER/MONEY/REAL/FLOA T 类型ABS(n umeri c_exp ressi on) --返回表达式的绝对值返回的数据类型与表达式相同可为--IN TEGER/MONE Y/REA L/FLO AT 类型SIGN(nume ric_e xpres sion) --测试参数的正负号返回0零值1 正数或-1负数返回的数据类型--与表达式相同可为INTEG ER/MO NEY/R EAL/F LOAT类型PI() --返回值为π即3.1415926535897936RAND([int eger_expre ssion]) --用任选的[integ er_ex press ion]做种子值得出0-1 间的随机浮点数----字符串函数----AS CII() --函数返回字符表达式最左端字符的AS CII 码值CHA R() --函数用于将ASCI I 码转换为字符--如果没有输入0 ~ 255之间的AS CII 码值CHAR函数会返回一个NU LL 值LOWER() --函数把字符串全部转换为小写U PPER() --函数把字符串全部转换为大写ST R() --函数把数值型数据转换为字符型数据LT RIM() --函数把字符串头部的空格去掉RTR IM()--函数把字符串尾部的空格去掉LEFT(),RI GHT(),SUBS TRING() --函数返回部分字符串CHARI NDEX(),PAT INDEX() --函数返回字符串中某个指定的子串出现的开始位置SO UNDEX() --函数返回一个四位字符码--SOUND EX函数可用来查找声音相似的字符串但SO UNDEX函数对数字和汉字均只返回0 值DIF FEREN CE()--函数返回由SOU NDEX函数返回的两个字符表达式的值的差异--0 两个S OUNDE X 函数返回值的第一个字符不同--1两个SOU NDEX函数返回值的第一个字符相同--2 两个SOUND EX 函数返回值的第一二个字符相同--3 两个S OUNDE X 函数返回值的第一二三个字符相同--4 两个S OUNDE X 函数返回值完全相同Q UOTEN AME() --函数返回被特定字符括起来的字符串/*sel ect q uoten ame('abc', '{') quot ename('abc')运行结果如下----------------------------------{{abc} [ab c]*/REPL ICATE() --函数返回一个重复ch aract er_ex press ion 指定次数的字符串/*selec t rep licat e('ab c', 3) rep licat e( 'a bc',-2)运行结果如下----------- -----------abcab cabcNULL*/RE VERSE() --函数将指定的字符串的字符排列顺序颠倒R EPLAC E() --函数返回被替换了指定子串的字符串/*selec t rep lace('abc123g', '123', 'd ef')运行结果如下----------- -----------abcd efg*/SPA CE()--函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() ( A S [ l ength ])C ONVER T() 函数语法如下CONV ERT() ([ l ength ], [, st yle])sel ect c ast(100+99 as c har)conve rt(va rchar(12), getd ate())运行结果如下------------------------------------------199 Jan 15 2000----日期函数----DA Y() --函数返回date_expre ssion中的日期值MON TH()--函数返回date_expr essio n 中的月份值YE AR()--函数返回date_expr essio n 中的年份值DA TEADD( , ,)--函数返回指定日期da te 加上指定的额外日期间隔n umber产生的新日期DA TEDIF F( ,,)--函数返回两个指定日期在date part方面的不同之处DA TENAM E( ,) --函数以字符串的形式返回日期的指定部分DA TEPAR T( ,) --函数以整数值的形式返回日期的指定部分GE TDATE() --函数以DA TETIM E 的缺省格式返回系统当前的日期和时间----系统函数----A PP_NA ME()--函数返回当前执行的应用程序的名称C OALES CE()--函数返回众多表达式中第一个非NULL表达式的值COL_LENG TH(<'table_name'>, <'colu mn_na me'>) --函数返回表中指定字段的长度值CO L_NAM E(, ) --函数返回表中指定字段的名称即列名DATAL ENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['data base_name']) --函数返回数据库的编号DB_N AME(d ataba se_id) --函数返回数据库的名称HOST_ID()--函数返回服务器端计算机的名称HOS T_NAM E() --函数返回服务器端计算机的名称IDEN TITY([, se ed in creme nt])[AS c olumn_name])--IDENT ITY()函数只在SELEC T INT O 语句中使用用于插入一个id entit y col umn列到新表中/*sele ct id entit y(int, 1,1) as colu mn_na mein to ne wtabl efro m old table*/IS DATE() --函数判断所给定的表达式是否为合理日期IS NULL(, ) --函数将表达式中的N ULL 值用指定值替换ISN UMERI C() --函数判断所给定的表达式是否为合理的数值NEWI D() --函数返回一个UNI QUEID ENTIF IER 类型的数值NULLI F(, )--NU LLIF函数在ex press ion1与expr essio n2 相等时返回NU LL 值若不相等时则返回exp ressi on1 的值--------------------------------------------------------------------------------sql中的保留字acti on ad d agg regat e allalt er af ter a nd asasc avgavg_r ow_le ngthauto_incre mentbetw een b igint bitbinar ybl ob bo ol bo th bycas cadecasecharchara cterchan ge ch eck c hecks um co lumncolu mns c ommen t con strai nt cr eatecros s cur rent_datecurre nt_ti me cu rrent_time stampdat a dat abase data bases datedat etime dayday_h our d ay_mi nuteday_secon d day ofmon th da yofwe ek da yofye ard ec de cimal defa ult d elaye dde lay_k ey_wr ite d elete desc desc ribedist inctdisti nctro w dou ble d rop end e lse e scape esca ped enclo sed e num e xplai n exi sts field s fil e fir st fl oat float4 flo at8 f lushforei gnf rom f or fu ll fu nctio ngl obalgrant gran ts gr oup havin g hea p hig h_pri ority hourhou r_min ute h our_s econd host s ide ntifi edi gnore in i ndexinfil ein ner i nsert inse rt_id intinte ger i nterv al in t1 in t2i nt3 i nt4 i nt8 i nto if is isam joinkey keys kill last_inse rt_idlea dingleftlengt h lik eli nes l imitloadlocalloc k log s lon g lon gbloblon gtext low_prior ity m ax ma x_row sma tch m edium blobmediu mtext medi umintmid dlein t min_rows minu te mi nute_secon dmo difymonth mont hname myis amn atura l num ericno no tnu ll on opti mizeoptio nop tiona lly o r ord er ou ter outfi le pa ck_ke ys pa rtial pass wordprec ision prim ary p roced ure p roces spr ocess listprivi leges read realref erenc es re loadregex p ren ame repla ce re stric t ret urnsrevok erl ike r ow ro ws se condsele ct se t sho w shu tdownsma llint sona me sq l_big_tabl es sq l_big_sele cts sql_l ow_pr iorit y_upd atessql_l og_of f sql_log_updat e sql_sele ct_li mit sql_s mall_resul t sql_big_resul t sql_warn ingsstrai ght_j oin start ing s tatus stri ng ta ble table s tem porar y ter minat ed te xt t hen t ime t imest amp t inybl obt inyte xt ti nyint trai lingtot ype u se us ing u niqueunl ock u nsign ed up dateusageval ues v archa r var iable s var yingvarb inary with writ e whe nwh ere y ear y ear_m onthzerof ill 。
sql常用语句

sql常用语句SQL,即结构化查询语言,是一种计算机语言,可以读取、插入、更新和删除数据库中的数据,还可以定义、操纵和控制数据库的结构。
因此,SQL语言是一种非常常用的数据库语言,在许多数据库产品中都有应用。
首先,让我们了解一些SQL语言最常用的语句:SELECT:SELECT是SQL中最常用的语句,它可以选择数据表中的特定的一些数据,或者按照特定的条件选择数据表中的数据。
INSERT:INSERT语句用来插入新的行到指定的表中,可以同时插入多行。
UPDATE:UPDATE语句用于更新数据表中的数据,可以根据一定的条件更新多行数据,也可以将已存在的数据更新为新的数据。
DELETE:DELETE语句用于从数据表中删除数据,可以根据特定条件移除多行数据,也可以移除整个表中的数据。
CREATE TABLE:CREATE TABLE以用来创建新的数据表,它可以用来定义表中存储的数据类型,以及约束表中字段之间的关系。
ALTER TABLE:ALTER TABLE可以用来更改表结构,可以添加或删除数据表中的字段,也可以更改表中字段的属性。
DROP TABLE:DROP TABLE以用来删除数据表,可以将整个表删除,也可以将指定的列删除。
另外,SQL还提供了一些用于操纵数据的内建函数,如字段的求和、最大值、最小值、平均值等。
例如,SUM函数用于求指定字段的总和;AVG函数用于求指定字段的平均值;COUNT函数用于统计指定字段满足特定条件的记录数。
还有一些SQL语句,可以用来定义不同类型的数据结构,如数据表、视图、索引、存储过程、触发器等。
这些语句的使用可以极大地提高数据库的性能,并且使用它们可以确保数据的安全性和一致性。
此外,要操作SQL,需要通过SQL语句编辑器来输入SQL语句,并使用SQL服务器来执行SQL语句。
有许多SQL语句编辑器可以在各种操作系统上使用,如MS Access、MySQL、SQL Server等;而SQL 服务器则是实现SQL语句功能的核心部件。
vb sql数据库查询语句

vb sql数据库查询语句以下是一些在 Visual Basic 中执行 SQL 数据库查询的示例语句:1. 查询所有数据:```vbDim sql As String = "SELECT * FROM table_name"```2. 查询特定列的数据:```vbDim sql As String = "SELECT column1, column2 FROMtable_name"```3. 带有 WHERE 子句的条件查询:```vbDim sql As String = "SELECT * FROM table_name WHERE column1 = 'value'"```4. 带有 ORDER BY 子句的查询:```vbDim sql As String = "SELECT * FROM table_name ORDER BY column1 ASC"```5. 带有多个条件的查询:```vbDim sql As String = "SELECT * FROM table_name WHEREcolumn1 = 'value' AND column2 = 'value'"```6. 使用通配符进行模糊查询:```vbDim sql As String = "SELECT * FROM table_name WHERE column1 LIKE '%value%'"```7. 查询结果分页:```vbDim sql As String = "SELECT * FROM table_name LIMIT 10 OFFSET 20"```8. 使用聚合函数进行计算:```vbDim sql As String = "SELECT SUM(column1) as 'Sum' FROM table_name"```请注意,在上述示例中,`table_name` 是要查询的表名,`column1` 和 `column2` 是要查询的列名,`value` 是用作查询条件的值。
常用的SQL语句

常用的SQL语句下面列举了一些我们在开发中常常会使用到的SQL语句,供大家参考学习。
1. 查询所有数据:SELECT * FROM table_name;2. 查询指定列数据:SELECT column1, column2 FROM table_name;3. 带条件查询:SELECT * FROM table_name WHERE condition;4. 带条件查询并排序:SELECT * FROM table_name WHERE condition ORDER BY column_name ASC/DESC;5. 带分组的查询:SELECT column1, COUNT(*) FROM table_name GROUP BY column1;6. 带分组和排序的查询:SELECT column1, COUNT(*) FROM table_name GROUP BY column1 ORDER BY COUNT(*) DESC;7. 带聚合函数的查询:SELECT AVG(column1), MAX(column2), MIN(column3) FROM table_name;8. 带子查询的查询:SELECT * FROM table_name WHERE column1 IN (SELECT column1 FROM other_table);9. 带连接条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2;10. 带连接和排序条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 ORDER BY table1.column2 ASC;11. 带连接和分组条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 GROUP BY table1.column2;12. 带连接和聚合函数条件的查询:SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2 GROUP BY table1.column2 HAVING AVG(table2.column3) > 0;13. 插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2);14. 更新数据:UPDATE table_name SET column1 = value1 WHERE condition;15. 删除数据:DELETE FROM table_name WHERE condition;16. 清空表数据:TRUNCATE TABLE table_name;17. 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);18. 修改表结构:ALTER TABLE table_name ADD column_name datatype;19. 删除表:DROP TABLE table_name;20. 查看表结构:DESCRIBE table_name;21. 查看表数据量:SELECT COUNT(*) FROM table_name;22. 查看表索引:SHOW INDEX FROM table_name;23. 创建索引:CREATE INDEX index_name ON table_name (column_name);24. 删除索引:DROP INDEX index_name ON table_name;25. 批量插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...;26. 批量更新数据:UPDATE table_name SET column1 = value1 WHERE condition, column2 = value2 WHERE condition, ...;27. 批量删除数据:DELETE FROM table_name WHERE condition, ...;28. 分页查询:SELECT * FROM table_name LIMIT offset, limit;29. 子查询嵌套查询:(SELECT column1 FROM other_table WHERE condition) IN (SELECT column1 FROM another_table WHERE condition);30. UNION操作符查询:SELECT * FROM table1 UNION SELECT * FROM table2。
sql常用语句用法

sql常用语句用法以下是SQL中一些常用的语句和用法:1.SELECT语句:用于从数据库中查询数据。
- 示例:SELECT * FROM table_name;- 说明:*代表所有列,table_name是要查询的表名。
2.INSERTINTO语句:用于向数据库的表中插入新的记录。
- 示例:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);- 说明:column1, column2是表的列名,value1, value2是要插入的值。
3.UPDATE语句:用于更新数据库表中的记录。
- 示例:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;- 说明:table_name是要更新的表名,column1, column2是要更新的列名,value1, value2是要更新的值,condition是更新条件。
4.DELETEFROM语句:用于从数据库表中删除记录。
- 示例:DELETE FROM table_name WHERE condition;- 说明:table_name是要删除记录的表名,condition是删除记录的条件。
5.CREATETABLE语句:用于创建数据库表。
- 示例:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);- 说明:table_name是要创建的表名,column1, column2是表的列名,datatype是列的数据类型。
6.ALTERTABLE语句:用于修改数据库表的结构。
- 示例:ALTER TABLE table_name ADD column_name datatype;- 说明:table_name是要修改的表名,column_name是要添加的列名,datatype是列的数据类型。
[doc]基于VB6.0编程实现SQL数据任意条件查询
![[doc]基于VB6.0编程实现SQL数据任意条件查询](https://img.taocdn.com/s3/m/fc33a91d78563c1ec5da50e2524de518964bd3ce.png)
基于VB6.0编程实现SQL数据任意条件查询基孑V?O.摘要本文介绍了用VB6.0中标准控件与SQL语言中的SELECT查询语句实现数据任意条件查询,数据简单的统计及通过Excel报表输出等内容.关键词VB6.0,控件,SQL一,前言在Windows操作系统中,VisualBasic是简单,常用的数据库开发平台,通过它可以在很短的时间内开发出高效,美观的数据库应用程序,这正是目前许多用户仍然采用Visw,dBa—sic作为开发大,中型数据库应用系统的原因.SQL(StructureQueryLanguage)是一个标准的结构化查询语言.功能强,效率高,简单易学易维护,是数据库和数据库系统人机交互的接口,SQL现已成为数据库操作语言的通用语言.在数据库的实际应用中,SELECT语句足SQL的核心,使用非常频繁,利用它可以实现不同要求的数据查询,并把查询结果以表格的形式返回.为了实现不同要求的数据查询,用户首先必须根据实际要求的动态条件,自动生成SQL查询语句(SELECT语句).一般情况下,系统设计者在定义数据表结构时,字段名往往使用英文字符名,而用户在组织条件时,如果根据英文字段名进行组织,叉很不直观,明白,丁是用户希望在组织条件时,用英文字段名相对应的中文含义名进行条件组织.而系统在执行时自动转化为标准的,系统能够识别的SELECT语句.二,实例在开发人力资源管理系统中,用户要求员工基本信息表中任意一个字段均能任意选择动忿条件输出,也能利用这些字段动态组织多重条件.同时,输出的数据信息能够进行简单的计数,排序,数据导入Excel后,能够打印出符合用户要求的各种格式的报表.于是设计了+个”基于VB6.0编程实现SQL数据任意条件查询”的查询生成器,提高了用户检索数据的灵活性,使用户组织条件变得简单,直观,明白.例如:模糊查询姓”李”的,性别为”男”的员工的”姓名,身份证号,性别,出生日期,民族,籍贯,政治面貌,毕业学校,学历,进厂时间”信息,按”身份证号”升序排序.运行程序,效果如下图所示.查询界面三,实现1.定义数据表结构(如表1所示)表1数据表结构序号字段代码字段属性中文说明员工基本信息表Employees1Dep-ldInt部门序号2Dep-CodeV丑Ich8r10部门代码3I~p-NtimeV8h8r40部门名称4Emp-IdInt虽工序号5Emp-CodeV archar12员工代码/I作证号6Emp-CardV archar18身份证号,社会保障号7Emp-NameVamhar12姓名8Emp-1V amhar12曾用名9Emp-2V archar12档案电脑号10StateTinylnt员工状态…………………………………………………………_实用第一智慧密集………………………………………~………………2.界面没计(1)新建一个标准工程.名称为【Projectl】.在工程中创建一个窗体,名称为【FrmCreatSql】(2)单击【工程】菜单F的【部件】选取项,在弹出的列表中选取中【MicrosoftADODataControl6.0(sp4)】选项和【MicrosoftDataGridControl6.0(sp5)】选项,然后单击【确定】按键,Adodc控件和DataGrid控件添加到工具箱中. (3)在【FrmCreatSql】窗体中放置2个Adodc控件,1个DataGrid控件,2个l,istBox控件,5个ComboBox控件,3个TextBox控件,2个CheckBox控件,9个CommandButton控件等.主要控件对象的属性如表2所爪.(4)添加程序代码(注:本文列出了几个关键的程序段,其它内容见源程序)1)窗体初始化主要完成窗体上各种控件的初始化工作,置初值.PrivateSubFOrm_Load《)Adodc1.RecordsetMoveFirstFori0ToAdodc1.Recordset.RecordCount一1 ListSourceAddltemAdodcRecordset.Fields(2)…用中文名填充【可以】选择的字段列表.Adodc1.IRecordset.MoveNext-NextIlForil_0ToListSource.IListCount一1TmpChiName;Trim(ListSourceList(㈨CallMyEngChi.GetlnfOByChiName(TmpChiName) TmpEngName=MyEngChiEngNameCondition1;Condition1+TmpEngName+AS4- TmpChiName+,汉化列表浏览宇段名.NextiLen=Len《Condition1)Adodc2.RecordSourceSELECT+Left《Condition1.iLen一1)+FROMIEmployeesWHEREState=1 TxtSQLSELECT4-Left《Condition1.iTmp一1)+ FROMEmployeesWHEREState1Adodc2.RefreshLbIfleccount=Trim{Str(Adodc2.Recordset.RecordCount)) EndSub2)添加条件命令主要根据用户要求动态地组织数据输出条件.根据字段的数据类型,利用SELECTCASE程序控制语句分别进行c(字符型),N(数值型),D(日期型)三种类型数据处理,并且将字段名由中文名转化为英文名. PrivateSubCmd_AddCond_Click《)TmpChiType=Trim《CmbCondi.Text)1.mpCmbCompTrIm{CmbComp.Text)TmpTxtV alueTrim《TxtV alue.Text)TmpCmbLogic=Trim《CmbLogic.Text)ffTmpChiType一OrTmpCmbCOmp OrTmpCmbLogicThenMsgBox【组织条件】时选择项中有I空值】- ⑩与表2主要控件的属性列裹对象属性值功能Connection—DSN=SQL-TestString(ODBC名称)ReconiSource蜘U£(*FROM AdodclEagChiFields提供数据绑定U8erNamePo~swozdConnection.DSN=SQL-TestString(ODBC名称)RecordSourceSEU£(*FROMAdodc2Employees提供数据绑定U盯N8n1ePasswordDataGridlDataSoum~Adodc2提供数据浏览Hst1DataSoumeAdodel显示【可以】选择的宇段List2Data.~uree最示【已经】选择的字段显示宇段的名称与数据Combo1名称CmbCondi类型Combo2名称CmbC0ⅡIp显示关系运算符Combo3名称CmbLosic显示逻辑运算符Comlm4名称Cmb-Order显示排序宇段名Combo5名称Cmb-Count显示计数字段名Text1名称tv-1输人条件Text2名称~tSQL显示sQL查询语句Text3名称TxtRepmf/~itle输入报表标题名称ChecklCheck1确定升序或降序Caption升/降名称Check1Check2确定是否计数Caption计数名称CmdSelectCommand1一次选取所有的宇段名Caption一>)名称CmdSdectCoamaaad2一次选取1个宇段名Caption一名称CmdSelectCommand3一次退选所有的字段名Caption<一名称CmdSdectComnnmd4一次退选1个宇段名Caption《《一名称Cmd—AddCondi Command5添加条件Caption添加条件名称CmdGondiNull Command6清空条件Caption清空条件名称Cmd-SearchCommand7执行查询Caption查询名称Cmd—ExcdCommand8数据导人Excel中CaptionExcel名称Cmd-BackCommand9退出程序Caption返回T×tSQL=~ExitSubElseTmpChiType=Trim(CmbCondi.Text) CallMyEngChi.GetlnfoByChiType(TmpChiType) TmpEngName=MyEngChi.EngNamecType;Right(TmpChiType,1)MsgBox【中文名:+TmpChimype+】【英文名:+ TmpEngName+】l类型:+cmype+】SelectCasecTypeCaseC第1种情况:字符型数据. cCmbComp=Trim(CmbComp.Text) SelectCasecCmbCompCase‟LikeIfTrim(TxtValue.Text)=…ThenCondition2=Condition2++Trim (TmpEngName)++Trim(CmbComp.Text)+%+ +%+Trim(CmbLogicText)ElseCondition2=Condition2++TI.im (TmpEngName)++Trim《CmbComp.Text)+%+ Trim(TxtV alue.Text)+%+Trim《CmbLogic.Text) EndIfCaseLeftIfTrim(TxtValue.Text)=~ThenCondition2=Condition2++Trim {TmpEngName)++Like+…++%+Trim(CmbLo~lic.Text)ElseCondition2=Condition2++Trim (TmDEngName)++Like4-+Trim《TxtV alue.Text)+%+Trim《CmbLogic.Text) EndIfCaseRightlfTrim《T×tV alue.Text)=~Then Condition2=Condition24-+Tnm (TmpEngName)+4-Like4-%4-++Trim(CmbLogic.Text)ElseCondition2=Condition24-+TI.im (TmpEngName)+4-Like4-%+TrIm(TxtV alue.TextJ+…+Trim(CmbLogic.TextJ EndIfCaseElseIfTrim(TxtVaIue.Text)=~ThenCondltbn2=Condition24-4-Trim (TmpEngName)++Tr|rn(CmbComp.Text)++.+…+Tr}rn(CmbLogicText)ElseCondition2;Condition24-+Trim (TmpEngName)++TrIm(CmbComp.Text)+…+ Trim(TxtV alue.Text)+…+Trim(CmbLogic.Text) EndIfEndSelectiLenLenfCondition2)MsgBox右边字符l4-Right(Condition2,2l4-r IfRig.)=结束.ht(Condition22ThenCondRion2#Left《Condition2,iLen一2) Cmd..AddCondi.Enabled#FaIse使添加条件按钮不可用.T)(tSOLCondition2.E)citSubEI$eTxtSQL=Condition2EndIfCaseN第2种情况:数值型数据,-. Condition2=Condition24-+Trim(TmpEngName)+4-Trim《CmbComp.Text)4- Trim《Str(V al(TxtV alue.Text)))4--+Trim (CmbLogic.Text)..iLen#Len(Condition2)0.MsgBox右边字符r4-Right(Condition2,2).+r IfRight(Conditlon2,2)结束T.hen... Condition2Left《Condition2iLen一-2)≯Cmd_AddCondi.En8bIedFalse使添加条件按钮不可用.0TxtSOL=Condition2kIExitSub-Else一0TxtSQL=Condition2..EndIf.C8seD第3种情况日期型数据.●一IfTrim《_TxtV alueText)#Then._0Condition2Condition24-+.Trim (TinIpEngName)++TrimI{CmbComp.Text)+j+_ +~+Trim(CmbLogicText)_EIse.Condition2=Condition24-TrimfT忡EngName)4-+Trim(CmbComp,Text)+?Trjm(TxtV alue.Text)4-…4-Trim(CmbLogic.Text)i√“EndIf|cCmbCompTrim《CmbComp.Text).SelectCasecCmbComP.CaseLikeIfTrim(TxtValue.TemJ~Then.Condition2=Condilcion24-+Trim (TinPEngName)4-~4-Trim(CmbComp.Text)+~%十+%4-TrimICmbLogic.Text)ElseCondition2=Condition24-+Tr.m(Tin1pEngName)4-.+Trim(CmbComP.Text)+%o一串Trim(TxtV alue.Text)+%+Trim(CmbLogic,Text)一. EndIfCaseLeft”IfTrim(TxtValue.Text)=~ThenC~ondition2;Condition24-4-Trim ………………………………………………………实用第一智慧密集(TmpEngName)4-+Like4-…++%+T—m(CmbLogic,Text)ElseCondition2=Condition2++Trim (TmpEngName)++Like+…+Trim(TxtV alue,Text)+%4-Trim(CmbLogic.Text) EndIfCaseRightIfTrim(TxtValue.Text);~Then Condition2zCondition2++Trim (TmpEngName)++Like+%++…+Trim(CmbLogicTeXt)ElseCondition2Condition2++Tr{m (TmpEngName)++Like+%+Trim(TxtV al ue,Text)+…+Trim(CmbLogic.Text) EndlfCaseElseIfTrim(TxtValue.Text)=~Then Condition2=Condition2++Trim(TmpEngName)++Trim{CmbComp.Text)+…+ +…+Trim(CmbLogic.Text)EI$eCondition2=Condition2++Trim (TmpEngName)++Trim(CmbComp.Text)+…+ Trjm(TxtV alue.Te xt)+…+Trim(CmbLogic.Text) EndIfEndSelectiLenLen(Condition2)MsgBox右边字符【+R_ght(conditi0n2,2)+】IfRight(Condition2,2);结束ThenCondition2#Left(Condition2,iLen一2)Cmd_AddCondi.EnablectI=False使添加条件按奄丑不可用. TxtSQLCondition2ExitSubElseT×tsQL=Condition2EndIfEndSelectEndlfEndSub3.模块设计模块用来管理全局常量,全局变量和用户自定义函数等.本例中分别添加了Const模块,用来管理工程中的全局常量; DbFunc模块.用来管理工程中与数据库操作相关的声明,变量和函数;GeneralFunc模块,用来管理工程中一些通用的自定义函数;V ariable模块,用来管理工程中的全局变_量;lni. Manager模块,用来管理从INI文件中读取数据的声明和函数.下面将DbFunc模块主要源程序说明如下: vateSubConnect()连接数据库⑩与DimTmpStatAsLongSQLConnect()函数的返回值如果连接标记为真,则返回否则会出错IfIsConnect=TrueThenExitSubEndIf分配环境甸柄,保存在变量Henv中IfSQLAIIocEnv(Henv)ThenMsgBox无法初始化ODBC环境I.ODBCAPI执行错误CallMsgBox(无法初始化ODBC环境l.vbExclamation.提示…)EndEndIf根据环境句柄分配连接旬柄,保存在变量Hdbc中IfSQLAIIocConnect(Henv.Hdbc)ThenMsgBox无法连接ODBCf,,ODBCAPI执行错误CallMsgBox(无法连接ODBCI,vbExclamation,提示.,)EndEndIf根据连接句柄,数据源,用户名和密码连接指定的数据库TmpStat=SQLConnect{HdbcDSN,Len(DSN),DB_uSERNAME,_Lench(DBUSER_NAME),DB_PASSWORD,Len(DB_PASSWORD))如果连接不成功则退出程序IfTmpStat<>SQL_SUCCESSAnd—TmpStat<>SQLSUCCESS~VVITHJNFOThen MsgBox无法获得连接句柄},,ODBCAPI执行错误CallMsgBox(无法获得连接甸柄{,vbExclamation,提示...)IsConnect=TrueDisconnectEndEndIf设置连接标记IsConnect=TrueEndSubPrivateSubDisconnect()断开与数据库的连接DimRcAsLong如果连接标记为假,标明已经断开连接则直接返回IfIsConnectFalseThenExitSubEndIfRcSQLDisconnect(Hdbc)断开连接Rc=SQLFreeConnect(Hdbc)释放连接句柄释放环境句柄Rc=SQLFreeEnv(Henv)IsConnect=FalseEndSubPublicSubOdbcExt(ByV alTmpSQLstmtAsString) 执行ODBC数据库操作语句lfSQLAIlocStmt(Hdbc.Hstmt)Then根据连接句柄,分配语句句柄CallMsgBox(句柄分配失败i,vbExclamation,提示...)DBapLDisconnectEndEndIfffSQLExecDjrectIHstmt.TmpSQLstrnt,Lench (TmpSQLstmt))ThenCallMsgBox(数据库访问语句执行失败l,vbExclama tion,提示..)MsgBoxTmpSQLstmtDBapiIDisconnectEndEndIfEndSubPublicSubDBdataExt(TmpDataAsData,ByV alTmpSource AsString)执行指定的SQL语句DBapi_Disconnect关闭已有的ODBC连接Data控件连接数据库TmpDataConnect#0DBC;DA TABASE=+DA TABASE一+UID4-DBjjSER_NAME+PWD一+DB_PASSWORD4-:DSN;+DBJ,』AMETmpData.RecordSource=TmpSourceTmpData.RefreshEndSub4.类模块设计.类模块可以封装纠‟对数据库的各种操作.本例中采用自定义类模块封装数据库的各种操作,即数据库中的所有表对应一个类模块,类的属性变量对应表的相应列,类的方法(成员函数)对应表的各种操作,这样将所有与数据库有关的错误都被集中在类模块中,极大地提高r软件开发效率.添加EngChi—Fields类模块,主要作用足进行字段的汉化,核心代码如F:定义变量PublicIdAsIntegerPublicEngNameAsStringPublicChiNameAsStringPublicChiTypeAsString根据”中文名”读取”英文名”PublicFunctionGetlnfoByChiName(ByV alTmpChiNameAs String)AsBooleanIfTmpChiName=ThenGetlnfoByChiNameFalseExitFunctionEndIfChiName=TmpChiNameDB_ConnectSqlStmt=SELECTEngNameFROMEngChiFieldsWHERE ChiName=+Trim(TmpChiName)+…0dbcExtfSqlStmt)ffSQLFetch(Hstmt)=SQLO-DA TA_FOUNDThen GetlnfoByChiName=FalseExitFunctionElseColV al;String(400,0)RcSQLGetData(Hstmt,1.1,ColV a1.Lench{ColV a1), pcblench)EngNameTrimStr(ColV a1)EndIfRe=SQLFreeStmtIHstmt,SQL_DROP) GetlnfoByChiName.TrueDBDisconnectEndFunction根据”字段的数据类型”读取”英文名”. PublicFunctionGetlnfoByChiType(ByV alTmpChiTypeAs String)AsBooleanIfTmpChffypet~ThenGetInfoByChiType=FalseExitFunctionEndIfChiType=TmpChiTypeDB_ConnectSqlStmt=SELECTEngNameFROMEngChiFieldsWHERE ChiType=+Trim(TmpChffype)+…0dbcExtfSqlStmt)IfSQLFetchIHstmt)S0O_DA TA_FOUNDThen GetlnfoByChiType=FalseExitFunctionElseColV al=Stringf(400,0)Rc=SQLGetData(Hstmt.1.1.ColVaLLench(ColVa1), pcblench)EngName=TrimStr(ColVa”EndIfRc=SQLFreeStmt(HstmtSQL_DROP) GetInfoByChiType=TrueDB_DisconnectEndFunction四,结语通过使用VB6.0中标准控件,模块程序,类模块程序,利用SQL语言中的SELECT查询语句实现丁用英文字段名相对应的中文含义名组织动态查询条件(即用中文名进行动态条件组织)的目的.笔者在开发人力资源管理系统中,很好地利用该方法实现丁用户不同的查询要求.此程序只是起到抛砖引玉的作用,大家可以根据自己开发MIS系统的实际要求,借鉴本文所述设计思路,实现属于自己系统的任意条件SQL查询.五,参考文献1.李晓秸,张晓辉,李祥胜.SQLServer2000管理及应用系统开发.人民邮电出版社,20042.高春艳,李艳,谷伟东.VisualBasic数据库开发关键技术与实例应用.人民邮电出版社,2005(收稿日期:2004年4月15日)。
vb6 conn sql2000参数

vb6 conn sql2000参数
在VB6中连接SQL Server 2000,你需要使用ADO(ActiveX Data Objects)来创建一个数据库连接。
以下是一个基本的示例,展示如何设置连接字符串以连接到SQL Server 2000。
```vb
Dim conn As
Set conn = New
' 连接字符串,替换以下占位符为实际值:
' Server: 你的SQL Server 2000的地址
' Database: 要连接的数据库名
' User ID: 用于连接的SQL Server登录的用户名
' Password: 用于连接的SQL Server登录的密码
= "Provider=SQLOLEDB;Data Source=你的服务器地址;Initial Catalog=你的数据库名;User ID=你的用户名;Password=你的密码;"
' 打开连接
' 在这里执行你的SQL查询或命令...
' 关闭连接
Set conn = Nothing
```
注意事项:
1. 请确保已经安装了适当的驱动程序(如SQLOLEDB)以支持与SQL Server的连接。
2. 替换上述代码中的占位符(如服务器地址、数据库名、用户名和密码)为实际的值。
3. 在执行查询或命令后,不要忘记关闭和释放连接。
4. 尽管SQL Server 2000是一个相对较老的版本,但请注意安全性问题,并确保你使用的任何密码或其他敏感信息都是安全的。
vb sql数据库查询语句

vb sql数据库查询语句VB SQL数据库查询语句是一种在VB程序中使用的语言,用于检索和操作数据库中的数据。
数据库查询语句是编写在VB代码中的一段代码,在执行时会连接数据库,并根据指定的条件和需求,从数据库中提取所需要的数据。
本文将以VB SQL数据库查询语句为主题,详细介绍其使用方法和步骤。
第一部分:VB SQL数据库查询语句的基本概念和语法VB SQL数据库查询语句是一种结构化查询语言(SQL),用于在VB程序中与数据库进行交互。
SQL语言由一系列的关键字和特定的语法规则组成,用于查询、插入、更新和删除数据库中的数据。
在VB程序中,可以使用ADO(ActiveX Data Objects)对象模型来连接和操作数据库。
下面是一段基本的VB SQL查询语句的语法:vbDim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim strSQL As String' 连接数据库conn.Open "Provider=SQLOLEDB;DataSource=myServerAddress;Initial Catalog=myDataBase;UserId=myUsername;Password=myPassword;"' 查询语句strSQL = "SELECT * FROM TableName WHERE Condition"' 执行查询rs.Open strSQL, conn' 处理查询结果If Not rs.EOF Then' 循环处理记录集Do Until rs.EOF' 处理每条记录' 可以通过rs.Fields("字段名")获取字段值rs.MoveNextLoopEnd If' 关闭连接和记录集rs.Closeconn.Close在上述代码中,我们首先创建了一个ADODB.Connection对象来连接数据库,然后创建了一个ADODB.Recordset对象来保存查询结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、引言SQL Server是微软推出的中小型网络数据库系统,是目前最常用的数据库系统之一。
随着SQL Server网络数据库应用程序日益增多,这种Web数据库应用系统的正常运行一般依赖于已存在的用户数据库。
创建维护数据库的工作可用SQL Server提供的SQL Enterprise Manager工具来进行,如能提供一种定制的数据库管理工具,通过管理应用程序来管理数据库及其设备,对用户来说无疑是最理想的。
Visual Basic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。
而且Microsoft为其提供了与SQL Server通信的API函数集及工具集,因此它越来越多地用作大型公司数据和客户机—服务器应用程序的前端,与后端的Microsoft SQL Server 相结合,VB能够提供一个高性能的客户机—服务器方案。
二、VB访问SQL Server数据的常用方法使用Visual Basic作为前端开发语言,与SQL Server接口有几种常用的方法,即:①数据访问对象/Jet②为ODBC API编程③使用SQL Server的Visual Basic库(VBSQL)为DB库的API编程④RDO 远程数据对象(RemoteData Objects)⑤ADO 数据对象(Active Data Objects)1、数据访问对象/JetVB支持Data Access Objects(DAOs)的子集。
DAO的方法虽然不是性能最好的管理客户机—服务器之间的对话方式,但它的确有许多优点。
DAO/Jet是为了实现从VB访问Access 数据库而开发的程序接口对象。
使用DAOs访问SQL Server的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQL Server提交SQL语句且返回结果。
下面是一个用DAOs访问SQL Server的VB 实例。
注释:Form DeclarationsDim mydb As DatabaseDim mydynaset As DynasetPrivate Sub Form_Load()Set mydb = OpenDatabase("", False, False, "ODBC; DSN=Myserver; WSID=LCL; DA TABASE = sales")Set mydynaset = mydb CreateDynaset("Select*from Customers")End Sub上述例子是以非独占、非只读方式打开sales数据库,并检索Customers表中的所有字段。
OpenDatabase函数的最后一个参数是ODBC连接字符串参数,它指明了Microsoft Access 连接到SQL Server所需要知道的一些内容。
其中“DSN”为数据源名,“WSID”为工作站名,“DATABASE”为所要访问的数据库名。
2、利用ODBC API编程ODBC(Open Database Connectivity)的思想是访问异种数据库的一种可移植的方式。
与数据资源对话的公用函数组装在一个称为驱动程序管理器(ODBC.DLL)的动态连接中。
应用程序调用驱动程序管理器中的函数,而驱动程序管理器反过来通过驱动器(SQLSRVR.DLL)把它们送到服务器中。
用ODBC API编程,一般要用到以下一些函数。
下面列出了常用的函数以及它们的功能。
(表格1)下面的代码使用上面一些函数先登录到一个服务器数据库,并为随后的工作设置了语句句柄。
Global giHEnv As LongGlobal giHDB As LongGlobal giHStmt As LongDim myResult As integerDim myConnection As SrtingDim myBuff As String*256Dim myBufflen As IntegerIf SQLAllocEnv(giHEnv)<>SQL_SUCCESS ThenMsgBox"Allocation couldn注释:t happen!"End IfIf SQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESS ThenMsgBox "SQL Server couldn注释:t connect!"End IfmyConnection="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABAS E=sales"myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection),m yBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQUIED)myResult=SQLAllocStmt(giHDS,giHStmt)myResult=SQLFreeStmt(giHStmt,SQL_COLSE)rsSQL="Select * from Customers Where City = "Hunan""myResult = SQLExecDirect(giHStmt,rsSQL,Len(rsSQL))3、使用VBSQL对DB库API编程DB库是SQL Server的本地API,SQL Server的Visual Basic库(VBSQL)为Visual Basic 程序员提供API。
从一定意义上说,VBSQL是连接Visual Basic程序到SQL Server的性能最好最直接的方式。
VBSQL包含以下三个文件:VBSQL.VBX:包含库函数,具有访问重要的消息和处理错误的能力VBSQL.BI:包括所有的常量和变量说明VBSQL.HLP:Windows帮助文件,使用VBSQL的指南使用VBSQL时,必须将VBSQL.BI加入到Visual Basic工程文件中,并确保VB程序运行时有VBSQL.VBX文件。
一个典型的VBSQL对话中,一般要用到以下这些函数。
(表格2)一般的DB库API编程的过程是这样的:先通过调用SqlInit对DB库进行初始化,再调用SqlConnection打开一个连接,然后就可做一些工作。
下面的代码是一个初始化DB库并登录到服务器的通用例程。
Private Sub InitializeApplication()DBLIB_VERSION=SqlInit()If DBLIB_VERSION=""ThenMsgBox"Could not initialize DBLIB!Exit application.", MB_ICONEXCLAMA TIONEnd IfEnd SubPrivate Function LoginToServer() As integerloginToServer=SUCCEEDStatus%=SqlSetloginTime%(loginTimeOut)If giSqlConn<>0 ThenSqlClose(giSqlConn) 注释:关闭已打开的连接giSqlConn=SqlOpenConnection(gsServerName, gsLoginID, gsPassword, ProgramName, ProgramName)If giSqlConn<>0 Thenliresuit=SqlUse(giSqlConn,"Sales")ElseLogintoServer=FAILEnd IfEnd Function4、RDO 远程数据对象(RemoteData Objects)要讨论RDO,就必然要谈到DAO。
RDO是从DAO派生出来的,但两者很大的不同在于其数据库模式。
DAO是针对[记录(Records)]和[字段( Fields)],而RDO是作为[行(Rows)]和[列(Columns)]来处理。
也就是说DAO 是ISAM模式,RDO是关系模式。
此外DAO是访问Access 的Jet引擎(Jet是ISAM)的接口,而RDO则是访问ODBC的接口。
可见,RDO是综合了DAO/Jet、VBSQL/DBLib以及ODBC的优点的对象(Object)。
需要强调的是,RDO是包裹着ODBC API的一层薄薄的外壳, 被设计成在后台(服务器端)有数据库存在的前提下运行,同时也是针对SQL Server和Oracle而特别设计的。
RDO的优势在于它完全被集成在VB之中。
此外,直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools的集成化等,也是RDO 的长处。
在RDO的对象和集合中,有很多对数据库的状态和设定进行操作的属性(Property),以及对数据库进行操作的方法(Method)。
利用这些,从RDO2.0起就可以开发事件驱动的数据库应用程序。
RDO对象与VB中其他对象的概念相同。
与VB用的ActiveX控件(以往称为Custom Control或OCX、VBX)相似的是,RDO也带有属性和方法;但同Spread、InputMan等普遍应用的ActiveX控件不同的是,RDO没有自己的用户界面,因而可以和VB标准的Timer控件归为同一类。
当然也可以将RDO看作调用ODBC API函数,进而对后台数据库操作加以控制的对象。
在RDO的属性和方法中,包含了对单个的ODBC API函数以及一连串API函数的调用。
①rdoEngine对象最初调用RDO对象以及RDC(远程数据控件)时,自动生成rdoEngine对象的附带事件(incident)。
rdoEngine用于对RDO全局属性的参数、选项进行设置,是在RDO的阶层结构内处于最上层的对象,包含了所有的其他对象。
rdoEngine对象与DAO/Jet不同,虽然被多个应用程序共享,但体现rdoEngine对象的设定值的属性却并不共用,而是在各自的应用程序的程序界面中对其分别加以设定。
这些设定值对其他使用RDO以及RDC的应用程序没有任何影响。