導航:首頁 > 編程大全 > asp連接excel資料庫實例

asp連接excel資料庫實例

發布時間:2022-01-20 10:43:01

㈠ 如何用ASP實現SQL資料庫與Excel之間的對接

SQL里有一個導入、導出、還有備份和還原,好久不用了,記不太清啦!

㈡ excel如何連結ASP頁面或外部資料庫

最簡單的辦法是使用摸板替換的方法,類似網上自動生成HTML頁面,但你生成的是EXCEL文件,原理是一樣的都是替換模板中的預定字元串為指定數據,然後用FSO寫到目錄的
指定文件中.
先用EXCEL製作好想要得到的效果,和做普通EXCEL一樣,做好後保存為[單個網頁文件],然後使用[記事本]打開,看到了,和HTML文件差不多吧.將這些字元串轉換為ASP字元串形式應該會吧(注意保持文件中字元串的完整),完畢後將文件另存為ASP文件供你調用,把要填寫數據的地方使用變數替換,如應該輸入用戶名稱的地方(單元格),先放置[username],其他與此原理相同.
將你獲取的數據在此模板中做替換,如:
Replace("模板字元串","[username]","")
其他與此相同,這樣就生成了帶有相關數據的字元串.
直接使用FSO將文件保存到指定位置為[文件名.xls]
不用擔心生成XLS文件不被識別,打開和下載都和普通的EXCEL文件一樣,並沒有破壞EXCEL數據結構.
需要注意的是對數據格式處理.

㈢ 如何在ASP中通過ODBC調用Excel中的數據

在ASP中通過ODBC調用Excel中的數據方式和普通的通過ODBC調用資料庫的方式有一些不同的地方。下面將介紹如何通過ODBC在ASP中使用Excel的數據。
在使用的過程中,要注意的是你需要使用的ODBC驅動為:Microsoft ODBC Driver for Excel.
下面給出一個例子來具體說明如何調用的過程:
1。在Excel的電子表格中新建一個叫Range的表單
a)在Excel文件ADOtest.xls中的sheet1里隨便輸入下面的測試數據:
column1 column2 column3
rr this 15
bb test 20
ee works 25
[b]注意事項[/b]:
如果你的Excel電子表格中某一列同時包含了文本和數字的話,那麼Excel的ODBC驅動將不能夠正常
處理這一行的數據類型,你必須要保證該列的數據類型一致。:
i.Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
The request properties can not be supported by this ODBC Driver.
ii.Microsoft OLE DB Provider for ODBC Drivers error '80004005'
The query is not updateable because it contains no searchable columns to use as a
hopeful key.
iii.Microsoft OLE DB Provider for ODBC Drivers error '80004005'
Query based update failed. The row to update could not be found.
b)使用滑鼠選中你的數據所在的所有行和列
c)從菜單中選擇InsertNameDefine命令.
d)輸入myRange1,然後單擊OK退出
[b]注意事項[/b]:
i)ADO假設Excel中的第一行為欄位名.所以你定義的范圍中必須要包括第一行的內容
ii)Excel中的行標題(即欄位名)不能夠包含數字. Excel的驅動在遇到這種問題時就會出錯的。
例如你的行標題名為「F1」
e)新建一個ODBC系統DSN指向這個ADOTest.xls文件:(這個過程我就不詳細說了)
[b]注意事項[/b]:
i)DSN中要選擇Access97版本
ii)在NT中設置好匿名帳號對該電子表格文件相應的訪問許可權
iii)如果你的許可權設置不正確的話,有可能會得到如下出錯信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine
cannot open the file '(unknown)'. It is already opened exclusively
by another user, or you need permission to view its data.
f)最後一步,就是在ASP中調用這個ODBC,代碼如下:
<%@ LANGUAGE="VBSCRIPT" %>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "ADOExcel"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 3
objRS.LockType = 2
objRS.Source = "Select * from myRange1"
objRS.Open
%>
<br>
<%
Response.Write("Original Data")
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
objRS.MoveFirst
objRS.Fields(0).Value = "change"
objRS.Fields(1).Value = "look"
objRS.Fields(2).Value = "30"
objRS.Update
Response.Write("<br>Data after the update")
Response.Write("<TABLE><TR>")
For X = 0 To objRS.Fields.Count - 1
Response.Write("<TD>" & objRS.Fields.Item(X).Name & "</TD>")
Next
Response.Write("</TR>")
objRS.MoveFirst
While Not objRS.EOF
Response.Write("<TR>")
For X = 0 To objRS.Fields.Count - 1
Response.write("<TD>" & objRS.Fields.Item(X).Value)
Next
objRS.MoveNext
Response.Write("</TR>")
Wend
Response.Write("</TABLE>")
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>

㈣ 如何將excel數據通過asp導入資料庫

