真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于eofvb.net的信息

新手關(guān)于VB.net的問題

您好,在Visual Basic.NET中,是沒有像這樣的文件I/O操作的,一般都是通過System.IO.StreamReader和System.IO.StreamWriter類,System.IO.BinaryReader和System.IO.BinaryWriter類來讀寫文件以及利用My.Computer.FileSystem類讀寫文件,利用System.IO.Filestream類來創(chuàng)建文件,通過引用Microsoft Scripting Runtime來執(zhí)行文件(夾)和驅(qū)動器的特殊操作,常用的是System.IO.StreamReader和System.IO.StreamWriter類。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、羅定網(wǎng)絡(luò)推廣、微信小程序開發(fā)、羅定網(wǎng)絡(luò)營銷、羅定企業(yè)策劃、羅定品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供羅定建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

例如說要讀取一個文件,我們可以利用System.IO.StreamReader類編寫一個方法(也就是函數(shù)),但是首先要在當(dāng)前類的開頭添加一個引用,引用名稱:System.IO,添加引用的代碼如下

Imports System.IO

添加引用之后,就在當(dāng)前類的內(nèi)部創(chuàng)建方法:

Private Function ReadFile(ByVal FileURL As String) As String

Dim sr As StreamReader = New StreamReader(FileURL)

ReadFile = sr.ReadToEnd()

sr.Close()

sr = Nothing

End Function

示例說明:

該方法是一個返回String(字符串)數(shù)據(jù)的函數(shù),F(xiàn)ileURL作為參數(shù)是用來存放需要訪問的文件的URL,當(dāng)然,要獲取一個文件的URL,就是利用這一句代碼實現(xiàn)的:

Dim sr As StreamReader = New StreamReader(FileURL)

當(dāng)獲取了URL之后,就要對文件進行讀取操作了,然后將讀取的結(jié)果返回給方法:

ReadFile = sr.ReadToEnd()

讀取文件完畢之后,要對文件執(zhí)行關(guān)閉操作:

sr.Close()

當(dāng)然別忘了清理資源:

sr = Nothing

StreamReader類可以從流或文件中讀取字符,在創(chuàng)建StreamREader類的對象時,可以指定一個流對象,也可以指定一個文件URL,創(chuàng)建對象后就可以調(diào)用他的方法,從流中讀取數(shù)據(jù),其常用方法如下:

Peek:返回下一個可用字符,但不使用它。

Read:讀取輸入流中下一個字符或一組字符并移動流或文件指針。

ReadBlock:從當(dāng)前流中讀取最大數(shù)量字符并從index開始將數(shù)據(jù)寫入buffer。

ReadLine:從當(dāng)前流中讀取一行字符并將字符作為String返回。

REadToEnd:從流的當(dāng)前位置到末尾讀取流。

Close:關(guān)閉打開的對象,釋放資源。

注:流,一種新的數(shù)據(jù)格式,這種格式可通過System.IO命名空間下的類訪問。流用Stream類表示,所有的流都是從這個類中繼承的。流向用戶提供了一個一般的數(shù)據(jù)視圖,隱藏了操作系統(tǒng)和底層設(shè)備的實現(xiàn)細節(jié),所有的流都支持讀寫操作。在打開文件時將返回對應(yīng)的流對象,用戶可以對流對象進行讀寫操作。

如果要對文件執(zhí)行按行讀取操作,這時就會用到枚舉,這時候,代碼就要更改一下了:

Private Function ReadFile(ByVal FileURL As String) As String

Dim sr As StreamReader = New StreamReader(FileURL)

For Each fLine As String In sr.ReadToEnd()

Line = sr.ReadLine()

ReadFile = ReadFile fLine

Next sr.ReadLine

sr.Close()

End Function

示例說明:

For Each…Next:派生于For…Next循環(huán),用于枚舉一系列對象中的成員,而這些對象組成集合,如果集合中至少存在一個元素,程序就會靜茹For Each塊執(zhí)行。其格式如下:

For Each 元素 [As 數(shù)據(jù)類型] In 元素集合

[循環(huán)體]

[Exit For]

[循環(huán)體]

Next [元素]

比如:

Dim CountNumber As ULong = 0

Dim FolderName() As String = New String() {" "}

For Each strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")

CountNumber = CountNumber + 1

ReDim Preserve FolderName(1 To CountNumber)

FolderName = strFolder

Next strFolder

注:My.Computer.FileSystem.GetDirectories:主要用來枚舉指定目錄的子文件夾。

Preserve:主要用來避免重定義數(shù)組而不損失數(shù)組元素的原有數(shù)據(jù)。

另外,利用My.Computer.FileSystem也可以實現(xiàn)文件的讀取,其代碼如下:

Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")

示例說明:

定義一個字符串變量利用My.Computer.FileSystem.ReadAllText來實現(xiàn)對“C:\test.txt”的讀取。

如果是已經(jīng)編碼的文本,則可以使用My.Computer.FileSystem對象中的ReadAllText方法并提供路徑和文件編碼類型,將文本寫入字符串變量中,例如:

Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt", _

System.Text.Encoding.UTF32)

當(dāng)然,System.Text.Encoding的成員不止一個,它還有如下成員:

