⑴ vb中如何執行sql語句
Private Sub Command1_Click()
On Error GoTo errhandle
Dim conn As New ADODB.Connection, rs As New ADODB.Recordset
If Trim(Text1.Text) = "" Then
MsgBox "沒有輸入sql語句"
Exit Sub
Else
If Left(Trim(Text1.Text), 6) = "select" Then
MsgBox "不是查詢語句"
Exit Sub
End If
End If
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "test.mdb;Persist Security Info=False"
rs.Open Trim(Text1.Text), conn, adOpenKeyset, adLockOptimistic
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
Set rs = Nothing
Set conn = Nothing
rs.Close
conn.Close
Exit Sub
errhandle:
MsgBox "輸入的sql語句有誤"
End Sub
⑵ vb的sql語句
結構化查詢語言(Structured Query Language)簡稱SQL(發音:/ˈes kjuː ˈel/ "S-Q-L"),是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。
VB可將Sql查詢語句賦值給Adodc數據控制項的屬性或提供給Ado數據對象,完成存取數據以及查詢、更新和管理關系資料庫系統。
⑶ vb怎麼連接sql
一、配置ODBC數據源
1、在控制面板中,雙擊管理工具,然後打開ODBC數據源管理器。
2、在「系統DSN」選項卡中,單擊「添加」按鈕,打開「創建新數據源」對話框,在「名稱」列表框中選擇「SQL Server」。選好單擊完成
3、在打開「建立新的數據源到SQL Server」對話框,在「名稱」文本框輸入新數據源的名稱,描述數據源按理解的方式來寫(隨意)。「伺服器」就選擇要連接到的伺服器。
4、選擇使用用戶輸入登錄的ID和密碼的SQL 驗證
。選連接SQL默認設置
5、再下一步下一步,完成。測試數據源看連接是否成功就行了。成功後按確定。
二、VB中設置連接
1、添加部件Mircrosoft ADO Data Control 6.0(OLEDB),把部件拖到窗體。
2、對ADO部件點右鍵選屬性,選擇使用連接字元串,按生成。
3、選擇Mircosoft OLE DB Providar for SQL Server
按下一步
1、輸入伺服器名稱
2、使用指定的伺服器信息
3、在伺服器上選擇資料庫
這時就選擇在SQL Server建好的資料庫就行了
5、測試連接可以看到連接是否成功。
⑷ 關於SQL和VB的一些區別
sql是資料庫操作語言,VB是計算機語言
VB是利用SQL語言來操作資料庫
⑸ vb 用sql 語句創建資料庫。
啟動VB6.0,新建一個工程,在菜單-工程-引用里選"Microsoft ActiveX Data Objects 2.0 Library",代碼里需要有
dim conn As New ADODB.Connection
定義ADO資料庫對象
conn.ConnectionString = "driver={SQL Server};" & _
"server=" & ServerName & ";uid=" & UserName & ";
pwd=" & Password & ";database=" & DatabaseName & ""
連接數據串
conn.open 連接資料庫
註:ServerName為伺服器名;UserName為用戶名;Password為用戶口令; DatabaseName要登錄的資料庫名,可以為空。
核心代碼如下:
一、建立資料庫
原理:建立資料庫先要初始化一個資料庫設備,然後在此設備上建立資料庫。所有的設備名在系統表"sysdevices"里有記錄,所有的資料庫名在系統表"sysdatabases"里有記錄。在建立之前,最好先查詢這兩個系統表,看名稱是否已經存在。在建立設備之前,還需要的一個物理名和空閑的設備標識號。
初始化設備語法:
DISK INIT NAME="device_name",PHYNAME=
"physical_name",VDEVNO=device_number,
SIZE=numberofblock
說明:這里,NAME是資料庫設備名(一個有效的標識符),PHYNAME(資料庫設備的物理名)是原始的磁碟分區UNIX或外設(vms)名,或者是操作系統的文件名。VDEVNO時資料庫的設備標識號,合法值為1-255,SIZE的單位是2KB的塊,例如1MB(1024KB)時SIZE值為512。
建立資料庫語法:CREATE DATABASE database_name [ON database_device]
說明:database_name是要建的資料庫名,database_device是設備名
要新建立一個資料庫,就需要設備名,資料庫名,物理名和設備號。具體步驟如下:
我們假設用戶要新建立設備dbName,在設備dbName上建立資料庫dbName。
1)得到設備名 bName是用戶給出的設備名;先查詢系統表sysdevices,看用戶給出的設備名dbName是否已經存在,如果此設備名存在,就需要更換一個設備名,因為設備名是唯一的。
sql = "select * from sysdevices
where name=" & dbName & ""
Set rs = conn.Execute(sql)
If Not rs.EOF Then
MsgBox "設備名"" & dbName & ""
已存在!", 16, "請重新輸入名稱"
Exit Sub
End If
2)得到資料庫名。dbName是用戶給出的資料庫名;查詢系統表sysdatabases,看用戶給出的資料庫名dbName是否已經存在,如果此資料庫存在,就需要更換一個資料庫名,像設備名一樣,資料庫名也是唯一的
sql = "select * from sysdatabases
where name=" & dbName & ""
Set rs = conn.Execute(sql) 下面代碼略
3)得到PHYNAME物理名。查詢伺服器上資料庫文件的物理位置serverpath,典型的,我們可以從系統表sysdevices中查詢master(這是SQL Server的主庫名)資料庫的位置,例如G:\MSSQL\DATA\MASTER.DAT,則我們的資料庫可以建在"G:\MSSQL\DATA\"目錄下。
sql = "select name,phyname from sysdevices "
low/16777216為設備號
Set rs = conn.Execute(sql)
然後遍歷記錄對象rs,當name="master"時,取出phyname,
從而可以得到物理位置serverpath =G:\MSSQL\DATA\。
4)得到一個空閑的設備號vdevno。設備號合法值1~255,遍歷這些號,查找出未被使用的空閑設備號,下面程序得到已有的設備號
sql = "select distinct low/16777216
from sysdevices order by low/16777216"
low/16777216為設備號
5)建立資料庫。所需的信息都准備完畢,可以建立資料庫了(註:下面的"" & Chr(34) & ""就是一個"""雙引號,這樣處理後,才能滿足語法要求;資料庫為20M,則dbSize=512*20)
sql = "DISK INIT NAME=" & Chr(34) & ""
& dbName & "" & Chr(34) & ",PHYSNAME="
& Chr(34) & "" & serverpath & "" & dbName
& ".dat" & Chr(34) & ",VDEVNO=" & vdevno
& ",SIZE=" & dbSize & ""
Set rs = conn.Execute(sql) 初始化設備
sql = "CREATE DATABASE " & dbName & "
on " & dbName & "=" & dbSize & ""
註:
第一個dbName是資料庫名,
第二個dbName是設備名
Set rs = conn.Execute(sql)
在設備dbName上建立資料庫dbName
MsgBox "資料庫"" & dbName & ""建在伺服器上
"" & serverpath & "" & dbName & ".dat",
建立成功!", 64, "成功"
⑹ VB如何寫SQL語句
sql="select * from (表格名字) where id='" & text1.text & "' and name='" & text2.text & "' and age="' & text3.text & "' order by id asc"
order by id asc 這句意思是按id升序排列,可寫可不寫。
⑺ vb如何連接sql資料庫
1、打開代碼窗口,添加引用:Imports System.Data.SqlClient。
⑻ vb中怎麼使用sql
select * from 成績表 where 姓名='張大保'
翻譯為中文就是
從「成績表」中選擇所有姓名是「張大保」的記錄
From 從...... From 成績表 就是「從成績表...」的意思
Form 是表格、表單的意思,用在這里是沒意義的
另外在條件前面要加上where,意思就是在什麼地方去找你要的東西
這些都是最基本的,你先把sql的語法搞清楚了再到VB中應用
⑼ vb怎麼執行sql語句
先是定義一個字元串變數,然後把你要寫的SQL語句賦給它。這時如果要把一些VB控制項里的數據加進去也一樣就是一個字元串聯接而以,唯一要注意的是標點符號的使用如:' 這個符號,因為很多時候要用到這個,我碰到好多人都是這里出錯了。例如:Dim strsql As String
strsql = "select * from TblSystemData"
If dh.Text <> " " Then '單號
strsql = strsql & " where ChrCode like " & "'" & dh.Text & "'"
End If
當然你也可以把第一個它移到前面去。但我是單獨放出來,這樣更清楚一點。
接著是執行了。這個你可以看一下二樓的。例如:rst3.Open strsqlm con1_offer, adOpenKeyset, adLockOptimistic, adCmdText
⑽ VB 執行SQL語句
VB中「對象關閉時,不允許操作」解決方案
最近兩天在VB里弄一些小程序,好久沒接觸了,感覺有些陌生了,還算有點基礎吧,遇到一些小的難題基本上都能解決。不過,這下真的遇到難題了,琢磨半天硬是沒弄出結果來,在網上查資料也沒個底,如同大海撈針呀,關鍵是沒一點正經的答案和可行的方案。
問題是這樣的,在VB中執行存儲過程,想輸出返回值並將數據綁定到DataGrid控制項中,本來是件小菜的問題,在.NET、ASP里都做通過,但在VB里卻是折磨了半天也沒弄出來。還是自己動手吧,有問題就得想辦法,一步步來吧。
先在SQL 2000中寫好存儲過程了,(這里不再寫出存儲過程的具體代碼了,也就是一個返回值,一個記錄集)然後在VB中引用ADO對象,輸入如下代碼,以調用存儲過程:
Dim lackconn As New ADODB.Connection
lackconn.ConnectionString=Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=boyd;Initial Catalog=mydb;Data Source=(local)
lackconn.CursorLocation = adUseClient '設置為客戶端
lackconn.Open
Set lackcmd = New ADODB.Command
lackcmd.ActiveConnection = lackconn
lackcmd.CommandText = myproc '這里為存儲過程名稱
lackcmd.CommandType = adCmdStoredProc '指定為存儲過程
Set param = lackcmd.CreateParameter(@num, adInteger, adParamReturnValue, 4) '@num為返回值
lackcmd.Parameters.Append param
Set lackrs = New ADODB.Recordset
Set lackrs = lackcmd.Execute()
msgbox 站點總數: & lackcmd.Parameters(@num).Value & 個
Set mydatagrid.DataSource = lackrs 'mydatagrid為對象名稱
mydatagrid.Refresh '刷新DataGrid
'下面關閉資料庫對象等略去
就這樣的一個簡單的代碼,一運行就出錯,提示錯誤在「Set mydatagrid.DataSource = lackrs」,錯誤就是「對象關閉時,不允許操作」。郁悶ing...,這哪來的錯誤呢?我根本沒關閉資料庫連接,其他內容也是沒有問題的呀。花了很長時間沒能解決,大清早再打開電腦時,靈機一動,搞定了。這里將這種現象作下總結,順便記錄一下本次解決過程。
產生這種現象有幾種原因:
1、資料庫對象連接被關閉了,這肯定會報錯的,當然也不能輸出任何結果的,這時只需注意「先使用、後關閉」就行了,解決這樣的問題就是暫時先不要關閉資料庫連接就行了。
2、返回記錄為空時,也會報錯。如下面的代碼
sql = select * from dbcn where 狀態='0'
Set rs = conn.Execute(sql)
If Not rs.EOF Then
For m = 1 To rs.RecordCount
List_status.AddItem rs(1) & ( & rs(2) & ): & rs(4)
rs.MoveNext
Next m
End If
如果沒有數據的話,這里也會提示這樣的錯誤,將查詢代碼放到SQL查詢分析器里運行一下,果然沒有數據,呵呵。當然這樣的錯誤可以採用一些方法排除或過濾的。
3、這就是我這次所遇到的問題的中心了,我們將目光轉向存儲過程。的確,在SQL查詢分析器里,存儲過程是正常運行,而且不會報錯,也有數據。但仔細想想,因為在存儲過程可能包含了有關SQL語句影響行數的信息,這樣一來也就可能會導致這樣的情況。
打開存儲過程,在begin後面加上一句代碼:set nocount on,屏蔽掉這些信息。OK,VB中的程序巳經能夠正常運行了,而且數據也是正常的。
順便解釋一下吧,打開查詢分析器中的幫助,查找一下有關set nocount on的信息,我們會找到這些東西:
====================================
SET NOCOUNT
使返回的結果中不包含有關受 Transact-SQL 語句影響的行數的信息。
語法
SET NOCOUNT { ON | OFF }
注釋
當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。當 SET NOCOUNT 為 OFF 時,返回計數。
即使當 SET NOCOUNT 為 ON 時,也更新 @@ROWCOUNT 函數。
當 SET NOCOUNT 為 ON 時,將不給客戶端發送存儲過程中的每個語句的 DONE_IN_PROC 信息。當使用 Microsoft® SQL Server™ 提供的實用工具執行查詢時,在 Transact-SQL 語句(如 SELECT、INSERT、UPDATE 和 DELETE)結束時將不會在查詢結果中顯示nn rows affected。
如果存儲過程中包含的一些語句並不返回許多實際的數據,則該設置由於大量減少了網路流量,因此可顯著提高性能。
SET NOCOUNT 設置是在執行或運行時設置,而不是在分析時設置。
許可權
SET NOCOUNT 許可權默認授予所有用戶。
示例
下例在 osql 實用工具或 SQL Server 查詢分析器中執行時,可防止顯示有關受影響的行數的信息。
USE pubs
GO
-- Display the count message.
SELECT au_lname
FROM authors
GO
USE pubs
GO
-- SET NOCOUNT to ON and no longer display the count message.
SET NOCOUNT ON
GO
SELECT au_lname
FROM authors
GO
-- Reset SET NOCOUNT to OFF.
SET NOCOUNT OFF
GO
這里點到為止吧,具體的解釋我想MS的幫助會比我說的更專業更清楚些,參考下吧。