將excel數據通過asp導入資料庫:
參考代碼:
wenjian=request.Form("floor")
fileext=mid(wenjian,InStrRev(wenjian,".")+1)
if lcase(fileext)<>"xls" then
response.write "<script>alert ('文件格式不對,請上傳Excel文件');window.location.href='updateFloor.asp';</script>"
response.end
end if
set conne=server.CreateObject("ADODB.Connection")
connStre="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath( ""&wenjian&"" )&";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';"
conne.open connStre
Sqle="select * from [sheet1$] "
Set rse = Server.CreateObject("ADODB.Recordset")
rse.open sqle,conne,1,1
'驗證
hang=2
do while not rse.eof
'名稱不能為空
if trim(rse(0))<>"" then
else
mess="第"& hang &"行名稱為空,請檢查!"
response.Write"<script>alert('"& mess &"').window.location.href='updateFloor.asp'</script>"
response.End()
end if
rse.movenext
hang=hang+1
loop
rse.movefirst
do while not rse.eof
set rst=server.CreateObject("adodb.recordset")
sqlt="select * from Sellman"
rst.open sqlt,conn,1,3
rst.addnew()
rst("CompanyName")=c2(rse(0))
rst("CompanyInfo")=c2(rse(1))
rst("address")=c2(rse(2))
rst("tel")=c2(rse(3))&" "&c2(rse(7))
rst("Fax")=c2(rse(4))
rst("linkman")=c2(rse(5))
rst("Homepage")=c2(rse(8))
rst("Email")=c2(rse(6))
rst.update()
rst.close
set rst=nothing
rse.movenext
loop
rse.close
set rse=nothing
response.Write "<script>alert('導入成功!');location.href='updateFloor.asp';</script>"

㈤ 我做了一個ASP動態網站,我想通過後台操作,將EXCEL文件導入到資料庫中對應的表中,而且欄位也要對應

別急別急,導入很簡單,方法也很多,我就說三個,你選一個。

如果要用ASP處理就需要把Excel文件上傳伺服器,可以用打開資料庫的方式將Excel文件中的數據導入到你的資料庫,不管是什麼資料庫,只要你代碼寫的沒問題就可以導入。如果伺服器上裝了Office並開放了Excel的DCOM組件服務,那麼你甚至可以處理Excel文件裡面的顏色信息等。

如果用VBS處理,需要創建Excel控制項,然後就可以提取單元格內的信息。創建資料庫的遠程連接就可以把剛才取得到的數據一一寫入資料庫。

如果用Excel裡面的宏,也就是VBA,同樣可以連接資料庫,當然操作Excel更是VBA的強項了。

㈥ ASP 的VBScript 怎樣進入EXCEL資料庫

<%
set conn=Server.CreateObject("Adodb.Connection")
Driver = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};"
DBPath = "DBQ=" & Server.MapPath("zhenhe.xls") 'zhenhe.xls改為你的文件名
conn.open Driver&DBPath
sql="select * from [Sheet1$]" '[Sheet1$]表單名
set rs=conn.execute(sql)
for i=0 to Rs.Fields.Count-1
response.write rs(i).name&""
abcde=rs(0).name&""
next
response.write "<br>"
response.write "<br>"
do while not rs.eof
for i=0 to Rs.Fields.Count-1
response.write rs(i).value&""
next
response.write "<br>"
rs.movenext
loop
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
<%=abcde%>

㈦ 急求asp代碼實現EXCEL數據導入到SQL資料庫的相對應欄位中

'access數據連接conn就不寫了。這里舉個簡單例子。
strAddr=server.MapPath("data.xls")
set excelconn=server.createobject("adodb.connection")
excelconn.open "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+strAddr+";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"
set rs=server.CreateObject("adodb.recordset")
set rs1=server.CreateObject("adodb.recordset")
sql="select * from [Sheet1$]"
rs.open sql,excelconn,1,1
if not(rs.bof and rs.eof) then
rs.movenext
do while not rs.eof
sql1="select * from student"
rs1.open sql1,conn,1,3
rs1.addnew
rs1("name")=rs(0)
rs1("bj")=rs(1)
rs1("xb")=rs(2)
rs1("xh")=rs(3)
rs1.update
rs1.close
rs.movenext
loop
end if
rs.close()

set rs=nothing
set rs1=nothing

excelconn.Close()
set excelconn=nothing
你調試看看,應給可以看明白的吧。。Q群85486978

㈧ ASP代碼中如何把EXCEL數據導入到SQL SERVER資料庫中

'定義打開Excel表格的函數
Function OpenExcel(path)
dim excel,rs,strsql
On Error Resume Next
Set rs = Server.CreateObject("ADODB.RecordSet")
Set excel = Server.CreateObject("ADODB.Connection")
excel.Open "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & path
If Err.number<> 0 Then
Response.Write "請檢查上傳的Excel文件內部格式,文件無法打開,導入失敗!"
Response.End
End If
strsql = "SELECT * FROM [Sheet1$]" '在這里指定工作薄名稱,默認是Sheet1$
Set rs = excel.Execute(strsql)
Set OpenExcel = rs
End Function

'讀取文件中的內容
Dim rsInfo
Set rsInfo = Server.CreateObject("ADODB.RecordSet")
Set rsInfo = OpenExcel("E:/a.xls") '這里的文件路徑請用Server.Path來獲取

'檢查讀取結果
If rsInfo.State<> 1 Then
Response.Write "請檢查Excel文件中的工作表命名是否為Sheet1,導入失敗!"
Response.End
End If

If rsInfo.EOF And rsInfo.BOF Then
Response.Write "沒有找到Excel表中的數據,導入失敗!"
Response.End
End If

If IsNull(rsInfo.Fields(0)) or Trim(rsInfo.Fields(0))="" Then
Response.Write "沒有找到Excel表中的數據,導入失敗!"
Response.End
End If

