目錄
A.安装mono2.6
B.安装freetds
C.安装OracelInstantClient
0. Linux下访问Oracle和SqlServer的小工具
1. Linux下mono访问SqlServer数据库
 
2.Linux下mono访问Oracle数据库
3.基于Apache的mono对SqlServer的访问
4.基于Apache的mono对Oracle的访问
首頁 資料庫 mysql教程 Linux+mono+Apache访问SQLServer数据库和Oracle数据库

Linux+mono+Apache访问SQLServer数据库和Oracle数据库

Jun 07, 2016 pm 03:18 PM
sqlserver 訪問

这几天研究Linux平台下,如果通过桌面程序和ASP.net访问SqlServer数据库和Oracle数据库,发现网上写的好多文章都不完善,很多是无用的多余的设置,而又不讲原理,本人研究了几日,经证实如下设置完全能满足要求。 前提:OS:CentOS5.5 A.安装mono2.6 增加一个

这几天研究Linux平台下,如果通过桌面程序和ASP.net访问SqlServer数据库和Oracle数据库,发现网上写的好多文章都不完善,很多是无用的多余的设置,而又不讲原理,本人研究了几日,经证实如下设置完全能满足要求。

前提:OS:CentOS5.5

A.安装mono2.6

增加一个新的代理文件,写入http://ftp.novell.com/pub/mono/download-stable/RHEL_5/。这是mono官方提供的针对CentOS的最新的mono平台。

yum --disablerepo=extras *mono* (注意:/etc/yum.repos.d/CentOS-Base.repo中的[extras]节也有一个版本的mono,不过很老了应该是1.1版本的,这里屏蔽掉了这个源,从而只安装最新版本的mono)

安装完后,会自动修改httpd相应的设置,无需手工再修改之。

B.安装freetds

yum install freetds

C.安装OracelInstantClient

去官方下载.zip压缩文件即可,就几十MB大小,解压到/opt/oracle/。

0. Linux下访问Oracle和SqlServer的小工具

 0.1命令行访问SqlServer

        安装完freetds后,会安装一个名为tsql的小工具,基本使用方法:

   #tsql -S SqlServer服务器IP地址 -p 端口号 -U 用户名 -P 密码

  正确登陆后,出现如下提示符:

  >

  输入

 >select * from 表名;回车

 >go;回车

然后会显示查询的内容。

 0.2命令行访问Oracle

 安装好InstantClient后,再下载一个sqlplus(很小)解压都同一目录下即可。把这一目录加入PATH

 然后执行如下命令连接远程Oracle数据库

#sqlplus 用户名/密码@服务器IP/实例名

成功登陆后显示

SQL >

输入

SQL> select * from 表名;回车

即可看到查询结果。

1. Linux下mono访问SqlServer数据库

 

调用方式:

mono在调用方式上与.net Framework完全相同,都是采用System.Data.SqlClient命名空间中的类来完成数据库操作。

实现原理:

System.Data.SqlClient中的类库的实现靠的是通过P/Invoke调用freetds共享库的函数完成。所以必须安装freetds,在CentOS5.5中通过yum install freetds完成。

示例代码:

 sqlserver.cs

 

编译命令:gmcs -r:System.Data sqlserver.cs

运行命令:mono sqlserver.exe

 

 

2.Linux下mono访问Oracle数据库

 

调用方式:

mono在调用方式上与.net Framework完全相同,都是采用System.Data.OracleClient命名空间中的类来完成数据库操作。

需要注意的是,目前微软已经不建议在.net 平台上用System.Data.OracleClient了,因为Oracle自己提供了一个Oracle.Data.Access类库来提供.net对Oracle数据库的访问。然而在mono平台上,System.Data.OracleClient仍是最好的访问Oracle数据库的方式。

实现原理:

System.Data.OracleClient中的类库的实现靠的是通过P/Invoke调用libclntsh.so共享库的函数完成。需要安装Oracle提供的InstantClient,这个软件是典型的绿色软件,下载后解压即可。需要注意的是要让mono能找到这个共享库,因此需要把它所在的路径加入LD_LIBRARY_PATH环境变量。例如解压后目录是/opt/oracle/instantclient_11_2,那么需要在/etc/profile中,写入如下:

export LD_LIBRARY_PATH=/opt/oracle/intantclient_11_2:$LD_LIBRARY_PATH,另外还需要设置NLS_LANG如下:

export NLS_LANG=AMERICAN_AMERICA.UTF8

最后做个软连接

ln -s /opt/oracle/instantclient_11_2/libclntsh.so.0.0.0 /opt/oracle/intantclient_11_2/libclntsh.so

然后执行ldconfig刷新缓存。

此时mono已经能够访问oracle数据库了。

示例代码:

 oracle.cs

编译指令:gmcs -r:System.Data.OracleClient oracle.cs

运行指令:mono oracle.exe

