第一篇:數(shù)據(jù)庫問題小結
學習小結 1.前言:
前段時間的學習一直都沒有融入實際的操作,因此這個階段的學習我想結合著數(shù)據(jù)庫來對配置數(shù)據(jù)進行一個定位。為了達到這個目的我就決定再我自己機子上安裝oracle數(shù)據(jù)庫,并安裝omm網(wǎng)管服務器軟件,雖然這個過程自己自認為已經(jīng)相當嫻熟了,(呵呵)可是實際的操作中由于數(shù)據(jù)庫,網(wǎng)管軟件安裝的先后順序不同出現(xiàn)了很多的問題。在這里我就想把我所遇到的問題以及解決辦法告訴大家。
2.安裝數(shù)據(jù)庫
首先聲明下我是在window下安裝我的數(shù)據(jù)庫軟件的,因此配置過程不像linux上面安裝時需要做諸多修改。雖然自己以前也裝過,但是為了提高準確性還是從網(wǎng)管部人那里要了一個安裝文檔,一切按部就班按著文檔走也沒出現(xiàn)什么問題。直到配置監(jiān)聽程序時候出現(xiàn)了點問題:這里需要解釋下我的數(shù)據(jù)庫實例名為:tomc,IP為:10.62.88.71。
2.1 監(jiān)聽問題
在配置完監(jiān)聽程序之后我按照文檔在listener.ora文件中加入了
(SID_DESC =(SID_NAME = tomc(ORACLE_HOME = D:oracleproduct10.2.0db_1)(global_dbname = tomc)也就是加了一個tomc的數(shù)據(jù)庫監(jiān)聽實例,本來這個文件里面是有一個默認的監(jiān)聽實例,想想也是有道理的我就沒多想,繼續(xù)進行本地net服務名配置,在即將結束的時候輸入網(wǎng)絡服務名,一般默認輸入數(shù)據(jù)庫實例名(記住這點和listener.ora文件里的監(jiān)聽實例是必須對應的)。可是文檔中輸入的是:
開始我也沒細想,就按照文檔完成了輸入,結果進行連接測試的時候老測試不成功。出現(xiàn)這樣的提示:
我就對前面的配置進行了檢查最后發(fā)現(xiàn)應該是剛才那個網(wǎng)絡服務名出現(xiàn)了錯誤。如果設置成tomc_10.61.88.71的話在tnsnames.ora文件中會相應的生成
TOMC_10.61.88.71 =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.61.88.718)(PORT = 1521))(CONNECT_DATA =(SID = TOMC)))而我們前面的監(jiān)聽程序里面卻是tomc,因此導致連接不成功。意識到這一點之后我決定不按照文檔了(反正這一段自己以明白),在配置監(jiān)聽程序的時候listener.ora文件我不做修改采用默認,本地Net服務名配置時網(wǎng)絡名我設置成tomc_10.62.88.71,其余按照規(guī)定的填寫??墒瞧婀值氖虑橛职l(fā)生了,當我測試連接的時候:
然后貌似卡住了,什么都不顯示了。。
2.2 注冊表問題
我百思不得其解,頗為郁悶,自信心受到嚴重的打擊,哈。不過既然問題出來了,就要想辦法解決,首先我對前面的配置數(shù)據(jù)默默的回想了一遍確定沒什么問題,然后考慮到是否是上一次配置失敗對這次的連接有了影響從而導致局部死機的情況出現(xiàn)。
1.我想到了關閉進程,在任務管理器中我講自己懷疑有可能的進程都一一關掉,結果絲毫沒有發(fā)生任何變化。。。。。。失敗。2.最后打開注冊表編輯器(運行regedit),我搜索 oracle 字段,鼠標直到:
具體的東西也看不明白,不過看到OracleOraDb10g_home1TNSListener這個子樹。我就意識到或許是由于它在作祟,第一次錯誤配置時已經(jīng)在注冊表中生成了相應的信息,后面的配置可能無法對他進行覆蓋。雖然原因不是很明白但是大概可以定位到這里了,我就將這個表項刪除,然后重啟機器。(不知道linux服務器遇到是否會遇到這個問題)機器起來后按照剛才的監(jiān)聽配置完成之后測試:
成功!
3.導入數(shù)據(jù)庫備份數(shù)據(jù)
這里先做個說明:早先我從網(wǎng)管服務器上導出了一份數(shù)據(jù),此時我想講這份數(shù)據(jù)導入到我自己數(shù)據(jù)庫中,這樣我自己也可以隨時查看并做修改。文件存放的目錄為:D:網(wǎng)管版本包
3.1缺少指定導入用戶參數(shù)
懶得用工具了,我就隨手打開命令端口輸入:
結果導入失敗 生成相應的日志文件,內(nèi)容如下:
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0Production With the Partitioning, OLAP and Data Mining options
經(jīng)由常規(guī)路徑由 EXPORT:V10.02.01 創(chuàng)建的導出文件
已經(jīng)完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入.正在將 SYSTEM 的對象導入到 SYSTEM.正在將 UEP 的對象導入到 UEP IMP-00003: 遇到 ORACLE 錯誤 1435 ORA-01435: 用戶不存在
成功終止導入, 但出現(xiàn)警告。
這個時候我真郁悶,開始我懷疑命令錯誤了,可是這個命令自己早已經(jīng)亂熟于心了。不過我還是進入D:NetNumenums-svrtoolsoraEIPT打開了網(wǎng)管軟件里面提供的工具,我用UltraEdit-32 軟件打開run.bat,先講這個工具里代碼的調用關系理清然后找到導入文件那一段代碼:
通過代碼也堅定了我的命令內(nèi)容,格式的正確性。(如果有興趣的兄弟可以把那些工具都打開然后仔細地看看里面的內(nèi)容,其實還蠻有意思)
3.3 真相大白
排除了命令的原因之后,實在想不到還有什么問題。無奈之下給黃建軍總共發(fā)了一封郵件,說了一下情況,還是人家黃總猛啊,我問題一說黃總馬上就答復我了:
黃總一說我也頓時明白了,我剛裝的數(shù)據(jù)庫里面還沒有和網(wǎng)管匹配的表結構,這樣導入數(shù)據(jù)時數(shù)據(jù)就不知道在數(shù)據(jù)口中如何的分布。在這里黃總還提到了一點數(shù)據(jù)庫版本有對上號,oracle 10g的數(shù)據(jù)和oracle 9i的數(shù)據(jù)就不能兼容。此外還要考慮到網(wǎng)關版本的問題,不同的網(wǎng)管版本其表結構也不一樣,因此在數(shù)據(jù)導入的時候一定要注意到這點。
余下的安裝omm服務器就沒什么好說的了,然后再次導入之后果然成功了。
4.查看數(shù)據(jù)庫
安裝完數(shù)據(jù)庫之后,我自然沒有忘記我的初衷(根據(jù)網(wǎng)管配置數(shù)據(jù)再查看相應的數(shù)據(jù)庫表)。在這里向大家介紹一款工具,PLSQL Developer,這款工具是數(shù)據(jù)庫開發(fā)者的最愛,里面有圖形化的操作界面,可以圖形化進行創(chuàng)建,插入,刪除等操作,十分方便。由于大學中我經(jīng)常用這個工具因此一切輕車熟路。
進去之后,直接點開索引尋找?guī)炖锏谋恚?/p>
然而貌似沒有我在參數(shù)字典上看到的那些熟悉的表名,問了研發(fā)部的一個哥們,才知道自己犯了多么愚蠢的一個錯誤。在網(wǎng)管軟件中我們所有的配置數(shù)據(jù)都在數(shù)據(jù)庫中的uep用戶下保存(此時我才真正明白了uep的含義,同時也明白了為什么導出數(shù)據(jù)的時候都是導出uep用戶的),而所有告警信息都存放在trns_pm 用戶下。明白了這點,我馬上在網(wǎng)管的相關屬性文件里找到了這兩個用戶的密碼:
trns_pmtrnspm uepu_tywg_2008
后面的事情就沒什么好說的了。呵呵
4.經(jīng)驗總結
上面遇到的這些問題如果大家都用腳本運行的話,估計都不會出什么錯誤,但是我認為作為一個高級技術支持人員還是要對一些東西理解的清晰一點,通過發(fā)現(xiàn)問題----思索問題---定位問題----解決問題 這個過程我增強了自己對系統(tǒng)的理解,并提高了自己的動手以及解決問題的能力。
第二篇:數(shù)據(jù)庫小結
數(shù)據(jù)庫總結
1、數(shù)據(jù)庫開課6天,到今天已全部結束
2、學習內(nèi)容
一、數(shù)據(jù)庫的安裝與刪除:已獨立上機操作實現(xiàn)。
二、數(shù)據(jù)利器sql 1)用sql進行單表查詢:
查詢語句: select 所查內(nèi)容 from 表 where 條件
排序: select 所查內(nèi)容 from 表 where 條件order by排序的依據(jù)
分組:select 所查內(nèi)容 from 表 where 條件 group by 分組依據(jù) 其他要顯示的內(nèi)容(having 條件)
字段運算查詢:select 運算 from表
變換查詢:select 原名 新名 from 表
2)多表查詢:
無條件多表查詢 select 所差內(nèi)容 from 多個表
等值多表查詢
select 所差內(nèi)容 from 多個表 where 一個
表內(nèi)容=另一個表內(nèi)容
非等值多表查詢select 所差內(nèi)容 from 多個表 where 一個
條件 and(or)其他條件
3)嵌套查詢
帶in、any(some)、all、exist的嵌套查詢:
select 所查內(nèi)容 from 表 where 內(nèi)容 in(select 所查
內(nèi)容 from 表 where 條件)
注意:any(some)包括等于條件、all不包括
并(union)、交(intersect)、差操作(minus): 4)常用的函數(shù)查詢
Ceil(n)取大于等于n的最小整數(shù)
Floor(n)取小于等于n的最大整數(shù)
Mod(m,n)取m整除n后的余數(shù)
Pow(m,n)取m的n次方
Round(m,n)取四舍五入,保留小數(shù)點后n位
Sign(n)n》0取1;n=0取0;n《0取-1
Avg(字段名)求平均值
Count(字段名)或者count(*)統(tǒng)計總數(shù)
Min(字段名)計算數(shù)值型字段最小數(shù)
Max(字段名)計算數(shù)值型字段最大數(shù)
Sum(字段名)計算總數(shù) 5)錄入數(shù)據(jù)
單行錄入:Insert into 數(shù)據(jù)表(字段1,2。。)values
(字段1的值,2的值。。)
多行錄入:insert into 數(shù)據(jù)表(字段1,2。)(select
(字段1或運算,2或運算。。)from
數(shù)據(jù)表 where 條件)表間數(shù)據(jù)復制:create table 表名 as(select 字段from原
有的表where 條件)
6)刪除記錄
刪除記錄:Delete from 數(shù)據(jù)表 where 條件
整表數(shù)據(jù)刪除:truncate table 數(shù)據(jù)表 7)更新數(shù)據(jù)
直接賦值更新:update 數(shù)據(jù)表 set 字段名1=新的賦值,字段名2=新的賦值。where條件
嵌套更新:update 數(shù)據(jù)表 set 字段名1=(select 字段列
表 from 數(shù)據(jù)表 where 條件),字段名(select字段列表 from 數(shù)據(jù)表 where條件)。。
三、編程進階Pl/sql 1)程序結構
Delacre
定義語句段
Begin
執(zhí)行語句段
Exception
異常處理語句段 End 2)基本語法
定義變量%type:獲得字段的數(shù)據(jù)類型
定義變量%rowtype:獲得整個記錄的數(shù)據(jù)類型f 定義記錄類型變量 :type 記錄類型 is record()
定義一維表類型變量:type 表類型 is table of 類型 index by
binary_integer, 表變量名 表類型
定義多維表類型變量
3)表達式
數(shù)值表達式:加+,減-,乘*,除/,乘方**
字符表達式:連接符號||
關系表達式(9種): 4)事務處理
提交:Committee
回滾:rollback
保存點:savepoint 5)游標
定義、打開、提取、關閉 6)過程
創(chuàng)建、查詢、修改、執(zhí)行
·
第三篇:操作數(shù)據(jù)庫小結
一.查詢操作
對數(shù)據(jù)進行查詢操作時,有兩種情況:一是查詢單個值,二是 查詢?nèi)舾蓷l記錄。
1、查詢單個值
需要使用Command對象的ExecuteScalar()方法:步驟如下:(1)、創(chuàng)建Connection對象(數(shù)據(jù)庫連接對象)。(2)、創(chuàng)建查詢用的SQL語句。(3)、利用SQL語句和Connection對象創(chuàng)建Command對象。(4)、打開數(shù)據(jù)庫連接,調用Connection對象的Open()方法。(5)、調用Command對象的ExecuteScalar()方法,返回一個標量值。(6)、操作完成后關閉數(shù)據(jù)庫連接,調用Connection對象的Close()方法。
2、查詢?nèi)舾蓷l記錄
需要使用Command對象的ExecuteReader()方法:步驟如下:(1)、創(chuàng)建Connection對象(數(shù)據(jù)庫連接對象)。(2)、創(chuàng)建查詢用的SQL語句。(3)、利用SQL語句和Connection對象創(chuàng)建Command對象。(4)、打開數(shù)據(jù)庫連接,調用Connection對象的Open()方法。(5)、調用Command對象的ExecuteReader()方法,返回一個DataReader對象。(6)、調用DataReader對象的Read()方法逐行讀取記錄,如果讀到記錄返回Ture,否則返回False.(7)、使用(type)dataReader[列名或索引]的方式讀取這一行中某一列的值。(8)、關閉DataReader對象(9)、操作完成后關閉數(shù)據(jù)路連接,調用Connection對象的Close()方法。
二、非查詢操作
對數(shù)據(jù)庫執(zhí)行非查詢操作時,包括增加,修改,刪除數(shù)據(jù),都使用Command對象的ExecuteNonQuery()方法,步驟如下:
(1)、創(chuàng)建Connection對象(數(shù)據(jù)庫連接對象)(2)、創(chuàng)建增刪改用的SQL語句。(3)、利用SQL語句和Connection對象創(chuàng)建Command對象。(4)、打開數(shù)據(jù)庫連接,調用Connection對象的Open()方法。(5)、調用Command對象的ExecuteNonQuery()方法執(zhí)行命令,返回受影響的行數(shù)。(6)、操作完成后關閉數(shù)據(jù)庫連接,調用Connection對象的Close()方法。
本章總結
1、使用DataReader查詢數(shù)據(jù)記錄,通過Command對象的ExecuteReader()方法返回一個DataReader對象。
2、使用DataReader讀取數(shù)據(jù)室每次調用Read()方法讀取一行數(shù)據(jù)。
3、DataReader使用完后要調用它的Close()方法關閉。
4、使用Command對象的ExecuteNonQuery()方法對數(shù)據(jù)進行增刪改的操作。
5、ExecuteNonQuery()方法返回受影響的行數(shù)。
6、ListView(列表視圖)控件有5種視圖模式,重點是Details 列表視圖的Items屬性表示包含在空間中的所有項的結合,每一個項都是一個ListViewItem,使用Items.Add()方法向列表視圖中添加一項 調用列表視圖項的SubItems.AddRange()方法添加它的子項
ListViewItem lviStudent = new ListViewItem(loginID);創(chuàng)建一個ListView項 lviStudent.Tag=(int)dataReader[“StudentId”];lvStudent.Items.Add(lviStudent);//向ListView中添加一個新項 lviStudent.SubItems.AddRange(new string[] {studentName,studentNo,userState});//向當前項中添加子項
7、ContextMenuStrip(快捷菜單)控件可以與其他控件結合使用,通過設置控件的ContextMenuStrip屬性來指定它的快捷菜單。
想鼠標右鍵單擊文本框時出現(xiàn)快捷菜單,就選中文本框?在屬性窗口中找到它的ContextMenuStrip屬性,選擇已有的右鍵菜單控件 txtLoginId.Focus():?
下拉列表:
創(chuàng)建Command對象?調用Command對象的ExecuteReader()方法創(chuàng)建DataReader對象(sqlDataReader dataReader=command.ExecuteReader())?使用DataReader的Reader()方法逐行讀取數(shù)據(jù)(放回bool類型)?讀取當前行的某列的數(shù)據(jù)(cboGrade.Items.Add(dataReader[“列名”]))?關閉DataReader對象,Close()方法
向數(shù)據(jù)庫中添加數(shù)據(jù):
創(chuàng)建Connection對象?定義要執(zhí)行的SQL語句?創(chuàng)建Command對象?執(zhí)行ExecuteNonQuery()方法?根據(jù)返回的結果進行后續(xù)的處理
雙擊顯示出ID:
MessageBox.show(dataGridView1.SelectedRows[0].cells[“ColID”].value.ToString());
刷新:
1,BindStudentByLoginID(txtBox.Text)2,listView.Items.RemoveAt(Listview1.SelectedIndices[0])//只能刪除選中的行(選中第幾個)
第四篇:Visual Basic數(shù)據(jù)庫操作方法小結
Visual Basic數(shù)據(jù)庫操作方法小結
筆者和同事們在使用VB對數(shù)據(jù)庫操作應用時,總結了如下的幾種方法,供初學者參考,希望能對大家有所啟發(fā)。
1、數(shù)據(jù)庫打開/關閉方法的選擇
在通常情況下,數(shù)據(jù)庫的打開操作是在程序代碼中使用OpenDatabase方法實現(xiàn),其格式如下:Set database=workspace.OpenDatabase(dbname,options,readonly,connect)
可以通過指定數(shù)據(jù)庫名字、打開方式、連接信息等參數(shù)打開一個現(xiàn)已存在的數(shù)據(jù)庫,使用Close方法即可關閉該數(shù)據(jù)庫。由于涉及VB代碼的編寫,其軟件編制工作比較復雜。另一方面,VB的數(shù)據(jù)控件(Data Control)也可以執(zhí)行數(shù)據(jù)庫的打用關閉操作。我們可以在數(shù)據(jù)控件的屬性窗口中預先填好數(shù)據(jù)庫打開的相關參數(shù),一旦該數(shù)據(jù)控件啟動,數(shù)據(jù)庫便會自動以指定的方式打開,而當該數(shù)據(jù)控件終止時,對應的數(shù)據(jù)庫也將自動關閉。對于按這二種方式打開的數(shù)據(jù)庫,其后的數(shù)據(jù)庫訪問操作沒有什么本質的區(qū)別。
以上兩種數(shù)據(jù)庫打用關閉的方法各有千秋:使用OpenDatabase方法可以在程序運行中動態(tài)地設置數(shù)據(jù)庫打開參數(shù),并且可以多次以不同的方式打開和關閉同一個數(shù)據(jù)庫,具有相當大的靈活性。而如果使用數(shù)據(jù)控件,則不需要另外編寫VB代碼,只要在程序編制時預先設置數(shù)據(jù)庫的相關參數(shù),程序開始運行后便會自動地以我們指定的方式打開數(shù)據(jù)庫,并在程序終止時自動關閉該數(shù)據(jù)庫,因此顯得相當方便。在實際應用中,可以視情況的不同而采用不同的處理方法:如果要求數(shù)據(jù)庫在程序運行中始終處于打開狀態(tài)并且其打開方式保持不變(如一直處于只讀狀態(tài)),那么,可以采用數(shù)據(jù)控件方法打開數(shù)據(jù)庫;如果要求數(shù)據(jù)庫在程序運行中時而打開時而關閉,或者經(jīng)常在只讀和讀寫方式間來回切換,則只能采用OpenDatabase方法編寫程序代碼。
2、通過相對路徑指定數(shù)據(jù)庫文件
在很多情況下,不管采用上述哪一種方法打開數(shù)據(jù)庫,都必須在程序設計時就指定需要打開的數(shù)據(jù)庫文件。但是,我們通常不能保證該軟件完成后一定會被安裝在每臺機器的同一目錄下。因此該數(shù)據(jù)庫文件的絕對路徑一般在設計時還難以完全確定,只能采用相對路徑的辦法來解決這個問題。
在VB中,App對象是一個全局對象,用來提供當前應用程序的相關信息,其Path屬性反映的是當前應用程序的可執(zhí)行文件(。exe)所在的絕對路徑,并且只在程序運行時才有效。通過使用App對象的Path屬性,可以方便地獲得當前程序所在的目錄路徑。因此,如果把數(shù)據(jù)庫文件存放在與程序路徑相關的目錄下,便可以在程序設計時就指定數(shù)據(jù)庫文件的相對路徑,當程序運行時,通過App對象的Path屬性動態(tài)地獲取其絕對路徑。
下面的一段代碼,用來在程序開始運行時獲取程序的路徑,并賦值給變量AppPath,然后在數(shù)據(jù)控件Data1的Database Name屬性中與數(shù)據(jù)庫文件的相對路徑“DatabaseSample.Mdb”結合,組成數(shù)據(jù)庫文件的絕對路徑。這段代碼通常出現(xiàn)在Form-Load中: Dim AppPath As String ' 設置路徑變量 AppPath=App.Path ' 獲取程序路徑 If Right(AppPath,1)<>“"Then AppPath=AppPath+”“ ' 若路徑尾部沒有”“,則添加之
Data1.Database Name=AppPath+”DatabaseSample.mdb“ ' 與相對路徑結合,組成絕對路徑
3、用SQL語句完成數(shù)據(jù)庫操作
SQL也就是結構化查詢語言,是用于數(shù)據(jù)庫查詢的一種通用標準語言,在現(xiàn)今的大多數(shù)數(shù)據(jù)庫軟件系統(tǒng)中均得到支持。1句SQL語句通??梢酝瓿梢郧坝稍S多條語句才能完成的復雜的數(shù)據(jù)庫查詢操作,具有較高的工作效率。
在VB中,SQL語句往往作為某些特定方法的參數(shù)而得以執(zhí)行(沒有FoxPro等數(shù)據(jù)庫軟件那樣直截了當),比如可以把SQL語句作為Execute方法的1個字符串參數(shù)而執(zhí)行,其格式如下: object.Execute SQL-statement,options 在其中的SQL-statement字符串中,可以使用標準的SQL語句,如:SELECT、INSERT、DELETE及UPDATE等。下面的例子是在數(shù)據(jù)庫對象DB中執(zhí)行SQL語句,從當前數(shù)據(jù)庫的EMployees數(shù)據(jù)表中,選擇字段LastName='King'的所有記錄,并將這些記錄的LastName和FirstName這2個字段的內(nèi)容,保存到同一數(shù)據(jù)庫的Backup數(shù)據(jù)表中:
DB.Execute(”SELECT LastName,FirstName INTO Backup FORM Employees WHERE LastName='King';“)
4、For語句在數(shù)據(jù)庫中的應用
For語句是幾乎所有高級語言都有的語句,通常用來完成指定次數(shù)的循環(huán),在循環(huán)中可以完成一些指定的工作。而在VB中,F(xiàn)or語句還可以用來對某個集合中的每1個元素循環(huán)執(zhí)行若干操作,而不必預先設定循環(huán)次數(shù),其格式如下: For Each element In group [statements] Next[element] For語句的這一特點可用于按照指定條件搜索整個數(shù)據(jù)庫。以下的代碼便可以對數(shù)據(jù)庫對象DB所指的數(shù)據(jù)庫中的所有數(shù)據(jù)表進行搜索,并完成指定的操作:
For Each Td In DB.Table Defs ' 循環(huán)搜索數(shù)據(jù)庫中的所有數(shù)據(jù)表…… …… ' 對數(shù)據(jù)表執(zhí)行指定的操作Next
5、復制數(shù)據(jù)庫的結構定義
在數(shù)據(jù)庫應用中,經(jīng)常需要在程序運行時動態(tài)地把一個數(shù)據(jù)庫的結構定義完整地復制到另一個數(shù)據(jù)庫中。由于新型的數(shù)據(jù)庫可以同時包含若干個數(shù)據(jù)表,而每個數(shù)據(jù)表的結構定義又不近相同,因此,如果通過逐個定義數(shù)據(jù)表中所有字段的類型、長度的方法復制數(shù)據(jù)庫結構,則該程序將變得相當冗長和復雜,日后的維護也比較困難。但是,通過綜合運用上述的幾種應用方法,用相當短的VB語句完成同樣的工作,實且程序也易于理解和維護。程序清單如下:
Sub CopyDBStrnc(src As String,dst As String)' 定義子程序Copy DBStrnc,用于復制數(shù)據(jù)庫結構
' 調用參數(shù): ' src--源數(shù)據(jù)庫的文件名
' dst--目的數(shù)據(jù)庫的文件名
Dim DB As Database,Td As TableDef,SQLstr As String ' 定義變量:
' DB--數(shù)據(jù)庫對象
' Td--數(shù)據(jù)表定義對象
' SQLstr--SQL語句變量
Set DB=Create Database(dst,dbLangGeneral)' 創(chuàng)建目的數(shù)據(jù)庫dst ' 關閉目的數(shù)據(jù)庫dst DB.Close Set db=OpenDatabase(src,False,True)' 以共享、只讀方式打開源數(shù)據(jù)庫src For Each Td In DB.TableDefs
' 循環(huán)搜索源數(shù)據(jù)庫DB中的所有數(shù)據(jù)表定義
If(Td.Attributes And dbSyste mObect)=0 Then
' 忽略系統(tǒng)數(shù)據(jù)表,只針對用戶定義的數(shù)據(jù)表進行搜寫
SQLstr=”SELECT * INTO“+Td.Name+”IN“+dst+”'FROM“+
Td.Name+”'IN“+src+”'WHERE False'
' 對SQL語句變量賦值,完成以下功能:
' 從源數(shù)據(jù)庫src的數(shù)據(jù)表中選擇所有字段
' 存入目的數(shù)據(jù)庫dst的同名數(shù)據(jù)表中
' 選擇數(shù)據(jù)表的字段定義,不包括任何記錄
DB.Execute(SQLstr)' 執(zhí)行SQL語句
End If Next ' 結束循環(huán)搜索
DB.Close ' 關閉源數(shù)據(jù)庫 Exit Sub ' 結束子程序定義
第五篇:淺析電子數(shù)據(jù)庫的法律保護問題(范文)
1994年北京陽光數(shù)據(jù)公司(以下簡稱陽光公司),與國內(nèi)的15家商品交易所、兩家證券交易所談判,分別簽定了實時信息數(shù)據(jù)使用、編輯、轉播許可合同。陽光公司將這些數(shù)據(jù)重新整理編輯加密后,使其成為標準化的數(shù)據(jù)流,通過國家衛(wèi)星數(shù)據(jù)廣播系統(tǒng)發(fā)送出去,供全國各地的用戶使用。這個數(shù)據(jù)系統(tǒng)被稱為“SIC實時金融”系統(tǒng)。由于該數(shù)據(jù)信息能夠給使用者帶來
可觀的經(jīng)濟效益,故陽光公司與每一個客戶簽訂的合同中約定:他們?yōu)榻K端客戶,無權向任何人再轉發(fā)該系統(tǒng)數(shù)據(jù)?!薄?995年11月陽光公司無意中發(fā)現(xiàn),上海霸才數(shù)據(jù)信息公司(以下簡稱霸才公司)正在使用并轉播陽光公司的‘SIC實時金融’系統(tǒng),而霸才公司未向陽光公司購買‘SIC實時金融’系統(tǒng)使用權,是通過接收發(fā)送給簽約客戶上海易利實業(yè)有限公司的信息獲取的。陽光公司遂起訴霸才公司,要求停止侵權行為,公開登報、消除影響并賠禮道歉,賠償損失500萬元。[1]在本案審理過程中,原告陽光公司訴稱“SIC實時金融”系統(tǒng)是按一定編排體例進行編排,具有獨創(chuàng)性,屬編輯作品。但是,無論是一審的北京市第一中級人民法院,還是二審的北京市高級人民法院,都認為“SIC實時金融”系統(tǒng),不是著作權法意義上的作品。1998年北京市高級人民法院作出了終審判決,其稱:“SIC實時金融系統(tǒng)”信息作為一種新型的電子信息產(chǎn)品應屬電子信息庫,在本質上是特定金融數(shù)據(jù)的匯編。這種匯編在數(shù)據(jù)編排和選擇上并無著作權法所要求的獨創(chuàng)性,不構成著作權法意義上的作品,不能受到著作權法的保護。”在本案中,法院認為陽光公司的“SIC實時金融”數(shù)據(jù)庫不構成著作權法上的作品,而僅僅以“不正當競爭”為依據(jù)判令被告賠償陽光公司408400元,并當面道歉。但是,本案所涉及的法律問題是一個較為復雜的法律問題,世界各國對數(shù)據(jù)庫的保護問題的態(tài)度是不盡相同的,但在我國對于這方面的司法保護是相對落后的。因此,有必要借鑒世界各國經(jīng)驗,完善我國法律法規(guī),以建立有我國特色的數(shù)據(jù)庫保護制度,規(guī)范市場競爭。
二、“數(shù)據(jù)庫”的概念及法律保護的難點
(一)“數(shù)據(jù)庫”的概念及法律性質上述案件訴爭的焦點是陽光公司對其編輯的數(shù)據(jù)流能否享有權利,以及享有什么樣的權利。要回答這個問題,必須首先明確電子數(shù)據(jù)庫的概念以及其法律性質。嚴格意義上的電子數(shù)據(jù)庫是指為了滿足某一個部門中多個用戶應有的需要,按照一定的數(shù)據(jù)模型在計算機系統(tǒng)中組織、儲存和使用的相互聯(lián)系的數(shù)據(jù)集合。所以說,數(shù)據(jù)庫應當稱之為信息集合體(collectionofinformation)。數(shù)據(jù)庫的普遍出現(xiàn)和運用是計算機的普及和技術成熟的結果,數(shù)據(jù)庫技術是計算機軟件技術的一個組成部分,是對信息進行收集、整理、儲存與高速傳遞處理的一門技術。數(shù)據(jù)庫具有集合性、有序性、可訪問性以及信息容量的龐大性等特征。從世界大多數(shù)國家的一般規(guī)定來看,受版權保護的數(shù)據(jù)庫從作品屬性看應屬于編輯作品,并且匯編的內(nèi)容既可以是享有著作權的作品,也可以是不享有著作權的其它數(shù)據(jù)、材料。但是,這些匯編的數(shù)據(jù)庫內(nèi)容是不受數(shù)據(jù)庫法律制度所保護的。另外,如果某種數(shù)據(jù)庫沒有達到版權保護標準,那么法律給其以特殊保護。
(二)數(shù)據(jù)庫法律保護的問題癥結所在—對“原創(chuàng)性”標準的理解根據(jù)著作權法的原理,資料和數(shù)據(jù)庫是兩個不同的權利客體,兩者都必須具備原創(chuàng)性,數(shù)據(jù)庫的著作權并不及于數(shù)據(jù)庫中的資料,這些資料可能有獨立的著作權,也可以沒有著作權。具有著作權的資料,其著作權并不涵蓋數(shù)據(jù)庫;沒有著作權的資料,人人可以使用,可能組成不同著作權的數(shù)據(jù)庫。對于不具有原創(chuàng)性的資料和數(shù)據(jù)庫是否應予保護,長久以來爭論不休;甚至對于具備著作權要件的資料和數(shù)據(jù)庫,也有人主張不應給予保護。數(shù)據(jù)庫在著作權法上被視為是一種編輯,即將現(xiàn)有的資料加以搜集、整理。當初認為編輯著作應受保護是基于編輯人的勞力和投資,這種說法,即所謂“血汗論”。任何人可以因為這些“血汗”而節(jié)省了自己的勞動。20世紀以后,這種觀念漸漸改變,原創(chuàng)性和創(chuàng)造力成為著作權保護的標準。美國最高法院在1991年的Feisty一案中,明確指出白頁電話薄資料雖然豐富,也使許多人得到方便,但不具有任何創(chuàng)意,因而不受著作權法保護。因此,對“原創(chuàng)性”標準的不同理解就成為數(shù)據(jù)庫是否享有著作權的關鍵。將數(shù)據(jù)庫納入著作權法(版權法)的保護范圍已被國際條約和大多數(shù)國家著作權法(版權法)所采納。雖然有些國家仍然強調“原則性”標準,但此種標準已經(jīng)大為寬松,如美國著作權法第101條指出數(shù)據(jù)庫系指以搜集并整合既有素材或資料為形式之著作,該類素材和資料必須經(jīng)由選取、整理、編排,且就整體而言具有原創(chuàng)性標準。歐盟的數(shù)據(jù)庫法律保護指令第三條第一項也指出:“一數(shù)據(jù)庫欲得著作權之保護,仍然必須在資料的選擇與編排上表現(xiàn)出精神創(chuàng)作性始可”,并在第七條提出“對于需要為重大投資,然而在資料之選擇及編排上不具有精神創(chuàng)作性之數(shù)據(jù)庫,提供特別立法保護。