'這里指定導入數據的列數,列數少了退出
If rsInfo.Fields.Count< 7 Then
Response.Write "Excel表中的數據列數不正確,導入失敗!"
Response.End
End If

'創建資料庫連接
dim dbrs,conn,sql
Set conn = Server.CreateObject("ADODB.Connection")
Set dbrs = Server.CreateObject("ADODB.Recordset")
'注: G_DB_ConnectString是連接資料庫的字元串,自己定義
conn.ConnectionString = G_DB_ConnectString
conn.Open '打開資料庫連接

'創建臨時表
sql = "IF EXISTS (SELECT * FROM sysobjects WHERE xtype='U' and name='tmp_PartRes') "
sql = sql & "BEGIN Drop table tmp_PartRes END "
sql = sql & "Create table tmp_PartRes([ID] int identity(1,1),"
sql = sql & "PartID varchar(100),Brand varchar(100),[Package] varchar(100),"
sql = sql & "BatchNo varchar(100),[Price] varchar(100),[Stock] varchar(100) default('0'),"
sql = sql & "Brief varchar(100),StockFlag int default(1),"
sql = sql & "SuperFlag int default(1),SaleFlag int default(1))"
conn.execute sql

'取表結構 注意: 只取表的結構, 不要數據, 因為我這個是剛創建的臨時表, 沒有數據,
'如果表中存在數據, 要注意加上條件句, 防止取到數據 如: where ID = -1
sql = "SELECT * FROM tmp_PartRes"
dbrs.CursorLocation = 3 '這一定要設置為3
dbrs.Open sql,conn, 3, 4 '這里的參數必須是3和4

'取到表結構後, 必須要把活動連接及資料庫連接關閉,這個很重要, 否則導入速度特慢.
Set dbrs.ActiveConnection = Nothing
conn.close

'提取Excel中的數據, 將excel中的數據放入到資料庫表中.
While Not rsInfo.EOF
If Trim(rsInfo.Fields(0))<> "" Then
dbrs.AddNew
dbrs("PartID") = Ucase(Trim(rsInfo.Fields(0)))
dbrs("Brand") = Trim(rsInfo.Fields(1))
dbrs("Package") = Trim(rsInfo.Fields(2))
dbrs("BatchNo") = Trim(rsInfo.Fields(3))
dbrs("Price") = Trim(rsInfo.Fields(4))
If Trim(rsInfo.Fields(5))<>"" Then
dbrs("Stock") = Trim(rsInfo.Fields(5))
Else
dbrs("Stock") = "0"
End If
dbrs("Brief") = Trim(rsInfo.Fields(6))
End If
rsInfo.MoveNext
Wend

'更新記錄集到資料庫臨時表
conn.Open '打開連接
dbrs.ActiveConnection = conn
dbrs.UpdateBatch '批量更新函數

'更新完成後, 關閉連接
dbrs.Close
Set dbrs = Nothing
rsInfo.Close
Set rsInfo = Nothing

㈨ 關於ASP連接Excel資料庫無法更新的問題

為什麼會有Visual FoxPro 要淘汰的傳聞呢,我不是很清楚。但這兩年微軟對Visual FoxPro的不宣傳態度卻是為這股謠言起到了推波助瀾的作用。另外Visual FoxPro 確實是一個容易引起誤會的產品,初級用戶很容易對它產生「不怎

我們說Visual FoxPro是面向對象化的語言,是有根據的。面向對象化的語言必須具備四個特性:抽象(Abstraction)、封裝(Encapsulation)、繼承(Inheritance)、多態(Polymorphism)。對照一下Visual FoxPro,是不是支持這四大特性!

當然,Visual FoxPro 與C++和Object Pascal 一樣都是歷史悠久的語言,所以語言中有很多面向過程的語素。我知道很多學校在教學中,只是教導學生們使用Visual FoxPro的面向過程的語言特色,而忽視了面向對象的教學,同樣的問題也存在於廣大的 Visual FoxPro 程序員中。我們必須明白:不能因為我們沒有使用Visual FoxPro面向對象的強大功能,而說Visual FoxPro不是面向對象的語言,這就像不能因為天下雨、沒有出太陽,而說太陽被天狗吃掉了——多麼的幼稚可笑!

我們知道Visual FoxPro對數據的操作沿用了多年來的面向過程的做法,這與現在流行的開發工具有很大的不同。我覺得,微軟這樣做是有它的道理的:

第一,面向過程的數據處理,更能發揮XBase語言體系的靈活與隨意的特色。這一點,你用過其他的資料庫開發工具,然後再用用Visual FoxPro就明白了。

第二,不直接提供面向對象的數據處理組件,不代表不允許用戶封裝自己的數據處理組件。很多優秀的 Fox程序員,都會自己封裝專門數據處理組件,這才是Visual FoxPro編程的高尚境界!

面向記錄與面向集合之爭

根據筆者的淺薄認知,關系型資料庫處理可以分為面向記錄操作和面向集合操作。

各種開發工具支持的客戶端游標體系就是面向記錄操作的,它們支持記錄之間的絕對定位,更明白地說就是可以在記錄之間導航,諸如:SKIP、GO TOP之類的語句。Visual FoxPro 無疑是此道的絕對高手,20年的語言發展,聚集了大量面向記錄的語言要素。這是因為這樣,我們才會反復強調:Visual FoxPro的Cursor 體系靈活、強大!

