第一篇:SQL簡單語句小結(jié) 數(shù)據(jù)庫菜鳥不可不看
數(shù)據(jù)庫菜鳥不可不看簡單SQL語句小結(jié)
為了大家更容易理解我舉出的SQL語句,本文假定已經(jīng)建立了一個學(xué)生成績管理數(shù)據(jù)庫,全文均以學(xué)生成績的管理為例來描述。
1.在查詢結(jié)果中顯示列名:
a.用as關(guān)鍵字:select name as '姓名' from students order by age
b.直接表示:select name '姓名' from students order by age
2.精確查找:
a.用in限定范圍:select * from students where native in('湖南', '四川')
b.between...and:select * from students where age between 20 and 30
c.“=”:select * from students where name = '李山'
d.like:select * from students where name like '李%'(注意查詢條件中有“%”,則說明是部分匹配,而且還有先后信息在里面,即查找以“李”開頭的匹配項。所以若查詢有“李”的所有對象,應(yīng)該命令:'%李%';若是第二個字為李,則應(yīng)為'_李%'或'_李'或'_李_'。)
e.[]匹配檢查符:select * from courses where cno like '[AC]%'(表示或的關(guān)系,與“in(...)”類似,而且“[]”可以表示范圍,如:select * from courses where cno like '[A-C]%')
3.對于時間類型變量的處理
a.smalldatetime:直接按照字符串處理的方式進行處理,例如:
select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'
4.集函數(shù)
a.count()求和,如:select count(*)from students(求學(xué)生總?cè)藬?shù))
b.avg(列)求平均,如:select avg(mark)from grades where cno=’B2’
c.max(列)和min(列),求最大與最小 5.分組group
常用于統(tǒng)計時,如分組查總數(shù): selectgender,count(sno)
發(fā)表日期:2004-7-23
from students group by gender(查看男女學(xué)生各有多少)
注意:從哪種角度分組就從哪列“group by” 對于多重分組,只需將分組規(guī)則羅列。比如查詢各屆各專業(yè)的男女同學(xué)人數(shù),那么分組規(guī)則有:屆別(grade)、專業(yè)(mno)和性別(gender),所以有“group by grade, mno, gender”
select grade, mno, gender, count(*)from students
group by grade, mno, gender
通常group還和having聯(lián)用,比如查詢1門課以上不及格的學(xué)生,則按學(xué)號(sno)分類有:
selectsno,count(*)from gradeswhere mark<60 group by sno having count(*)>16.UNION聯(lián)合 合并查詢結(jié)果,如: SELECT * FROM students WHERE name like ‘張%’ UNION [ALL]
SELECT * FROM students WHERE name like ‘李%’ 7.多表查詢 a.內(nèi)連接
selectg.sno,s.name,c.coursename
from grades g JOIN students s ON g.sno=s.sno JOIN courses c ON g.cno=c.cno(注意可以引用別名)b.外連接 b1.左連接
selectcourses.cno,max(coursename),count(sno)from courses LEFT JOIN
grades
ON
courses.cno=grades.cno
group by courses.cno
左連接特點:顯示全部左邊表中的所有項目,即使其中有些項中的數(shù)據(jù)未填寫完全。
左外連接返回那些存在于左表而右表中卻沒有的行,再加上內(nèi)連接的行。
b2.右連接 與左連接類似 b3.全連接
selectsno,name,major from students FULL JOIN
majors
ON
students.mno=majors.mno
兩邊表中的內(nèi)容全部顯示 c.自身連接
select
c1.cno,c1.coursename,c1.pno,c2.coursename
from courses c1,courses c2 where c1.pno=c2.cno 采用別名解決問題。d.交叉連接
selectlastname+firstname from lastname CROSS JOIN firstanme
相當(dāng)于做笛卡兒積 8.嵌套查詢
a.用關(guān)鍵字IN,如查詢李山的同鄉(xiāng): select * from students
where native in(select native from students where name=’李山’)
b.使用關(guān)鍵字EXIST,比如,下面兩句是等價的: select * from students
wheresno in(select sno from grades where cno=’B2’)
select * from students where exists(select * from grades where
grades.sno=students.sno AND cno=’B2’)9.關(guān)于排序order
a.對于排序order,有兩種方法:asc升序和desc降序
b.對于排序order,可以按照查詢條件中的某項排列,而且這項可用數(shù)字表示,如:
selectsno,count(*),avg(mark)from gradesgroup by sno havingavg(mark)>85 order by 310.其他
a.對于有空格的識別名稱,應(yīng)該用“[]”括住。b.對于某列中沒有數(shù)據(jù)的特定查詢可以用null判斷,如select sno,courseno from grades where mark IS NULL
c.注意區(qū)分在嵌套查詢中使用的any與all的區(qū)別,any相當(dāng)于邏輯運算“||”而all則相當(dāng)于邏輯運算“&&”
d.注意在做否定意義的查詢是小心進入陷阱: 如,沒有選修‘B2’課程的學(xué)生: select students.* from students, grades wherestudents.sno=grades.sno AND grades.cno<> ’B2’
上面的查詢方式是錯誤的,正確方式見下方: select * from students
where not exists(select * from gradeswheregrades.sno=students.sno AND cno='B2')11.關(guān)于有難度多重嵌套查詢的解決思想: 如,選修了全部課程的學(xué)生: select * from students
where not exists(select * from courses where NOT EXISTS(select * from grades
wheresno=students.sno AND cno=courses.cno))
最外一重:從學(xué)生表中選,排除那些有課沒選的。用not exist。由于討論對象是課程,所以第二重查詢從course表中找,排除那些選了課的即可。
第二篇:數(shù)據(jù)庫SQL語句十題
作業(yè)十題
1.查詢所有學(xué)生的基本信息,并按學(xué)號降序排列
SELECT * FROM STUDENT
ORDER BY sno DESC;
2.查詢系別代碼為“02”的女同學(xué)信息
SELECT * FROM STUDENT
WHERE ssex=’女’ and sdept=‘02’;
3.查詢學(xué)生的總?cè)藬?shù)
SELECT COUNT(*)AS 學(xué)生總?cè)藬?shù)
FROM STUDENT;
4.所有選修課學(xué)生的姓名,課程名及成績
SELECT sname,cname,grade
FROM STUDENT,COURSE,SC
WHERE STUDENT.sno=SC.sno and COURSE.cno=SC.cno;
5.不及格學(xué)生姓名(合并重復(fù)項)
SELECT distinct sname
FROM SC,STUDENT
WHERE grade<=60 and STUDENT.sno=SC.sno;
6.查詢學(xué)號為“011110”的學(xué)生的哪些課程的成績比他數(shù)據(jù)庫的成績要高 SELECT cno
FROM COURSE
WHERE sno=’011110’ and grade>(SELECT grade FROM COURSE,SC
WHERE cname=’數(shù)據(jù)庫’ and sno=‘011110’ and
COURSE.cno=SC.cno);
7.查詢選修課在3門以上(包括3門)的學(xué)生學(xué)號及選課門數(shù) SELECT sno,COUNT(*)AS 選修門數(shù)
FROM SC
GROUP BY sno HAVING COUNT(*)>=3;
8.查詢學(xué)號為“011110”的學(xué)生的平均成績,并以平均成績命名 SELECT AVG(grade)AS average grade
FROM SC
WHERE sno=’011110’;
9.查詢計算機系或英語系的所有學(xué)生的個人信息
SELECT*FROM STUDENT
WHERE sdeptIN(SELECT sdept FROM DEPT
WHERE sdname=’計算機系’OR sdname=’英語系’);
10.查詢與“羅宇波”同一個系的學(xué)生情況
SELECT * FROM STUDENT
WHERE sdept=(SELECT sdept FROM STUDENT
WHERE sname=’羅宇波’);
第三篇:簡單SQL語句小結(jié)
簡單SQL語句小結(jié)
注釋:本文假定已經(jīng)建立了一個學(xué)生成績管理數(shù)據(jù)庫,全文均以學(xué)生成績的管理為例來描述。1.在查詢結(jié)果中顯示列名:
a.用as關(guān)鍵字:select name as '姓名' from students order by age b.直接表示:select name '姓名' from students order by age 2.精確查找: a.用in限定范圍:select *
from students
where native in('湖南', '四川')b.between...and:select * from students where age between 20 and 30 c.“=”:select * from students where name = '李山' c.like: select * from students where name like '李%'(注意查詢條件中有“%”,則說明是部分匹配,而且還有先后信息在里面,即查找以“李”開頭的匹配項。所以若查詢有“李”的所有對象,應(yīng)該命令:'%李%';若是第二個字為李,則應(yīng)為'_李%'或'_李'或'_李_'。)e.[] 匹配檢查符:select * from courses where cno like '[AC]%'(表示或的關(guān)系,與“in(...)”類似,而且“[]”可以表示范圍,如:select * from courses where cno like '[A-C]%')3.對于時間類型變量的處理
a.smalldatetime:直接按照字符串處理的方式進行處理,例如:
select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'
4.集函數(shù)
a.count()求和,如:select count(*)
from students(求學(xué)生總?cè)藬?shù))b.avg(列)求平均,如:select avg(mark)
from grades
where cno=’B2’
c.max(列)和min(列),求最大與最小 5.分組group:常用于統(tǒng)計時,如分組查總數(shù):
select gender,count(sno)from students group by gender(查看男女學(xué)生各有多少)
注意:從哪種角度分組就從哪列“group by”
對于多重分組,只需將分組規(guī)則羅列。比如查詢各屆各專業(yè)的男女同學(xué)人數(shù),那么分組規(guī)則有:屆別(grade)、專業(yè)(mno)和性別(gender),所以有“group by grade, mno, gender” select grade, mno, gender, count(*)from students group by grade, mno, gender
通常group還和having聯(lián)用,比如查詢1門課以上不及格的學(xué)生,則按學(xué)號(sno)分類有:
select sno,count(*)from grades where mark<60 group by sno having count(*)>1
6.UNION聯(lián)合
合并查詢結(jié)果,如:
SELECT * FROM students WHERE name like ‘張%’
UNION [ALL] SELECT * FROM students WHERE name like ‘李%’
7.多表查詢
a.內(nèi)連接
select g.sno,s.name,c.coursename from grades g JOIN students s ON g.sno=s.sno JOIN courses c ON g.cno=c.cno(注意可以引用別名)
b.外連接
b1.左連接
select courses.cno,max(coursename),count(sno)from courses LEFT JOIN grades ON courses.cno=grades.cno group by courses.cno
左連接特點:顯示全部左邊表中的所有項目,即使其中有些項中的數(shù)據(jù)未填寫完全。
左外連接返回那些存在于左表而右表中卻沒有的行,再加上內(nèi)連接的行。
b2.右連接
與左連接類似
b3.全連接
select sno,name,major from students FULL JOIN majors ON students.mno=majors.mno
兩邊表中的內(nèi)容全部顯示
c.自身連接
select c1.cno,c1.coursename,c1.pno,c2.coursename from courses c1,courses c2 where c1.pno=c2.cno
采用別名解決問題。
d.交叉連接
select lastname firstname from lastname CROSS JOIN firstanme
相當(dāng)于做笛卡兒積
8.嵌套查詢
a.用關(guān)鍵字IN,如查詢李山的同鄉(xiāng):
select * from students where native in(select native from students where name=’ 李山’)
b.使用關(guān)鍵字EXIST,比如,下面兩句是等價的:
select * from students where sno in(select sno from grades where cno=’B2’)
select * from students where exists(select * from grades where grades.sno=students.sno AND cno=’B2’)
9.關(guān)于排序order
a.對于排序order,有兩種方法:asc升序和desc降序
b.對于排序order,可以按照查詢條件中的某項排列,而且這項可用數(shù)字表示,如:
select sno,count(*),avg(mark)from grades group by sno having avg(mark)>85 order by 3 10.其他
a.對于有空格的識別名稱,應(yīng)該用“[]”括住。
b.對于某列中沒有數(shù)據(jù)的特定查詢可以用null判斷,如: select sno, courseno from grades where mark IS NULL
c.注意區(qū)分在嵌套查詢中使用的any與all的區(qū)別,any相當(dāng)于邏輯運算“||”而all則相當(dāng)于邏輯運算“&&”
d.注意在做否定意義的查詢是小心進入陷阱:
如,沒有選修‘B2’課程的學(xué)生 :
select students.* from students, grades where students.sno=grades.sno AND grades.cno <> ’B2’
上面的查詢方式是錯誤的,正確方式見下方:
select * from students where not exists(select * from grades where grades.sno=students.sno AND cno='B2')
11.關(guān)于有難度多重嵌套查詢的解決思想:
如,選修了全部課程的學(xué)生:
select * from students where not exists(select * from courses where NOT EXISTS(select * from grades where sno=students.sno AND cno=courses.cno))
最外一重:從學(xué)生表中選,排除那些有課沒選的。用not exist。由于討論對象是課程,所以第二重查詢從course表中找,排除那些選了課的即可。
第四篇:SQL數(shù)據(jù)庫編程學(xué)習(xí)應(yīng)用語句
SQL數(shù)據(jù)庫編程學(xué)習(xí)應(yīng)用語句大全
1as 的用處
as可以對表和列取別名
在開發(fā)過程中經(jīng)常遇到開始給某一個的字段去field1的名稱,但后來有感覺field1字段指定不確切,于是又把此字段改成了field2,由于開始認(rèn)為field1是常量,于是到處使用字符串field1,而且程序中又含有大量對field1的處理,此時就可以使用as
例如原來的 select field1 from tableA,改為selectfield2 asfield1 from tableA 代碼基本就可以不動了。
2自增長的字段的插入
開發(fā)中經(jīng)常遇到某個字段類型為IDENTITY,也就是自增長類型,但由于特殊需要,又要插入數(shù)據(jù)
需要臨時去掉,可以使用如下語句set IDENTITY_INSERTtablename on,在處理完成后在使用如下語句恢復(fù) set IDENTITY_INSERTtablenameoff
3分組取每組的前N個數(shù)據(jù)
開發(fā)中還會遇到需要對某一組數(shù)據(jù)先分組,然后取每組的前n條記錄的情況
不妨試試如下代碼
[sql] view plaincopy
/*
按CurrentNodeLevel列分組,每組按NodeID排序,取出每個組中的前3個元素*/
declare @temp table(NodeIDint, CurrentNodeLevelint ,rowNumberint)--定義臨時表insert into @temp
selectNodeID,CurrentNodeLevel,ROW_NUMBER()
OVER(partitionby CurrentNodeLevel
order by NodeID)as rowNumber
from SchoolTerminalStruct---給臨時表中插入數(shù)據(jù)
select * from @temp where rowNumber<=3--從臨時表中取數(shù)據(jù)
4生成隨機數(shù)
主意此方法只能寫成存儲過程,不能寫成函數(shù)
[sql] view plaincopy
-----返回Max,Min之間的隨機數(shù)不能寫成函數(shù)
createproc [dbo].[getRAND]
(@Max int,--最大值
@Min int--,--最小值)
AS
BEGIN
DECLARE @result int
SELECT @result=RAND()*(@Max-@Min)+@Min
select@result
END
5把滿足一定條件的數(shù)據(jù)用逗號分隔
這可能也是一個很常用的語句了,經(jīng)常出現(xiàn)在一對多的關(guān)系中對外展示,要求把子表中的數(shù)據(jù)取出來用逗號或者其他符號分隔開
[sql] view plaincopy
/*
把滿足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗號分隔開合并為一個字段輸出
*/
select *,stuff((select ',' + t1.NodeName from tableA t1,tableB t2
wheret2.NodeID=t1.NodeID
for xml path('')), 1 , 1 , '')as text
fromtableA
6在數(shù)據(jù)庫中處理異常
通過個參數(shù)附加output標(biāo)志來輸出參數(shù),通過TRY,CATCH捕捉異常
[sql] view plaincopy
CREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]
@nodenameint,@Result int output---2,操作失?。?操作成功
AS
BEGIN
begin
BEGIN TRY
UPDATE FunctionTree SET NodeName=@nodename
set @Result=0--操作成功
END TRY
BEGIN CATCH
set @Result=-2--操作失敗
END CATCH
end
END
7查詢中的條件判斷
經(jīng)常遇到在某些條件下應(yīng)該查詢這個字段,在另外一些條件下需要其他字段的情況,可以通過unoin來完成,但也可以通過CASE WHEN 完成[sql] view plaincopy
/*
在State=0 時返回field1 ,在State=1時返回 field2 ,其他時返回field3
*/
SELECT(CASE WHENState=0 THEN field1 WHENState=1 THEN field2
ELSE field3 END)as State
FROM tablename
8單引號的處理
在包含單引號時應(yīng)該使用兩個單引號轉(zhuǎn)義
[sql] view plaincopy
dbo.sp_executesql @statement = N' select indexID,Sex=(case when Sex=0then ''男'' else ''女'' end)
fromtablename '
9使用游標(biāo)
[sql] view plaincopy
declare @temp table(TaskIDint ,NodeIdint)--聲明臨時表
insert into @temp select A.TaskID ,A.NodeIdfrom tableAA,tableB B
whereA.TaskID=B.TaskID--//--給聲明的臨時表中插入記錄
DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--聲明游標(biāo)
FOR select TaskID,NodeId from @temp;--游標(biāo)需要用到的列
open tnames_cursor--打開游標(biāo)
DECLARE @TaskIDint,@NodeIdint;--聲明變量
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移動游標(biāo)給變量賦值,應(yīng)該與游標(biāo)需要用到的列一一對應(yīng),順序類型應(yīng)該一致
WHILE(@@FETCH_STATUS = 0)--循環(huán)
BEGIN
BEGIN
exec TaskType @TaskID,@NodeId--調(diào)用存儲過程
END
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移動游標(biāo)給變量賦值 應(yīng)該與游標(biāo)需要用到的列一一對應(yīng),順序類型應(yīng)該一致
END
CLOSE tnames_cursor--關(guān)閉游標(biāo)
DEALLOCATE tnames_cursor--釋放游標(biāo)
10合并更新和插入
在開發(fā)中大部分情況下,插入和更新傳遞的參數(shù)基本上是一樣,那為什么不合并呢
[sql] view plaincopy
createproc [dbo].[Save_TableName]
(@field1 varchar(50),@field2varchar(200),@ID int,@insertOrUpdate--小于0插入 大于0更新)
as
begin
if(@insertOrUpdate<0)
begin
INSERT INTOTableName(field1,field2,ID)
values(@field1,@field2,@ID);
end
else
begin
UPDATE TableNameSET field1= @field1, field2 = @field2
where ID =@ID;
end
end
11定義函數(shù)
在沒有滿足要求的情況時,可以定義函數(shù),但是使用自己定義的函數(shù)時需要加上架構(gòu)名稱
[sql] view plaincopy
create FUNCTION [dbo].[CheckTime]
(@startTimedatetime,@endTimedatetime--,)
RETURNSint
AS
BEGIN
DECLARE @result int
SET@result=DATEDIFF(hour, @startTime, @endTime)--
if(@result=0)--小時相同 比較分鐘
begin
SET@result=DATEDIFF(minute, @startTime, @endTime)
if(@result=0)--分鐘相同比較秒
begin
SET@result=DATEDIFF(second, @startTime, @endTime)
end
end
RETURN @result
END
調(diào)用此函數(shù)
[sql] view plaincopy
dbo.CheckTime(@startTime1, @startTime2)--需要加上架構(gòu)名稱
12遞歸讀取數(shù)據(jù)
在實際的應(yīng)用中經(jīng)常遇到樹結(jié)構(gòu)的表,但讀取會比較麻煩,這里提夠一個函數(shù)
[sql] view plaincopy
/*
函數(shù) 返回表,返回給定節(jié)點的所有子孫節(jié)點,而不僅僅是子節(jié)點
*/
Create Function [dbo].[GetChildren](@NodeIDInt)
Returns @Tree Table(NodeIDInt, NodeNameVarchar(50), ParentIDInt)
As
Begin
Insert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeID
While @@Rowcount> 0
Insert @Tree Select A.NodeID, A.NodeName, A.ParentID
From Treetable A
Inner Join @Tree B
On A.ParentID = B.NodeIDAndA.NodeID Not In(Select NodeID From @Tree)Return
End
13通過默認(rèn)值實現(xiàn)存儲過程重載
存儲過程可以使用默認(rèn)值,估計都知道,但以此就可以實現(xiàn)類似函數(shù)重載的效果
例如,如下的存儲過程由于使用了默認(rèn)值,就可以不傳遞參數(shù),傳遞一個參數(shù),兩個,三個,[sql] view plaincopy
CREATE PROCEDURE dbo.my_proc
@firstint = NULL,--NULL default value
@secondint = 2,--Default value of 2
@thirdint = 3--Default value of 3
AS SELECT @first, @second, @third;
14在數(shù)據(jù)庫中拼字符串,也可以用參數(shù)
在實際的開發(fā)中,某些情況下在數(shù)據(jù)庫中拼字符串不可避免,但又擔(dān)心有特殊字符,導(dǎo)致拼出來的SQL有問題,其實數(shù)據(jù)庫中拼字符串也可以使用參數(shù),這就要用到dbo.sp_executesql,這樣就可以避免SQL注入和特殊字符導(dǎo)致的錯誤
如
[sql] view plaincopy
DECLARE @IntVariable INT;--定義變量
DECLARE @SQLString NVARCHAR(500);--存儲拼出來的SQL
DECLARE @ParmDefinition NVARCHAR(500);---存儲拼出來的SQL中的參數(shù)
/* Build the SQL string one time.*/
SET @SQLString =
N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';/* Specify the parameter format one time.*/
SET @ParmDefinition = N'@SalesIDint';--賦值
/* Execute the string with the first parameter value.*/
SET @IntVariable = 275;--賦值
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
/* Execute the same string with the second parameter value.*/
SET @IntVariable = 276;
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
16觸發(fā)器需要注意的問題
在使用觸發(fā)器時有一個問題,或許很少有人注意到,一條更新語句一次更新了十條記錄,會觸發(fā)幾次觸發(fā)器?只有一次!很奇怪,但卻是事實,所以這需要注意,一不小心就會把好
多數(shù)據(jù)漏了
第五篇:VB數(shù)據(jù)庫SQL語句學(xué)習(xí)
1.Select * from student查詢所有原始記錄
2.Select StudentID, StudentName from student 只查詢學(xué)號和姓名
3.Select StudentID as 學(xué)號, StudentName as 姓名, Sex as 性別,Class as 班級,NormalScore as平時成績,ExperimentScore as 實驗成績, ExaminationScore as 考試成績 from student
4.Select * from student where sex=’男’只需要查看男生的成績
5.Select * from student where NormalScore>80只需要查看平時成績大于80分的記錄
6.Select * from student where studentname like ‘陳%’查詢姓陳的同學(xué)的記錄
7.Select * from student order by examinationScore根據(jù)考試成績排序
8.Select * from student order by examinationScore排序---降序
9.Select Sum(examinationScore)as 總成績 from student求總成績
10.Select Avg(examinationScore)as平均成績 from student求平均成績
11.Select count(*)as 總記錄數(shù) from student求總記錄數(shù)
12.Select Max(ExaminationScore)as 最高分 from student求最高分
13.Select Min(ExaminationScore)as 最高低分 from student求最低分
14.Select Class as 班級, Avg(ExaminationScore)as平均成績 from student group by class各班級成績的分類匯總
Public Class frmMain
Private ObjCnn As New OleDbConnection
Private ObjCmd As OleDbCommand
Private StrDir As String = “D:MIS1025StudentMgr.accdb”
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)Handles MyBase.Load
ObjCnn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & StrDir
ObjCnn.Open()
ObjCmd = New OleDbCommand
ObjCmd.Connection = ObjCnn
End Sub
Private Sub FindRecord(ByVal StrSQL As String)
ObjCmd.CommandText = StrSQL
Dim rd As OleDbDataReader = ObjCmd.ExecuteReader
Dim tbl As New DataTable
tbl.Load(rd)
DataGridView1.DataSource = tbl
End Sub
Private Sub CmdFind_Click(ByVal sender As System.Object,System.EventArgs)Handles CmdFind.Click
FindRecord(txtSQL.Text)
End Sub ByVal e As