System.Text.Encoding.UTF8

System.Text.Encoding.UTF16

System.Text.Encoding.ASCII

System.Text.Encoding.Unicode

這些是常見的成員,也是主要的成員。

另外,利用My.Computer.Filesystem類無法實現(xiàn)文件的行操作,還有,如果您的計算機未安裝完整的Microsoft.NET Framework Runtime,則無法實現(xiàn)這種操作!

寫入文件的操作同樣簡單,Visual Basic.NET 允許用戶使用StreamWriter來對文件寫入內(nèi)容,下面就讓我們來創(chuàng)建一個子例程,來實現(xiàn)文件的寫入:

Private Sub WriterFile(ByVal FileURL As String, ByVal FileCon As String)

Dim sr As StreamWriter = New StreamWriter(FileURL)

sr.Write(FileCon)

sr.Close()

sr = Nothing

End Sub

示例說明:

sr.Write(FileCon):將FileCon寫入文件FileURL之中。

另外,StreamWriter常用方法如下:

WriteLine:向流中寫入一行,后面跟結(jié)束符。

Write:寫入流,向流對象中寫入字符并移動流或文件指針。

Close:關(guān)閉打開的對象,釋放資源。

附:Visual Basic 6.0文件操作解說:

打開: Open 文件名 For Input | Output | Append As [#]文件號

Input打開讀入,文件不存在報錯。Output打開覆蓋寫入,文件不存在則創(chuàng)建。Append打 開追加寫入,文件不存在則創(chuàng)建。

讀: Line Input #文件號, 字符串變量

讀一行數(shù)據(jù)存入字符串變量,數(shù)據(jù)包括空格、Tab、等,不包括回車符和換行符,所以要顯示文件的換行效果,要手動添加回車符和換行符(vbCrLf)

Input #文件號, 變量1[, | ;] [變量2]...

這種方式可以存入多個變量,而且變量類型不限于字符串型。

寫: Print #文件號, 參數(shù)1[, | ;] [參數(shù)2]...

將各參數(shù)逐個寫入文件。參數(shù)間用逗號隔開時,文件中相應(yīng)插入多個空格;用分號隔開時,插入一個空格。可以用Spc(n)、Tab(n)等進行排版。

Write #文件號, 參數(shù)1[, | ;] [參數(shù)2]...

這種寫入方式將自動添加界定符,對不同參數(shù)的類型加以界定。

Visual Basic 6.0文件操作函數(shù):

Seek: Seek(文件號)

返回文件正在訪問的位置,返回值為長整型。對順序文件和二進制文件,返回值以字節(jié)為單位;對隨機訪問文件,返回值以記錄號為單位。

Seek: Seek [#]文件號,位置

定位文件到指定位置。位置單位同上所述。

Input: Input (字節(jié)數(shù),[#]文件號)

從文件的訪問當(dāng)前位置讀入指定字節(jié)數(shù)的數(shù)據(jù)。僅適用于順序文件和二進制文件。

EOF: EOF(文件號)

判斷文件的訪問位置是否在文件尾,如果是,返回True,否則,返回False。

LOF: LOF(文件號)

返回文件長度,單位為字節(jié)。

FileLen: FileLen (文件名)

返回文件名對應(yīng)文件的長度,單位是字節(jié)。該函數(shù)取磁盤文件標識中的長度,即文件打開前的長度,可以取未打開的文件長度。

GetAttr: GetAttr (Pathname)

返回指定文件或文件夾的屬性。

FileAttr: FileAttr (文件號)

返回文件號對應(yīng)文件的打開方式。

GetDateTime: GetDateTime (Pathname)

返回文件被創(chuàng)建或修改的最后日期和時間。

Free: FreeFile[(0|1)]

返回未被占用的文件號,F(xiàn)ree或Free(0)返回1~255之間未占用的文件號,F(xiàn)ree(1)返回256~511之間未占用的文件。

Dir: Dir (Pathname [,Attributes])

測試指定路徑是否有某文件,Attributes附加文件屬性條件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory。

Kill: Kill (文件名)

刪除指定文件,文件名可包含路徑。

FileCopy: FileCopy 源文件,目標文件

拷貝文件。

Name: Name 舊文件名 As 新文件名

文件重命名。前后路徑不一致時,操作為移動文件并重命名。

MkDir: MkDir path

新建文件夾。

RmDir: Rmdir path

刪除文件夾。

ChDrive: ChDrive Drive

改變當(dāng)前驅(qū)動器 ChDrive "D"

CurDir: CurDir [(driver)]

返回當(dāng)前工作路徑,指定driver則返回目標驅(qū)動器的當(dāng)前工作路徑。

舉例:

'新建文件,并寫入數(shù)據(jù),關(guān)閉

Open "a.txt" For Output As #1

Print #1, "ABCDEFG"; vbCrLf; "HIJK"

Close #1

'打開文件,并全部寫入新文件,關(guān)閉

Open "a.txt" For Input As #2

Open "b.txt" For Output As #3

Dim str As String

While (Not EOF(2))

Line Input #2, str

Print #3, str

Wend

Close

注:關(guān)于Visual Basic 6.0的文件操作資料來自于

如果您覺得我的回答幫助了您解決難題,別忘了采納哦,如果我的回答未能解決您的問題,您可以在互聯(lián)網(wǎng)上尋找更多的解決方案!

vb.net 二進制讀取文件

VB.NET打開二進制文件用fileopen完成,打開二進制文件的形式為:openmode.binary

讀取二進制文件用的是fileget方法,寫入二進制文件用的是fileput方法。

應(yīng)用示例:將一批隨機數(shù)保存在一個dat文件中,然后再將其提取到文本框中。

二進制文件的讀寫一批隨機數(shù)的存取,程序為:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim x, i, fn As Integer

Dim s As String = ""

fn = FreeFile()

FileOpen(fn, "d:\data.dat", OpenMode.Binary)

For i = 1 To 8

x = Int(Rnd() * 100)

s = s + Str(x)

FilePut(fn, x)

Next

FileClose(fn)

TextBox1.Text = s

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim x, fn As Integer

Dim s As String = ""

fn = FreeFile()

FileOpen(fn, "d:\data.dat", OpenMode.Binary)

Do While Not EOF(fn)

FileGet(fn, x)

s = s + Str(x) + " "

Loop

FileClose(fn)

TextBox1.Text = s

End Sub

VB.NET連接access數(shù)據(jù)庫文件時提示“無效的授權(quán)說明”

數(shù)據(jù)庫與文本文件返回數(shù)據(jù)的方法不同.如果把文本文件比作一個Textbox 的話,那么數(shù)據(jù)庫更像是一個ListBox.使用文本文件時我們需要從整個Textbox中取出有用的信息,并進行處理,而Listbox則可以根據(jù)需要返回特定的某一項.

由于VB本身并不帶有可以訪問數(shù)據(jù)庫的類,所以我們需要引用一個包含能訪問數(shù)據(jù)庫的類來使用數(shù)據(jù)庫.這里我們采用ADODB,相比DAO和能訪問數(shù)據(jù)庫的API來說,它比DAO更靈活,更強大;而比起API,它更簡單易用,更適合初學(xué)者.而Access數(shù)據(jù)庫比起SQL,也相對簡單了很多,且能夠滿足中小型應(yīng)用程序的需要,所以我們在使用數(shù)據(jù)庫時,選擇了Access.

就像使用文本文件來存儲數(shù)據(jù)一樣,我們需要先設(shè)計好數(shù)據(jù)結(jié)構(gòu),只不過在設(shè)計Access數(shù)據(jù)庫的結(jié)構(gòu)時,我們需要用到其它的程序來進行詳細的規(guī)劃.建議采用的程序是office中的Access或VB自帶的VISDATA.

當(dāng)數(shù)據(jù)庫設(shè)計好了以后,我們可以開始"數(shù)據(jù)庫編程"了.

首先,我們需要引用ADO.具體的方法是,在"工程" -- "引用" 中,找到"Microsoft ActiveX Data Object *.* Library",這里的"*.*"是指的時ADO的版本號,一般來說,應(yīng)用程序或ActiveX控件都具有向下兼容性,所以我們盡可能選擇比較新的版本.以確保程序在能識別舊版本Access的同時,也能識別較新版本的Access.

然后我們需要在程序中創(chuàng)建一個對象.就好比我們在窗體上添加一個FileBox才能看到文件名一樣,只有創(chuàng)建了ADO對象,我們才能夠訪問數(shù)據(jù)庫.常用的對象有兩個,Connection和Recordset.

創(chuàng)建這兩個對象的具體方法是:

1.在引用后,使用New關(guān)鍵字,如

Private Conn As New ADODB.Connection

Private Reco As New ADODB.Recordset

2.在沒引用時,用CreateObject創(chuàng)建對象:

Dim Conn,Reco

Set Conn = CreateObject("ADODB.Connection")

Set Reco = CreateObject("ADODB.Recordset")

創(chuàng)建了對象之后,下一步我們要做的就是打開數(shù)據(jù)庫了.

先看下面的代碼,可以成功的打開數(shù)據(jù)庫.

Conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Main.mdb"

這句代碼打開了D盤中的Main.mdb這個數(shù)據(jù)庫.

Connection.Open方法的第一個參數(shù)是連接代碼,它將傳遞給系統(tǒng)的數(shù)據(jù)庫引擎.前半部分"Provider=Microsoft.Jet.OLEDB.4.0",它表示了數(shù)據(jù)庫的類型.不同的數(shù)據(jù)庫可能會不同.后半句"Source=d:\main.mdb"它表示了數(shù)據(jù)庫所在的絕對路徑.

打開數(shù)據(jù)庫之后,還要打開表.假如數(shù)據(jù)庫中有一個表,表名為"Users",字段有兩個,一個為用戶名,一個為密碼.那么看以下代碼.

1.想返回"Users"中,[用戶名]為"去年煙花"的[密碼]

Recordset.open "Select 密碼 From Users Where 用戶名='去年煙花'",Connection,1,1

之后我們就可以把用戶輸入的密碼進行比較,看是否允許登錄.

If Recordset.eof and Recordset.bof then

Msgbox "用戶不存在!",16

Else

If PassWord =Recordset("密碼").value then

msgbox "登錄成功!",64

Else

msgbox "密碼錯誤!",32

End If

End If

Recordset.Close

2.假設(shè)Admin已經(jīng)成功登錄系統(tǒng),我們想把所有的用戶名和密碼都顯示出來

Recordset.open "Select * From Users",Connection,1,1

這時,表已經(jīng)被打開,我們就用以下代碼把它顯示出來.

Do whlie Not Recordset.eof

Print "用戶名: " Recordset("用戶名").value "密碼: " Recordset("密碼").value

Recordset.MoveNext

Loop

Recordset.Close

由以上代碼示例可以看出,打開表時,可以只打開其中的一個字段,也可以打開所有.第一個參數(shù)是SQL語句.

Select [字段名] From 表名 [Where 條件]

這里的條件可以省略.且字段名也可以用"*"來代替所有字段.

需要注意的是,如果你用(1)中的方法打開,那么(2)后面顯示的代碼就不能再用在(1)中.因為(1)里并沒有打開[用戶名]字段,所以這一句Recordset("密碼")就沒有值存在,還有可能出錯.

后面的條件,可以用"="、""、""等運算符.比如 "Where ID 32".(這里假設(shè)[ID]為數(shù)字型.)

這是打開的部分.第二個很重要的部分就是查詢記錄.

數(shù)據(jù)庫它并不是把所有記錄全部放到一個變量中備用的.而是以"當(dāng)前記錄"的形式來返回一個值.所以我們想從中找到有用的信息,就必須要對信息進行定位/篩選.

定位:

移動到下一條 Recordset.MoveNext

移動到上一條 Recordset.MovePrevious

移動到最后一條 Recordset.MoveLast

移動到第一條 Recordset.MoveFrist

移動到某一條 Recordset.Move Number

篩選:

Recordset.Find "條件"

如:[用方法(2)打開表之后]

Private Sub Command1_Click()

Recordset.Find "用戶名=" "text1.text"

If Recordset.Eof True Then

Msgbox "該用戶的密碼是:" Recordset("密碼").value,64

Else

Msgbox "未找到該用戶的資料!",16

End If

End Sub

MoveNext 只有當(dāng)Eof不為True時,才可用,否則發(fā)生錯誤.而MovePrevious剛是Bof不為True時....

而只要Eof 和 Bof中有一個不為真時,也就是說只要有一條記錄時,它就可以使用.

Find 方法中的條件和Open時的第一個參數(shù)中的條件表述方法是完全一致的.當(dāng)在已打開的記錄集中,找不到該記錄時,Eof為True.找到則當(dāng)前的值就是符合條件的記錄.

第三個部分就是添加/修改記錄.

修改記錄很簡單,先按以上的方法找到相關(guān)記錄之后,給記錄賦值就可以了.

比如:[(修改密碼)按方法(1)打開表之后]

Recordset("密碼").value = "123456"

Recordset.Updata

需要注意的就是,在修改完成后,要調(diào)用Updata方法,這樣修改才能生效.

而添加記錄則可以用以下代碼來實現(xiàn):

Recordset.addnew

Recordset("用戶名").value = "Admin"

Recordset("密碼").value = "Admin"

Recordset.Updata

這里,先要調(diào)用Addnew方法,增加一條新記錄,然后對這個新記錄中的各字段賦值,最后再調(diào)用Updata方法.

到這里就差不多了,最后說一下上面提到的幾個方法.

Recordset.Open SQL語句,數(shù)據(jù)源,游標類型,打開方法

SQL語句不用說了,就是Select那啥的,目的就是按要求從表中返回數(shù)據(jù)

數(shù)據(jù)源就是一個打開之后的Connection對象.

去他媽的游標類型,填1就可以了 [偷笑ing]

打開方法對應(yīng)了幾個常數(shù),具體哪幾個可以從對象瀏覽器里看.

對應(yīng)數(shù)值的意義:

1 只讀 2 獨占 3 可寫 4 自已可寫,別人可讀

Connection.open 連接代碼,服務(wù)器用戶名,密碼

這里的連接代碼就不在多說了,服務(wù)器用戶名,密碼只有在連接遠程數(shù)據(jù)庫時才用到.

如何把網(wǎng)站中原來的留言板去掉

樓主可以去我的論壇看,里面有圖片,看起來更方便些,下面這個留言本絕對可行的

一、安裝與調(diào)試

常聽朋友感嘆ASP程序難學(xué)不易懂,不過我起初學(xué)習(xí)這門技術(shù)的時候也有過這樣的感悟。從今天開始,我將以我學(xué)ASP的經(jīng)驗來做一個簡單的ASP留言本,這個留言本用了Access數(shù)據(jù)庫,所以務(wù)必請大家要跟我一起做的朋友都安裝好Office軟件,相信各位自己的電腦上都有了。好了,開始。

創(chuàng)建ASP的運行環(huán)境(安裝IIS)

IIS(Internet Information Service)是構(gòu)建ASP站點所必須的,所以,我們應(yīng)該先確認自己的電腦已安裝了IIS信息服務(wù),如果沒有安裝好的話,請按以下步驟:

1、打開“控制面板”

2、雙擊“添加/刪除程序”

3、單擊“添加/刪除Windows組件”,打開添加/刪除Windows組件對話框:

3、從下拉的列表中選擇“Internet 信息服務(wù)(IIS)”單擊“下一步”:

4、出現(xiàn)組件安裝進度窗口,如彈出需要安裝盤的話,放入Windows2000安裝盤,按提示操作即可。直至最后安裝完畢。

二、設(shè)計數(shù)據(jù)庫

ASP程序本身并不能儲存數(shù)據(jù),眾所周知,留言本有以下信息需要保存:留言者姓名、聯(lián)系方式、留言內(nèi)容等等。因為ASP并不能儲存數(shù)據(jù),所以數(shù)據(jù)庫在這種環(huán)境之下就產(chǎn)生了。數(shù)據(jù)庫的種類也很多,針對不同的程序也有適用于它的數(shù)據(jù)庫,比如Access和Ms SQL就比較適用ASP和ASP.net程序,至于其它的數(shù)據(jù)庫和程序,就不屬于本文所討論的問題了,有興趣的朋友可以查看其它一些資料。

那么既然Access和MS SQL都適用ASP,那么具體又如何來選擇呢?我們可以打一個比方:比如釘一枚小釘子,聰明的人一定不會用一個大的棒槌,而是選擇小的鐵錘,雖然用大的棒槌也一樣的可以把釘子釘進去,可是沒有人愿意這樣做。

數(shù)據(jù)庫也一樣:Access比較適用小型的應(yīng)用,而MS SQL則適用于大中型的數(shù)據(jù)庫應(yīng)用,所以要做一個留言本,理所當(dāng)然是選擇Access更好一些,但是如果你決心使用MS,沒有人會極力阻止你。好了,廢話少說,切入正題,下面開始創(chuàng)建數(shù)據(jù)庫。

Access是微軟office辦公軟件中的其中一個,默認的安裝Office是有這個Access的,好了,打開程序,開始了,GO!

進入實戰(zhàn)了。打開程序后,出現(xiàn)一個對話框,這里我們選擇第一個選項”空Access數(shù)據(jù)庫”點擊確定,彈出一個新建數(shù)據(jù)庫的文件框,選擇你上次你建的站點目錄,起個data的文件名,點擊創(chuàng)建,OK! 雙擊”使用設(shè)計器創(chuàng)建表”打開表創(chuàng)建窗口”如圖

創(chuàng)建表的結(jié)構(gòu)如下表:

字段名稱 數(shù)據(jù)類型 備注(筆者注釋)

id 自動編號 設(shè)置“自動編號”

user 文本 留言者姓名

qq 數(shù)字 留言者的QQ,因為QQ號是由數(shù)字組成

email 文本 留言者的電子郵件

content 備注 留言內(nèi)容

data 日期/時間 留言時間,設(shè)定默認值為Now()

數(shù)據(jù)庫設(shè)計好了以后,可以直接在數(shù)據(jù)庫里添加兩條記錄,以后測試時候用!

三、連接數(shù)據(jù)庫

在上一節(jié),我們已經(jīng)為我們的程序創(chuàng)建了一個數(shù)據(jù)庫,在這一節(jié)中,我們來用ASP把程序和數(shù)據(jù)庫連接起來,以后就可以連接到數(shù)據(jù)庫、在ASP中顯示數(shù)據(jù)庫中的數(shù)據(jù)以及更復(fù)雜的插入、修改和刪除。

一起看以下代碼,這就是ASP程序中常用的連接數(shù)據(jù)庫的代碼:

%

set conn=server.createobject("adodb.connection")

connstr="Provider=Microsoft.jet.oledb.4.0;data source="server.mappath("data.mdb")

conn.open connstr

%

解釋一下以上代碼:

% 這是ASP程序的起始

set conn=server.createobject("adodb.connection") 在服務(wù)器上創(chuàng)建了一個連接數(shù)據(jù)庫的對象

connstr="Provider=Microsoft.jet.oledb.4.0;data source="server.mappath("data.mdb") 告訴ASP數(shù)據(jù)庫的接接方法以及路徑

conn.open connstr 創(chuàng)建了對象后就用來打開數(shù)據(jù)庫進行連接

% 一切OK了!結(jié)束ASP程序

將上面的代碼另存為conn.asp文件,放在服務(wù)器目錄下面就可以了。怎么樣,簡單吧?

四、制作留言本首頁

前面我們已經(jīng)連接好了數(shù)據(jù)庫,就要讓它在這里發(fā)揮一下作用了,這一節(jié)將講述如何將數(shù)據(jù)庫里的數(shù)據(jù)用ASP讀取出來,在頁面中顯示出來,這樣就等于是查看留言本了。

利用DW制作如下頁面(這里我就不講如何去做這個頁面了,最后我將會給出HTML代碼下載)

將制作好的文件存為index.asp,下面就創(chuàng)建數(shù)據(jù)記錄集,用來顯示數(shù)據(jù)庫的數(shù)據(jù)到這個頁面中:

用記事本打開index.asp,在頁頭加入以下代碼:

%@LANGUAGE="VBScript" codepage="936"%

!--#include file="conn.asp"--

%

set rs=server.createobject("adodb.recordset")

sql="select user,qq,email,content,data from main order by id desc"

rs.open sql,conn,1,1

%

代碼拷貝框

%@LANGUAGE="VBScript" codepage="936"%

!--#include file="conn.asp"--

%

set rs=server.createobject("adodb.recordset")

sql="select user,qq,email,content,data from main order by id desc"

rs.open sql,conn,1,1

%

[Ctrl+A 全部選擇 然后拷貝]

解釋一下:

第一行,表明ASP使用的是VB腳本

第二行,是用include包含文件,這里包含的是數(shù)據(jù)庫連接文件。

第三行,ASP程序開始

第四行,利用Server內(nèi)置對象創(chuàng)建一個記錄集

第五行, SQL語句,這里的意思是選擇數(shù)據(jù)庫中的user,qq,email,content,data字段,指定該數(shù)據(jù)表的名稱是“main”數(shù)據(jù) 的排列順序是倒序。

第六行,用剛才創(chuàng)建的名為rs的記錄集打開數(shù)據(jù)庫,設(shè)置屬性為只讀(1,1為只讀數(shù)據(jù),1,3為插入數(shù)據(jù),2,3是修改數(shù)據(jù)。

這樣就打開了數(shù)據(jù)庫,接下來就可以顯示了。

將“留言人”代替為“%=rs("user")%

“時間”代替為“%=rs("data")%

“留言內(nèi)容在此”代替為“%=rs("content")%

“QQ”鏈接到:;%=rs("qq")%

“郵件”鏈接到:mailt%=rs("email")%

最后將“填寫留言”鏈接 add.asp “管理留言”鏈接 admin.asp

好了,再次保存,瀏覽看看!

怎么了?只顯示一條記錄?原來我們在數(shù)據(jù)庫里添加了兩條記錄的哦!還有一條呢?別急,因為我們沒有指定ASP循環(huán)顯示,所以就只有一條啦。。。

在剛才的代碼后面添加一行

%do while not rs.eof%

并在頁面的第一個表格的末尾加上

%

rs.movenext

loop

%

上面的代碼就是說用rs記錄集指針一條一條往下一條移動,直到末尾,loop是循環(huán)的意思。。哈哈,再次瀏覽這個文件

看明白了嗎,這樣就可以讓數(shù)據(jù)庫中的數(shù)據(jù)全部顯示在頁面中了。

五、制作添加留言頁面,實現(xiàn)留言功能

我們是做的一個留言本,實現(xiàn)留言的功能就十分重要了,要不然就算不上留言本了,接下來就一起來實現(xiàn)這個功能。

用DW制作以下這樣的頁面:

設(shè)置表單的屬性如下:

姓名:設(shè)置為單行文本域,名稱為“user”

QQ號:設(shè)置為單行文本域,名稱為“qq”

郵件:設(shè)置為單行文本域,名稱為“email”

內(nèi)容:設(shè)置為多行文本域,名稱為“content”

最后將表單的“Action”動作指向addsave.asp就可以了。

保存文檔名為add.asp,OK!下一步!

表單是做好了,但是還需要后臺程序的支持,一起來使用ASP編寫一個添加留言處理程序,添加留言代碼:

%@LANGUAGE="VBScript" codepage="936"% 表明ASP使用的是VB腳本

!--#include file="conn.asp"-- 是用include包含文件,這里包含的是數(shù)據(jù)庫連接文件

%

set rs=server.createobject("adodb.recordset") 利用Server內(nèi)置對象創(chuàng)建一個記錄集

sql="select user,qq,email,content,data from main" SQL語句,上節(jié)有詳解

rs.open sql,conn,1,3 用剛才創(chuàng)建的名為rs的記錄集打開數(shù)據(jù)庫,設(shè)置屬性為插入數(shù)據(jù)

rs.addnew 用記錄集新添加一條數(shù)據(jù)

user=request.form("user") 請求表單的變量,定義變量為user,這里request.form是請求表單的意思

qq=request.form("qq") 請求表單的變量,定義變量為qq,這里request.form是請求表單的意思

email=request.form("email") 請求表單的變量,定義變量為email,這里request.form是請求表單的意思

content=request.form("content") 請求表單的變量,定義變量為content,這里request.form是請求表單的意思

rs("user")=user 將請求到的表單值傳向記錄集中代表user字段的名稱

rs("qq")=qq 將請求到的表單值傳向記錄集中代表qq字段的名稱

rs("email")=email 將請求到的表單值傳向記錄集中代表email字段的名稱

rs("content")=content 將請求到的表單值傳向記錄集中代表content字段的名稱

rs.update 更新一下數(shù)據(jù)庫中的數(shù)據(jù)。

rs.close 關(guān)閉記錄集

set rs=nothing 銷毀記錄集

conn.close 關(guān)閉數(shù)據(jù)庫連接

set rs=nothing 銷毀數(shù)據(jù)庫連接

%

代碼拷貝框

%@LANGUAGE="VBScript" codepage="936"% 表明ASP使用的是VB腳本

!--#include file="conn.asp"-- 是用include包含文件,這里包含的是數(shù)據(jù)庫連接文件

%

set rs=server.createobject("adodb.recordset") 利用Server內(nèi)置對象創(chuàng)建一個記錄集

sql="select user,qq,email,content,data from main" SQL語句,上節(jié)有詳解

rs.open sql,conn,1,3 用剛才創(chuàng)建的名為rs的記錄集打開數(shù)據(jù)庫,設(shè)置屬性為插入數(shù)據(jù)

rs.addnew 用記錄集新添加一條數(shù)據(jù)

user=request.form("user") 請求表單的變量,定義變量為user,這里request.form是請求表單的意思

qq=request.form("qq") 請求表單的變量,定義變量為qq,這里request.form是請求表單的意思

email=request.form("email") 請求表單的變量,定義變量為email,這里request.form是請求表單的意思

content=request.form("content") 請求表單的變量,定義變量為content,這里request.form是請求表單的意思

rs("user")=user 將請求到的表單值傳向記錄集中代表user字段的名稱

rs("qq")=qq 將請求到的表單值傳向記錄集中代表qq字段的名稱

rs("email")=email 將請求到的表單值傳向記錄集中代表email字段的名稱

rs("content")=content 將請求到的表單值傳向記錄集中代表content字段的名稱

rs.update 更新一下數(shù)據(jù)庫中的數(shù)據(jù)。

rs.close 關(guān)閉記錄集

set rs=nothing 銷毀記錄集

conn.close 關(guān)閉數(shù)據(jù)庫連接

set rs=nothing 銷毀數(shù)據(jù)庫連接

%

[Ctrl+A 全部選擇 然后拷貝]

將以上文件存為addsave.asp,測試下!咦?怎么填好提交以后就出現(xiàn)空白了,為什么?這是因為在addsave.asp中沒有設(shè)置數(shù)據(jù)成功提交好后的轉(zhuǎn)向頁面,這里不用做那么復(fù)雜的,只要做一個刷新頁面就行了,在程序的后面加上:

meta http-equiv="refresh" content="2;URL=index.asp"

然后在頁面中添加提示信息,比如:“您的留言已經(jīng)成功提交,2秒鐘后將自動返回留言本首頁”

好了,這個留言的功能總算實現(xiàn)了,最后再測試下,看看效果!

OK!

六、制作管理登陸頁面

留言本的管理功能對于留言本來說就不言而喻了,像論壇的登陸功能就是一個很好的例子,不過我們做留言本基本上有刪除功能就行了,寫這個教程是為了更多的ASP入門者更好的了解ASP,所以旨在學(xué)習(xí)用,當(dāng)然也可以在這基礎(chǔ)上添加更多的功能,比如回復(fù)留言者。

好了,開始了,還是按照以前的,用Dreamweaver做一個登陸頁面,如下圖:

把用戶名的表單名稱設(shè)置為admin,密碼的表單名稱設(shè)為password,把動作指向checkpass.asp,,存admin.asp這樣登陸頁面就好了,

下面就做檢測密碼的ASP程序了,看以下代碼解釋:

!--#include file="conn.asp"-- 把conn.asp包含進來連接數(shù)據(jù)庫

% ASP起始

admin=request.form("admin") 定義admin的值是表單傳過來的用戶名域名稱admin

password=request.form("password") 定義admin的值是表單傳過來的用戶名域名稱admin

if admin="" or password="" then 這句的意思是假如用戶名和密碼沒有輸入的話那么執(zhí)行下一句

response.Write("script language=javascriptalert(請?zhí)顚懲暾?);history.go(-1)/script") 用javascript腳本提示用戶

end if 結(jié)束if語句

sql="select * from admin where admin="admin" and password="password"" 這句很重要,我們放到后面講

set rs=conn.execute(sql) 設(shè)定記錄集rs,用conn執(zhí)行SQL語句

if rs.eof or rs.bof then 當(dāng)沒有符合篩選結(jié)果時,則執(zhí)行下面的句子

response.write "script language=javascript"

response.write "alert(用戶或密碼不對!);"

response.write "javascript:history.go(-1);"

response.write "/script" 用javascript腳本提示用戶

else 如果符合條件的時候

session("admin")=admin 新建session,值等于表單傳來的用戶名

response.redirect "mymanage.asp" 轉(zhuǎn)向到mymanage.asp,進入管理頁

end if 結(jié)束if語句

% ASP結(jié)束

代碼拷貝框

!--#include file="conn.asp"-- 把conn.asp包含進來連接數(shù)據(jù)庫

% ASP起始

admin=request.form("admin") 定義admin的值是表單傳過來的用戶名域名稱admin

password=request.form("password") 定義admin的值是表單傳過來的用戶名域名稱admin

if admin="" or password="" then 這句的意思是假如用戶名和密碼沒有輸入的話那么執(zhí)行下一句

response.Write("script language=javascriptalert(請?zhí)顚懲暾?);history.go(-1)/script") 用javascript腳本提示用戶

end if 結(jié)束if語句

sql="select * from admin where admin="admin" and password="password"" 這句很重要,我們放到后面講

set rs=conn.execute(sql) 設(shè)定記錄集rs,用conn執(zhí)行SQL語句

if rs.eof or rs.bof then 當(dāng)沒有符合篩選結(jié)果時,則執(zhí)行下面的句子

response.write "script language=javascript"

response.write "alert(用戶或密碼不對!);"

response.write "javascript:history.go(-1);"

response.write "/script" 用javascript腳本提示用戶

else 如果符合條件的時候

session("admin")=admin 新建session,值等于表單傳來的用戶名

response.redirect "mymanage.asp" 轉(zhuǎn)向到mymanage.asp,進入管理頁

end if 結(jié)束if語句

% ASP結(jié)束

[Ctrl+A 全部選擇 然后拷貝]

將以上代碼保存為checkpass.asp

這樣,用戶在admin.asp頁面中輸入用戶名和密碼后,就把用戶名和密碼值傳給checkpass.asp處理,當(dāng)用戶名和密碼的值和數(shù)據(jù)庫中的字段相匹配時,就進入mymanage.asp這個管理頁面,同時建一個session,這個session的會話變量將在后面起作用,

七、制作管理頁面

上節(jié)中講的是制作登陸頁面和檢測用戶,當(dāng)用戶名和密碼正確時就轉(zhuǎn)到管理頁面,好了,開始實現(xiàn)它。

其實這個留言本的管理頁面和用戶直接看到的首頁沒有多大的區(qū)別,只是用了Session會話變量用作保護和增加了一個刪除鏈接,當(dāng)點擊這個鏈接的時候,就會自動刪除這條留言,好了,其本的目的知道了,那就GO!

剛才講了,這個頁面和首頁的index.asp相似,那么就先復(fù)制就行了,然后再改一下

首先找到下面這句:

sql="select user,qq,email,content,data from main order by id desc"

把它改為

sql="select id,user,qq,email,content,data from main order by id desc"

這樣,就選取到了id這個自動編號的值,以便刪除留言時鎖定這個id。

然后在“郵件”這個鏈接后面增加一個鏈接“刪除”,鏈接:del.asp?id=%=rs("id") ,修改代碼后為a href="del.asp?id=%=rs("id")%" onclick="return confirm(是否確定刪除本留言?);"刪除/a 這樣,待會我們做del這個頁的時候,就會知道為什么了!

改過后存為mymanage.asp

現(xiàn)在打開瀏覽器看看!

怎么不用輸入用戶名和密碼都可進入呀?別急,上節(jié)中,我們不是建了一個session的會話變量,這時就派上用場了,直接用記事本打開。在%@LANGUAGE="VBScript" codepage="936"%這句的后面加上%if session("admin")"" then%這句,在末尾寫上:

%

else

response.Redirect("admin.asp")

end if%

下面來講解一下。

%if session("admin")"" then% 就是說如果session這個("admin")的值不是空的話就執(zhí)行。

%

else

response.Redirect("admin.asp")

end if% 為空的話就轉(zhuǎn)向登陸頁,重新登陸,這樣的話,直接輸入網(wǎng)址的話就會跳到admin.asp,簡單吧!

八、刪除留言

上節(jié)我們增加了一個刪除留言的鏈接,以下是這個del.asp的代碼

!--#include file="conn.asp"--

%

set rs=server.createobject("adodb.recordset")

id=Request.QueryString("id")

sql="select * from main where id="id

rs.open sql,conn,2,3

rs.delete

rs.update

%

很明了吧,才幾句,第1、2、3句都不用我解釋了,大家都在上幾節(jié)中明白了。

第4句:

id=Request.QueryString("id") 用id取值字符串中傳的id,回頭看一下刪除的鏈接:del.asp?id=%=rs("id")% 就是這個鏈接才把id的值傳來的,%=rs("id")%是讀取數(shù)據(jù)庫中的自動編號字段中的id。

第5句:

用sql定義SQL語句,這里的*是通配符,表示所有,而Where有點像我們漢語中的“當(dāng)”,整句話的意思是選擇所有來自表名為main的字段,它的條件是當(dāng)數(shù)據(jù)庫中的id字段是字串所傳來的id。如果這個沒有的話這個一時間不明白也不要緊,慢慢接觸就知道了。

第6句是打開符合條件的記錄,確切的講不應(yīng)該叫記錄集了,因為經(jīng)過我們這樣篩選的話,記錄絕對是一條,2,3指定可以對數(shù)據(jù)庫中的數(shù)據(jù)進入修改。

第7、8句

rs.delete 看了就明白了,原來這才是整個程序的精髓,就是執(zhí)行刪除了。

rs.update 這是更新數(shù)據(jù)庫中的表,刪除后就更新。

最后大家自己用rs.close和conn.close釋放。

經(jīng)過些學(xué)習(xí),大家應(yīng)該對ASP有所了解和認識了,這個做ASP留言本的教程就到此結(jié)束了。歡迎大家到新視野QQ群里面共同討論學(xué)習(xí)。


網(wǎng)站欄目:關(guān)于eofvb.net的信息
轉(zhuǎn)載源于:http://weahome.cn/article/dogghpe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部