各類大型資料庫,如Oracle、SQL Server 是面向集合處理的代表,看看正統的SQL 語言,絕對沒有數據導航之說,數據記錄之間是平等的,一切都要講關系、擺條件!

隨著技術的發展,人們開始注意到,不能分割這兩種對數據的操作方式,於是大型資料庫支持了游標語素,Fox也支持符合規范的SQL 語言。

產品定位導致Visual FoxPro變化不易為人們感覺。微軟要把Visual FoxPro作為三層構架(或是多層構架)的中間層開發工具。

什麼是三層構架呢?第一層是用戶界面:它包含了用戶界面,讓使用者輸入,輸出,查詢等工作;第三層是資料層:它就是用來放資料的地方,一般是指後端資料庫,主要有包括 Oracle、SQL Server 等,它主要是提供一個很大的地方,來有規則的存放數據;第二層是商務邏輯層(中間層):有人要說了:存取資料,直接從第一層跳到第二層可不可以?當然可以,沒有人規定不能走捷徑,而且從資料庫直接抓資料,既快又好,那為什麼搞出個第二層呢?

商務規則是經常變化的,比如上班從8 點改為10 點,那電腦怎那麼知道老闆因為不景氣少讓大家上二個小時班呢?它一定無法知道,你必須告訴它,這時問題就來了,如果你有很多部電腦,例如:100 台,你就得一部部換新程序。如果這是一個掛在Internet上的網路程序,難道總讓用戶download新程序不成?

更重要的是,在大量客戶存在的環境里,傳統的兩層構架根本沒有能力承擔巨大的工作壓力,必須通過某種中間系統實現壓力平衡,這就是中間層的另一妙用!

中間層是沒有圖形界面設計的代碼編寫,並且是OOP方式的代碼編寫,不僅要熟悉後台資料庫的特性,還要考慮前台界面工具的特性,最重要的是商務邏輯的構架,同時還要求懂得IIS、MTS(COM+)、NT的安全設置等復雜枯燥的東西。有趣的是,近年來 Visual FoxPro 的各種改進,更多的是在這些方面下功夫,到了最新版本的Visual FoxPro 7 更是在此方面增加了若干特性,下面就讓我用四個問題來說明Visual FoxPro 在開發中間層方面的貢獻:

問題一:Visual FoxPro能開發出穩定、有效率的Server程序嗎?能,在1999年發布的Visual FoxPro SP 3中微軟賦予了Visual FoxPro開發多線程進程的內組件的能力,並增加了新的運行時刻庫VFPnT.DLL(n代表版本號),支持其運行,在這個運行庫中,刪除了大量老式的和界面控制元素,使得它更小巧。但是由於Visual FoxPro6本身不是很穩定(加打SP4或SP5才有所改善),所以這個很棒的功能在Visual FoxPro 6下並不能充分發揮,直到Visual FoxPro 7出現才使它的顯示出英雄本色!

問題二:分布式的事務、動態負載平衡怎麼實現?Visual FoxPro 7對COM+有很好的支持,藉由COM+就可以解決這兩個問題了!

問題三:作為Server程序,客戶程序怎樣與Server交換數據集合?這是Visual FoxPro 6開發的Server程序的致命弱點,我們知道Visual FoxPro是用來處理數據的,但不能與外界自由交換數據集合會大大降低開發、使用以及程序運行效率!在Visual FoxPro 7里我們XML就可以快速、輕易的傳遞大型數據集合,真正做到數據集的來去自由。現在回想Visual FoxPro 6中我們用的那種「循環+屬性」的做法,真有天上與人間的感受!

問題四:能不能讓Visual FoxPro開發的Server任由客戶使用,叫干什麼就干什麼?可以的,在Visual FoxPro 7里提供了一個全新的函數:ExecScript()。有了它,就可以一次執行多條客戶端送來的符合Visual FoxPro規范的語句:你可以定義變數、做查詢、更新數據、修改表結構……

微軟確實實踐著讓Visual FoxPro在中間層運行的承諾。但遺憾的是:由於國內用戶的水平、國內軟體應用的領域,對大多數Fox Fans 無法感受Visual FoxPro日新月異的變化——對他們來說,Visual FoxPro確實「沒有改變」!

Visual FoxPro 只能局限於桌面應用程序的開發嗎?

技術在進步,軟體技術的應用不斷在拓寬,Internet 已經是眾多開發工具競相支持的應用領域。Visual FoxPro 從版本 5 開始不斷擴充對Internet的支持,到最新的Visual FoxPro 7 更是增加了對Web Service的支持。我們可以把Visual FoxPro 對Internet的支持分為三大部分:

第一,簡單的HTML的轉換。Visual FoxPro 自帶的「Web 發布」就是這類型的工具,利用HTML和DHTML的模版,支持Visual FoxPro數據的Web化,這是一種全靜態的 Web 支持。

