आप ओरेकल डेटाबेस से कनेक्ट करने के लिए निम्न विधि का उपयोग कर सकते हैं:(यह वाष्प समुदाय की मदद से संभव था।)
----- ऑरैकल ड्राइवर को काम करने के लिए, मैंने इस विधि को उबंटू में बांधा है --------------- ओरेकल क्लाइंट को इस तरह स्थापित करने की आवश्यकता है कि हेडर और लाइब्रेरी पथ को परिभाषित किया जा सके, आप इन्हें oracle वेबसाइट से प्राप्त कर सकते हैं।
oracle-instantclinet*-basic-*.rpm
oracle-instantclinet*-devel-*.rpm
oracle-instantclinet*-sqlplus-*.rpm
--निम्नलिखित कमांड का उपयोग करके इस प्रकार डाउनलोड किए गए पैकेज को स्थापित करें
sudo alien -i oracle-instantclinet*-basic-*.rpm
sudo alien -i oracle-instantclinet*-devel-*.rpm
sudo alien -i oracle-instantclinet*-sqlplus-*.rpm
-- ubuntu में libaio1 इंस्टॉल करें
sudo apt install libaio1
-- यह पथ ~/.bashrc
. में होना चाहिए#oracle home and library path
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.2/client64/lib:/usr/local/lib
- Githubgit क्लोन से OCILIB लाइब्रेरी डाउनलोड करें https://github.com/vrogier/ocilib.git ए> (या नवीनतम संस्करण डाउनलोड करें / ocilib 4.5.2 पर परीक्षण किया गया) - ocilib फ़ाइल cd को ocilib फ़ोल्डर में निकालें, मेक को कॉन्फ़िगर करें और इंस्टॉल करें
tar -zxf ocilib-4.5.2-gnu.tar.gz
cd ocilib-4.5.2
./configure --with-oracle-headers-path=/usr/include/oracle/12.2/client64/ --with-oracle-lib-path=/usr/lib/oracle/12.2/client64/lib CFLAGS="-O2 -m64"
make
sudo make install
-- यदि आपको यूनिकोड से निपटने की आवश्यकता है तो इस कॉन्फ़िगरेशन का उपयोग करें, आमतौर पर आपको इसकी आवश्यकता नहीं होती है
./configure --with-oracle-headers-path=/usr/include/oracle/12.2/client64/ --with-oracle-lib-path=/usr/lib/oracle/12.2/client64/lib --with-oracle-charset=wide CFLAGS="-O2 -m64"
--उपरोक्त विधि आपकी मशीन में OCILIB स्थापित करती है।-- अपने वाष्प परियोजना में उपयोगकर्ता OCILIB पुस्तकालय के लिए पैकेज.स्विफ्ट फ़ाइल में निम्नलिखित शामिल करें
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "myAPIProject",
dependencies: [
// 💧 A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", from: "3.0.0"),
// 🔵 Swift ORM (queries, models, relations, etc) built on SQLite 3.
.package(url: "https://github.com/vapor/fluent-sqlite.git", from: "3.0.0"),
//Oracle wrapper for swift
.package(url: "https://github.com/h1257977/SwiftOracle.git", from: "0.1.7")
],
targets: [
.target(name: "App", dependencies: ["FluentSQLite","SwiftOracle", "Vapor"]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: ["App"])
]
)
-- Routes.swift में निम्नलिखित शामिल करें:
import Vapor
import SwiftOracle
let service = OracleService(host: "192.168.1.12", port:"1521", service: "orcl")
let b = Connection(service: service, user:"test", pwd:"oracle")
final class VReq: Content {
var name: String?
var age: String?
init (NAME: String, AGE: String) {
self.name = NAME
self.age = AGE
}
final class VMdata {
func getData() throws -> [VReq] {
try! b.open()
b.autocommit = true
let cursor = try! b.cursor()
try! cursor.execute("select * from userlist")
//iterates each row in the cursor and maps only the values (keys are unique) from the dictionary of each rows, if its nil it will replace with "null"
var items = cursor.map { row in row.dict.mapValues { "\($0 ?? "NULL")" }} // output as [[String:String]]
//takes each dictionary in the items array and returns a VReq
let result = items.map { dict in VReq(NAME: dict["NAME"] ?? "NULL", ADDRESS: dict["ADDRESS"] ?? "NULL", USER_AGE: dict["USER_AGE"] ?? "NULL")}
return result
}
}
public func routes(_ router: Router) throws {
router.get("test") { req -> [VReq] in
let val = VMdata()
let vdata = try! val.getData()
return vdata
}
}
--Vapor 3 चलाने के लिए आपको लाइब्रेरी फ़ाइलों को लिंक करना होगा
swift build -Xlinker -L/usr/local/lib && ./.build/x86_64-unknown-linux/debug/Run --hostname 0.0.0.0
-- किसी भी डेटाबेस कॉलम से यूनिकोड वर्ण प्रदर्शित करने के लिए आपको सर्वर होस्ट करने वाले वाष्प एप्लिकेशन में NLS_LANG सेट करना पड़ सकता है।
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8