3.基于Apache的mono对SqlServer的访问

 在CentOS下,如果通过yum安装的freetds和mono以及mod_mono,那么没有什么问题了,与1基本相同。不再累述。

4.基于Apache的mono对Oracle的访问

这里需要注意,在/etc/profile设定的LD_LIBRARY_PATH和NLS_LANG等环境变量,在httpd里并不知情,httpd是服务程序,不是从shell启动的。此时/opt/novell/mono/bin/mod-mono-server也是通过httpd启动的,所以也不知道这些环境变量,这样导致了mono无法确定需要通过p/Invoke调用的libclntsh.so,所以会导致无法访问Oracle.解决方式:

修改/opt/novell/mono/bin/mod-mono-server,修改后如下:

#!/bin/sh

export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2:$LD_LIBRARAY_PATH

export NLS_LANG=AMERICAN_AMERICA.UTF8

exec /opt/novell/mono/bin/mono $.................................

然后重新启动httpd服务即可。

 

如果需要在JDBC下访问Oracle和SqlServer,参见我的另一篇博客:http://blog.csdn.net/smstong/article/details/8129536

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

sqlserver怎麼匯入mdf文件 sqlserver怎麼匯入mdf文件 Apr 08, 2024 am 11:41 AM

匯入步驟如下:將 MDF 檔案複製到 SQL Server 的資料目錄(通常為 C:\Program Files\Microsoft SQL Server\MSSQL\DATA)。在 SQL Server Management Studio(SSMS)中,開啟資料庫並選擇「附加」。點選“新增”按鈕,選擇 MDF 檔案。確認資料庫名稱,點選確定按鈕即可。

sqlserver資料庫中已存在名為的物件怎麼解決 sqlserver資料庫中已存在名為的物件怎麼解決 Apr 05, 2024 pm 09:42 PM

對於 SQL Server 資料庫中已存在同名對象,需要採取下列步驟:確認物件類型(表格、檢視、預存程序)。如果物件為空,可使用 IF NOT EXISTS 跳過建立。如果物件有數據,使用不同名稱或修改結構。使用 DROP 刪除現有物件(謹慎操作,建議備份)。檢查架構更改,確保沒有引用刪除或重新命名的物件。

怎麼查看sqlserver連接埠號 怎麼查看sqlserver連接埠號 Apr 05, 2024 pm 09:57 PM

若要查看 SQL Server 連接埠號碼:開啟 SSMS,連線到伺服器。在物件資源管理器中找到伺服器名稱,右鍵單擊它,然後選擇“屬性”。在「連線」標籤中,查看「TCP 連接埠」欄位。

sqlserver服務無法啟動怎麼辦 sqlserver服務無法啟動怎麼辦 Apr 05, 2024 pm 10:00 PM

當 SQL Server 服務無法啟動時,可採取下列步驟解決:檢查錯誤日誌以確定根本原因。確保服務帳戶具有啟動服務的權限。檢查依賴項服務是否正在執行。禁用防毒軟體。修復 SQL Server 安裝。如果修復不起作用,重新安裝 SQL Server。

iOS 17:如何控制哪些應用程式可以存取您的照片 iOS 17:如何控制哪些應用程式可以存取您的照片 Sep 13, 2023 pm 09:09 PM

在iOS17中,Apple可以更好地控制應用程式可以看到的照片內容。繼續閱讀,了解如何按應用程式管理應用程式存取權限。在iOS中,Apple的應用程式內照片選取器可讓您與應用程式分享特定照片,而照片圖庫的其餘部分則保持私密。應用程式必須要求存取您的整個照片圖庫,您可以選擇授予應用程式以下存取權限:受限存取–應用程式只能看到您可以選擇的圖像,您可以隨時在應用程式中或透過前往「設定」&gt ;“隱私和安全性”>“照片”來查看所選圖像。完全存取權限–App可以查看照片

sqlserver誤刪資料庫怎麼恢復 sqlserver誤刪資料庫怎麼恢復 Apr 05, 2024 pm 10:39 PM

若誤刪 SQL Server 資料庫,可採取下列步驟還原:停止資料庫活動;備份日誌檔案;檢查資料庫日誌;復原選項:從備份還原;從交易日誌還原;使用 DBCC CHECKDB;使用第三方工具。請定期備份資料庫並啟用交易日誌以防止資料遺失。

sqlserver資料庫在哪裡 sqlserver資料庫在哪裡 Apr 05, 2024 pm 08:21 PM

SQL Server 資料庫檔案通常儲存在下列預設位置:Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data可透過修改資料庫檔案路徑設定來自訂資料庫檔案位置。

sqlserver安裝失敗怎麼樣刪除乾淨 sqlserver安裝失敗怎麼樣刪除乾淨 Apr 05, 2024 pm 11:27 PM

如果 SQL Server 安裝失敗,可透過下列步驟清理:解除安裝 SQL Server刪除註冊表項刪除檔案和資料夾重新啟動計算機

See all articles