第二,適合於企業內部使用的 Active Document 技術。是不是希望快速、簡單的把Visual FoxPro應用程序轉變為Web 應用程序,這個Active Document 技術就是最佳的選擇。它支持 App 程序運行在IE中,它的缺點是:在客戶端必須安裝Visual FoxPro的運行庫、客戶端與資料庫間依然是緊密的有狀態的關系,屬於F/S構架——只是界面能夠運行在IE之中了。它的開發快速以及它依然基於傳統構架,決定了這個技術只能運行在企業內部,一般不能在廣域網路中發布。

這技術是Visual FoxPro 6提出的,當時在 Tool 菜單里還有一個專門的菜單項。到了而今的Visual FoxPro 7,這個菜單項已經取消了,但並不是說Visual FoxPro 7 不支持Active Document,只是這種並不出色的技術沒有必要再放在醒目的位置了。

第三,基於COM 的 Web 應用。

Visual FoxPro 真正能被用於Web 開發,就是通過 COM 支持的。

這里您要有個認識,作為資料庫開發工具,Visual FoxPro 不是FronPage這樣的用於開發Web 界面的工具(也許未來的 Visual FoxPro 會支持 Web 界面的開發)。Visual FoxPro 完全是作為 Server 運行在網站的後台,為各種應用提供服務。使用 Visual FoxPro 編寫的 COM 組件能夠被IIS支持,壓在後台進行各種運作——這就是真正意義上的Visual FoxPro 的Web應用,也是典型的多層構架的中間層!

這個階段,Visual FoxPro 對 Web的支持有可以劃分為三個層次:

FoxISAPI。
這是最先登場的技術,當年 ASP 技術還沒有出現的時候,我們在 IIS 里就可以通過 ISAPI 技術實現動態網頁開發。

Web Server
ASP 技術出現了,我們知道 ASP 技術的一大特色就是支持伺服器端的組件的應用。用 Visual FoxPro 的編寫的 COM 組件就能運行在 IIS 里,供 ASP 調用。

Web Service
這是 Visual FoxPro 7 的新特性,也是當前最熱門的技術。它與Web Service的最大不同就是:Web Server 組件只能通過 ASP 程序調用,而Web Service可以供任何系統在全球范圍調用,無論客戶端的硬體平台、軟體平台,只要它支持SOAP、支持XML就可以了。
更誇張一點說:只要能上網,就可以享用 Web Service 提供的服務!

有人也許會問:我可以用VB、VC++建立對象組件時,為何我要用Visual FoxPro 來建立相同的組件? 微軟對這一問題有專門的評論,大意為:快、重復使用性、跨語言重復使用性。「快」是指用Visual FoxPro開發的組件擷取、處理資料都極為迅速,並且Visual FoxPro能夠非常迅速的建立字元串。到底有多快,我想數據處理、存取的速度大家平時都領教過了,字元串生成速度我這里有個數據不妨一看,這是台灣的一位高手做的試驗——將1M的數據寫入文本中,結果VC++ 6.0程序用了3.5秒、VB 6.0程序用了11秒、Java 1.1.5用了24秒、Visual FoxPro 6.0用了7秒;「重復使用性」是指Visual FoxPro具備OOP的功能;「跨語言重復使用性」是指Visual FoxPro編寫的對象編譯以後成為COM、COM+對象組件,這樣就可以在其他語言中使用它了。

不要以為Visual FoxPro是「低端產品",無論從資料庫(DBF Base)品質還是開發環境評價Visual FoxPro,它都是一個「高端工具」。

許多人認為Visual FoxPro只能用來開發單用戶系統或是文件伺服器構架的小型網路系統——這是謬誤——這種無知的言論在許多講C/S、三層構架的書中都有(特別是一些VB、PB、Delphi的資料庫編程書)。我可以很負責任的告訴大家完全可以用Visual FoxPro開發C/S結構的系統。這里說的C/S構架絕對是正宗的,不是用什麼F/S構架在糊弄大家。在C/S構架中我們常常選擇Visual FoxPro作為客戶端開發工具,以Oracle、SQL Server等網路資料庫壓在後台,使用Visual FoxPro內置的Remote View和SPT技術,這樣就可以完美地解決問題。這里不能詳細展開,只特別介紹Visual FoxPro的本地引擎在開發中的作用。Visual FoxPro的本地引擎特別強大(上文我們說過處理百萬條記錄不費吹灰之力),我們在設計系統時可以十分簡單的將遠程數據與本地數據結合,很簡單、很有效地控制網路數據流量、提高系統工作效率(我看過不少VB、Delphi、PB的書,他們很少在怎樣控制網路數據流量、提高系統工作效率論述,不知是不屑一顧,還是其他什麼原因)。

