訪問數據庫(4)
大家好,我是武漢華師的sunwen,前些天給大家講述了一些SQL的基本語法,然后就好幾天沒有了下文。這是因為學校這幾天正在開運動會,我也跑了800米,雖然沒有名次,但也累得半死,畢竟我已拼盡了全力。本來我今天是沒有力氣寫下去的,但是想起我的學習ASP的過程,我就又打起精神,打開電腦,寫了起來。(很有敬業精神吧!)
今天開始我還是要向大家講一點SQL的知識,然后再回到ASP中來。
B.插入數據
這當然也是一個非常重要內容,看下面的介紹吧:
1.column_list參數指定insert語句向哪些列中插入數據
2.values子句為新插入行中column_list參數所指定列提供數據,這些數據可以用常量或表達式表示,也可使用defalt關鍵字說明向列中插入其默認值
3.default values說明向表中所有列插入其默認值
4.選用select_statement時,insert語句將select_statement子句所返回的結果插入到指定表中
5.table_souces說明要插入數據的表或視圖
例一:使用數值列表方式向表中插入數據的時候,要求values子句中各列數據的排列順序與表中定義順序完全一致 insert tb values ('ypf','china','99999')
這個例子中tb表示一個表的名稱,values后表示要向表中的列插入的數據,其排列順序應與實際表中的順序一致
例二:也可以指明順序:例如 insert tb(phone,name) values ('899999','user')
這個例子中tb(phone,name)表示tb表中的phone和name這兩列,而values ('899999','user')指定了向這兩列插入的內容。列與要插入的數據是一一對應的。另外,我們可以變量來代替數據,如:values (a,b)中,a,b就是兩個變量,但是要切記,其變量類型一定要與列的類型一致,否則將產生錯誤。我們還可以將數據用default代替,用來表示向這一列插入默認值。如:insert tb(phone,name) values (DEFAULT','user')
好了,讓我們再開始ASP吧!
通過上面的課程我們已經知道了如何對一個數據庫進行一些操作。但是我們知道,我們現在是在用vbscript來編寫ASP,而vb中字符型變量的賦值形式是a="abcd",也就是說,我們在引用a這個字符型數據時,實際上是在引用"abcd"。比如說一句這樣的語句:insert tb values (a,'poi')這其中的a代表"abcd",而這個語句實際上就是insert tb values ("abcd",'poi'),發現問題了吧!我們在上一節課中講到SQL中的字符型變量的引用應當是用單引號來分界的,而我們前面一個語句中用的是雙引號。這必將產生問題。所以,當我們要在一個頁面中放置一個表單,其中包括一個text的話,我們用另一個ASP來引用這個text的內容,并要將這個text中的內容寫入數據庫的時候,用一個insert語句就會產生問題,而要將其中的雙引號變為單引號又是比較困難的。所以,我今天要向大家介紹另一種向數據庫插入數據的方法,這個方法便是利用記錄集的addnew方法。
首先看下面一個例子:
set objconn=server.createobject("adodb.connection") objconn.open "dsn=mydb;database=db2;uid=;pwd=;" set rs=server.createobject("adodb.recordset") rs.open "ships",objconn,,,adcmdtable objrs.addnew objrs("companyname")="華師科技" objrs.update objrs.close
是不是看得懂呢?讓我來解釋一下吧!rs.open "ships",objconn,,,adcmdtable這一句就是要利用objconn這個連接來打開ships這個表。接著有objrs.addnew這個語句來告訴系統我要進行addnew操作了,然后將表中的companyname這個字段的內容替換成“華師科技”,其實這一系列動作都是在內存中進行的,并沒有寫入磁盤,而objrs.update這一句則將其寫入磁盤.最后關閉記錄集。是不是很簡單。
好了,下一課再見!
慢著!隨著大學學習的不斷進行,我在高中養成的勤奮學習的好習慣也漸漸沒有了,變得異常懶(原來大學遠沒有想象的那么好),所以這一篇寫完了,下一篇不知什么時候才會出來。所以大家多摧一摧我,給我打一打氣!mrfat@china.com
|