我認為Visual FoxPro的本地引擎在C/S構架下起碼有三項偉大的用途。其一:非經常變動數據的本地存儲。我國的郵政編碼與地區的關系是相對穩定的數據,而且數據量也不是太小,我想總有上千個記錄(我沒仔細考察過具體情況),我們把這些信息存儲在客戶端的計算機中,就可以在使用郵政編碼及其相關信息時從本地得到數據,這樣能使高系統效率同時節省網路資源(這是C/S開發的重要原則),只在郵政編碼發生變化時在伺服器上統一更新,下載更新客戶機上的數據。如果用別的軟體實現同樣的功能,絕對比Visual FoxPro麻煩而且效果絕對不及Visual FoxPro,這因為Visual FoxPro的數據引擎直接支持遠程數據讀取,能很好的融合本地數據與遠程數據;其二:離線數據包。單位里總有人出差,在千萬里路之外能不能拿著筆記本為客戶發訂單、與客戶簽合同,就像在自己的辦公室一樣?當他回到公司時只要把筆記本連到伺服器中,發送更新就行了。Visual FoxPro的離線視圖是經濟且高效安全的方案(當然您可以使用遠程撥入或建一個Web網站,這些Visual FoxPro可能幹)。其實離線數據包還有一個重要的功能:當下載的數據是大量的(除非萬不得已請不要這樣設計系統),這種情況下使用離線視圖可以數據集自動轉化為物理表,充分利用Visual FoxPro的高速與靈活,完成後連線更新後端數據源——一切都很簡單。我認為:離線視圖絕對是Visual FoxPro在C/S系統中的一個賣點,雖然ADO也支持類似的東西,但肯定不及Visual FoxPro有效率;其三:數據驅動。您是否知道,Visual FoxPro中絕大多數文件格式實際上都是DBF文件,如DBC、SCX、FRX等,他們都可以由Visual FoxPro的本地引擎驅動完成復雜的任務。在設計C/S結構時如果要存儲用戶設置、自定義文件格式,用Visual FoxPro的本地引擎幫忙絕對比其他軟體簡單,因為你用的是換湯不換葯的方法,但它簡單、有效率。

Visual FoxPro 開發C/S系統時,最與眾不同的特色就是對遠程數據的操控是通過本地資料庫來實現的,Remote View、Connection都作為本地資料庫的對象被管理起來,完美的銜接本地數據與遠程數據。這種在客戶端建立遠程數據邏輯的做法,與最新的ADO.NET有相似之處!

在三層構架中,Visual FoxPro可以充當任意一層的任務,但本人以為大中型系統的資料庫部分應以網路資料庫為主。客戶端界面用Visual FoxPro也是可以的,但一般限於企業內部,在Internet上我們通常使用IE作為客戶界面。在三層構架中Visual FoxPro最勝任中間層的開發,它簡單(開發難度與普通的Visual FoxPro項目相差不大)、快速的字元串生成、支持COM技術、它支持(MTS)COM+技術、它支持XML(Visual FoxPro 7.0提供3個與XML有關的函數)、它具有強大本地數據引擎、靈活的數據處理方式、它支持多線程的服務組件的開發。

可能有人要問:用ASP+腳本語言一樣可以開發Web系統,何必加個中間層。的確,目前在市面上與多討論Web的書都直接使用腳本語言來開發整個系統,這是十分不正確的做法,甚至有寫書還說硬體越來越快,因此使用腳本語言來開發整個系統並沒有什麼關系。會說出這樣話的作者通常都是沒有實際開發Web應用經驗的人。腳本語言,如VBScript是一種解釋性語言,運行效率很低,他們只合適作為膠水程序。開發Web系統正統的做法是:把應用邏輯編寫成COM、DCOM對象,然後用少量的腳本語言來驅動/使用這些對象。這樣系統開發時工作量會大一些,但它符合開發任何資料庫應用程序的最基本的原則:分離應用邏輯與用戶界面。這樣系統就會變的容易維護了——你可以經常變換那些膠水程序來改變Web頁面,應用邏輯變換時你又可以改變某一個邏輯對象,而不用為雜亂且關系復雜的代碼發愁。再者,由於Visual FoxPro是高效、靈活的數據處理語言,任何商業邏輯都可以用它來代碼化,並且您可以獲得幾十倍甚至上百倍於ASP+腳本語言的運行效率,以及更為強健的執行效果。

Visual FoxPro 的語言看上去蠻難的。

人們在贊揚 Visual FoxPro 始終是褒揚他的易學易用,我不同意這種觀點(我不知道他們站在什麼立場上說話)。我看問題的角度是「成為一名還過得去的 Visual FoxPro 程序員」,我的結論是Visual FoxPro 作為一個開發工具並不是好學的。這不是說Visual FoxPro的語法、概念像C那麼繁復,而是指:即使是簡單的應用,也要掌握很多Visual FoxPro的概念、語法、函數,可能還要較深入了解OOP——往往讓人摸不到深淺。比如,拿資料庫系統最重要的功能——查詢來講,Visual FoxPro就「花樣繁多」。我曾統計過,不算「List、Browse"等互動式命令,Visual FoxPro起碼支持4條命令(Find,Seek,Locate,Select-SQL)、3個函數(Lookup(),Seek(),Indexseek()),(當然其中有的已經淘汰)這些命令的關鍵字、函數的參數眾多,有的要求索引, 有的可以用索引但要求優化索引……而這在VB、Delphi中絕對就只是兩三個方法的事情。從上面的例子中如果您只看到了Visual FoxPro的繁雜,那麼您就完全錯了:在VB、Delphi實現查詢功能的原理與Visual FoxPro應是一樣的,但他們封裝了許多環節,而Visual FoxPro就把許多東西更低階(當然不如VC++那麼低層次,但是已經比使用對象的語言難多了)的展示給我們,所以Visual FoxPro的開發者往往比使用其他的開發工具開發者更會思考、更懂得的資料庫開發的真諦,因為工具逼迫他們朝這個方向努力……

用Visual FoxPro有助於提高程序員對資料庫概念的理解。許多在Visual FoxPro程序員中不是問題的問題往往成為那些使用對象處理數據的程序員的噩夢。比如在Visual FoxPro中數據緩沖、事務處理都是重要的概念(事實上要幹活就必須了解這些東西),在其他開發環境中一味強調方便快速往往忽視程序員的基本概念培養,編出的東西要麼效率不高、要麼老出問題。讀書人都懂得:基本概念、基本理論是命根子,這就是Visual FoxPro帶給我們的好處。

有趣的是Visual FoxPro繁、難也就到這個程度了 ,他的學習難度曲線是所有語言中最平穩的——不像在有些語言中,基礎開發十分容易,一旦深入卻難度很高。在Visual FoxPro中初級應用、中級應用、高級應用的難度差異很小——就是那些似曾相識的語句、易於理解的函數。Visual FoxPro的這種高級應用不太難,初級應用不十分容易的特性,對初入門者來講是無法體會其中的妙處的,這就造成了Visual FoxPro的不太友好形象;

同時,Visual FoxPro的難度卻帶來了很多的好處(前文我已談了很多),Visual FoxPro比其他語言在數據處理上更快速、更靈活,數據處理方式更多、更完備。設想一下用Visual FoxPro開發數據對象時,我們可以使用豐富多彩的語句、函數,實現十分復雜、變化多端的功能,用其他語言開發數據對象,它們的功能只能是建立在已有的數據對象的功能之上(這叫繼承),變化就少了,功能就弱了。如果要實現Visual FoxPro的Xbase+SQL 那樣靈活、強大的功能恐怕要使用底層的API了——這太可怕了!

OOP不僅是指「面向對象」的開發環境,更是一種開發思想、開發技術,Visual FoxPro 在後者上做得更好。

我們講過Visual FoxPro完全支持OOP的開發,但有趣的是在數據處理方面,微軟實際上沒有提供什麼現成的對象(FFC是Visual FoxPro 6.0才有的,且封裝性、適應性都不盡如人意),這一點我不知是Visual FoxPro的福氣還是禍害。說「福氣」這將逼迫程序員掌握這門並不太簡單的技術(可能用「思想方法」更恰當),而不是簡單地使用對象。OOP對於中間層的開發來講是很重要的,因為COM組件必須是建立在OOP思想上的,要開發這種組件就必須掌握OOP技術;講「禍害」這使Visual FoxPro變得不易於學習和使用了(就我個人而言,真正體會到「用Visual FoxPro應會編制數據處理對象」這一問題也是在使用了Visual FoxPro好長時間之後的事情了)。事實上現在很多誹謗攻擊Visual FoxPro的人都沒有深刻的認識這一問題——他們只感到Visual FoxPro用起來不及Delphi、PB、VB容易,但他們從不想該怎樣開發數據處理對象,到編寫COM組件時就要他們的命了。那些「精英們」大多不懂OOP,他們只懂「點」操作符號——彷彿對象的使用就是OOP,他們有什麼資格來批評我們呢?
Visual FoxPro的界面能力真的很差嗎?
我認為作為資料庫系統的開發工具微軟為我們提供的那些內置控制項加上十幾個附送的ActiveX控制項已經夠用了。
我們討論Visual FoxPro控制項應從兩方面入手,第一就是界面美觀問題,再就是數據處理、分析是否方便。很多人很在意的前一個問題,我倒是不以為然——控制項不多特別是美化界面的控制項不多並不代表Visual FoxPro就開發不出賞心悅目的軟體,我的感受是軟體界面的專業化程度、高級別的審美、整體的效果要比個別的界面特效重要千萬倍,實際效果可要好上千萬倍。看看國外用Visual FoxPro編制的程序您就會明白這個道理了;我對Visual FoxPro的不滿在於數據處理、分析控制項不全,特別是缺少了一批數據分析控制項。比如沒有可以與數據捆綁的圖表控制項、沒有可以列示捆綁交叉表的表格控制項、沒有可以捆綁數據的數據透視表格控制項……在這個問題上Visual FoxPro確實應該向Delphi、PB等軟體學習,這是我們對未來的Visual FoxPro的期望!
Visual FoxPro與OLE DB、ADO
ADO是Windows環境下主流的數據存取的解決方案,那些以對象操作數據的語言基本上都使用ADO實現數據存取,如:VC++、VB、Delphi。在Visual FoxPro的開發環境中好像看不到ADO的影子,是不是Visual FoxPro不支持ADO呢?ADO其實是一組COM對象,Visual FoxPro支持COM,當然支持ADO。
我認為:Visual FoxPro對ADO的支持只是停留在較低的水平。這並不是說Visual FoxPro限制了什麼ADO的功能(所有功能都能用),而是指:用起來不方便,不像在VB、Delphi中方便。這種不方便主要體現在ADO的Recordset無法與Visual FoxPro的內置控制項捆綁。其原因是:Visual FoxPro 不認識ADO的Recordset,只能將記錄逐條讀取,而不是一下子認得整個Recordset。這樣數據就不能被捆綁了,同時也不能對ADO直接使用Visual FoxPro強大的數據處理功能(ADO是用來存取數據而處理數據還要靠客戶軟體)。
就象Visual FoxPro使用ODBC連接遠程數據源那樣,ADO通過OLE-DB與數據提供者對話。 (By the way: Visual FoxPro 7是OLE-DB提供者,這樣就可以 通過正宗的OLE-DB驅動程序在其他開發工具中使用ADO存取Visual FoxPro數據了 。)
ADO能為Visual FoxPro帶來什麼?首先要注意的是:ADO與Visual FoxPro的數據引擎是毫無關系的系統,從某種程度上講ADO的出現為Visual FoxPro提供了一種全新的遠程數據處理方式。

ADO是多層應用程序中數據集合傳遞的最好解決方案。如果我們用Visual FoxPro開發了一個中間層系統,用VB開發了用戶界面,當中間層要傳遞一個cursor到VB的客戶端就不可以使用Visual FoxPro的cursor或DBF,因為VB不認得他們。使用ADO的Recordset就可以解決問題,因為大家都認得他;Visual FoxPro 只能通過Visual FoxPro 7支持XML後才能彌補Visual FoxPro本地引擎在應用程序傳遞數據集的不足。

ADO可以存取非關系型資料庫。ADO是微軟的Universal Data Access構架的主將,它可以存取Excel等非關系型數據資料庫的數據。通過ODBC存取遠程數據的Visual FoxPro就無此能力了。但是我使用了ADO存取Excel後很失望,因為連接必須是獨占的,所以這種功能帶給我們的幫助只是有限的!
ADO可以彌補Visual FoxPro在遠程數據存取時的不足之處。譬如Visual FoxPro不認得SQL Server中nText、nVarchar、nChar等數據類型,但ADO可以。
在Visual FoxPro使用ADO存在如下缺點:
Visual FoxPro只能通過COM的方式識別ADO的Recordset,不能像表格那樣讀寫它,這樣就出現了兩個問題:Recordset無法與Visual FoxPro的內置控制項捆綁;無法直接使用Visual FoxPro強大的數據處理功能(ADO是用來存取數據而處理數據還要靠客戶軟體)。

Visual FoxPro中使用代碼實現ADO的全部功能,但代碼量大、書寫麻煩。
對待以上不足Visual FoxPro開發小組在Visual FoxPro 6推出不久後就發布了一個叫VFPCOM.DLL的組件,可以用它部分解決ADO的Recordset與Visual FoxPro的cursor的轉換和ADO事件的綁定 ,Visual FoxPro 更是內置支持 COM 事件綁定。在本文的第一版中,筆者曾有這樣的希望:「Visual FoxPro 更具效率的支持ADO」。現在我的看法有了一些改變,我認為在 Visual FoxPro 處理數據,無論是本地、還是遠程數據,無論是什麼構架的系統,最佳的解決方案認識內置的數據引擎,而不是現在流行的ADO,現在 Visual FoxPro對ADO的支持程度已經足夠了!

Visual FoxPro的數據引擎與ADO相比有什麼優勢呢?

Visual FoxPro數據引擎系統資源耗用小,ADO畢竟是COM組件要花用更多的資源。

作為系統共用組件,使用ADO可能會在不同應用系統中產生ADO的版本問題,這就像我們常遇見的ActiveX的控制項版本問題。

ADO只是數據存取組件,它沒有數據處理功能,要處理數據必須使用客戶應用程序,如VB、Delphi。Visual FoxPro數據引擎同時支持數據存取、數據處理,我已多次強調Visual FoxPro在這兩方面的偉大功能;

ADO沒有本地資料庫作為強大的支持,有需要將遠端數據暫時存放在物理文件中ADO絕對不及Visual FoxPro。Visual FoxPro的資料庫是桌面資料庫中最好的,遠端數據暫存其中不僅方便,而且伸縮性強。

㈩ 用ASP寫EXCEL資料庫的連接參數怎麼寫

vb下可以使用的連接:
MyXLSConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"""

MyXLSRs.Open "Select * from [Sheet1$]", MyXLSConn, adOpenDynamic, adLockOptimistic

你的錯誤應該是表名稱問題使用[sheet1$]
adOpenDynamic = 2
adLockOptimistic = 3

ado打開excel是有限制的,以上方法在vb上測試通過
在asp應該沒問題,你把表名改掉,將方式由1,1改為2,3

閱讀全文

與asp連接excel資料庫實例相關的資料

熱點內容
如何在伺服器上共享文件夾 瀏覽:960
有什麼好看的漫畫網站 瀏覽:507
斗羅單女主是寧榮榮 瀏覽:736
帶著現代武器打鬼子小說 瀏覽:566
大尺度男同裸露電影 瀏覽:513
雙女主同性戀電影泰劇 瀏覽:594
影院後排選不了 瀏覽:428
鳳梨蘋果筆游戲 瀏覽:826
下載一部電影大概多少GB 瀏覽:714
看yellow有哪些網址 瀏覽:523
李采潭和池恩瑞演的電影 瀏覽:900
php企業網站 瀏覽:429
360不是原版文件 瀏覽:527
舊版安卓酷狗音樂下載 瀏覽:391
數控用g75下料怎麼編程 瀏覽:948
張雪峰客串電影完整版 瀏覽:439
ps怎麼把另外一個文件圖層復制 瀏覽:735
B影視網址 瀏覽:729
林奕是哪部小說的人物 瀏覽:285
近一兩年的台灣電影 瀏覽:318

友情鏈接