1. 怎麼在linux環境下通過c/c++語言連接oracle資料庫
推薦你使用pc語言,用這個編寫代碼很容易對資料庫oracle進行操作.各種操作都非常簡單.
例如:
EXEC sql CONNECT :UserName IDENTIFIED BY :PassWord using :ServerName;
這樣一個簡單語句就可以實現連接資料庫.
EXEC SQL CALL insert_data_sms(:spnumber,:usernumber,:content,:flag,:priority,:spnode,:sequenid_sp,:iresult);
EXEC SQL COMMIT;/*提交事務*/
可調用存儲過程.
你可以找找這方便的書看看
2. ppcs是什麼意思,我下了個軟體,裡面有個PPCS選項,就是不知道什麼意思,睡能告訴我一下
世源衡界最早和唯一的端對端客戶/伺服器(Peer to Peer Client/Server)PPCS系統。PPCS使得任何一台計算機可以和其他的計算機共享在各自不同計算機上的數據而不需要中心的伺服器。
基於Superbase3.6I版本已經實現的PPCS的觀念,管理系統目前又增加了新的PPCS SQL部分,使得PPCS伺服器和SQL的連接就如同Oracle和SQL伺服器連接一樣。這使得功能強大的端末應用的開發變得十分簡單。
作為一種獨立的應用,為PPCS移動雹指做客戶提供的Superbase文件引擎的應用程序介面,使得客戶可以通過該介面訪問PPCS伺服器的數據。這將使由C語言和Delphi語言開發的應用程序可以利用Superbase ODBC通過網路訪問Oracle資料庫成為可能。另外,客戶應用可通過簡單格式逗老的界面訪問各種平台上的PPCS數據源,包括Windows CE, Palm Pilot, EPOC, Linux等平台。
3. ORACLE資料庫是用C語言編寫的嗎
不是,是使用sql與pl/sql語言操作的。
SQL(Structured Query Language)結構化查詢語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。同時也是資料庫腳本文件的擴展名。
pl/sql語言是sql語言的擴展,pl/sql中可以嵌入sql語言。
塊是pl/sql的基本單位,編寫pl/sql程序實際是編寫pl/sql塊
4. 中南大學商學院的教學設施
教學實驗室面積約為300平方米,共建有19個為教學、科研服務的實驗室、多媒體教室和案例討論室,計算機、多媒體音像設備等處於全國先進水平。實驗中心設有信息資源中心、多媒體製作室和7個為教學科研服務的專業實驗室。
·ERP實驗室,主要配備有金蝶K/3 ERP系統和SAP Business One教學軟體,可進行財務管理、供應鏈管理、生產管理、人力資源管理、管理信息系統開發等實驗和設計,能滿足計算機應用與開發等教學要求,並可提供ERP認證培訓與咨詢服務。
·金融實驗室,配有世華金融軟體,包括:資訊分析系統、證券模擬交易系統、期貨模櫻高擬交易系統和外匯模擬交易系統,供學生進行證券、期貨及外匯行情分析與交易、投資分析等實驗,可同時接納300名學生在線做實驗,進行與實際業務完全相同的操作與分析,學生即可以在實驗室做實驗,也可在能夠上網的任何地方和時間進行實驗,實現了24小時在線開放。
·會計模擬實驗室,運行有我院教師參與開發的會計模擬實習實驗教學軟體,該軟體即能做單項課程的會計實務教學,又能做綜合模擬實習,該實驗室可供學生進行系列會計模擬實驗。
·經濟與貿易綜合實驗室,配有進出口貿易模擬操作實習軟體,學生可將進出口業務、英語電涵和電子郵件與網路操作訓練有機地結合起來,通過計算機網路,實現國際貿易的無紙化操作。
·沙盤模擬實驗室,投資建立了用友沙盤模擬系統,運用沙盤模擬企業的競爭環境,供學生模擬進行經營決策的練習。
·計算機網路實驗室,實驗室配置有路由器、防火牆、三層交換機等先進的網路設備,可供學生進行交換、路由、網路安全等配置與網路互聯實驗;配備的高檔伺服器和先進的網路環境,使學生可進行各種網路服務的安裝與配置。
·電子商務實驗室,實驗室配置有高性能計算機系統,建有電做物子商務開發平台及Web開發平台,可供學生進行電子商務模式模擬、電子支付模擬、電子商務網站建設等實驗。
實驗中心還自行開發建立了實驗管理信息系統,運行和管理各類伺服器10餘台,包括:學院網站服務、數字圖書館服務、郵件服務、ERP軟體服務、金融服務、出口貿易模擬服務、企業決策模擬服務、大型分布式網路資料庫服務等教學和管理應用伺服器,這些伺服器分別運行Unix、Windows NT等技術平台,實驗中心所有計算機都可與國際互聯網實現連接。實驗室還配備有網路彩色激光列印機、DVD刻錄機、數碼攝像機、數碼照相機、視頻採集與編輯系統等設備,每間實驗室都配有多媒體教學投影機。
實驗中心現已開出的實驗:
·微型計算機原理及應用 ·信息系統開發工具與環境 ·資料庫原理及應用
·C語言程序設計 ·會計管理信息系統 ·ORACLE資料庫
·國際貿易與實務 ·軟體開發技術 ·系統分析與系統模擬
·數據通訊與計算機網路 ·管理信息系統 ·數據結構
·證券投資學 ·期貨交易理論與實務 ·統計學
·運籌學 ·PROLOG語言程序設計 ·信息組織存儲與檢索技術
學院擁有一個工商管理圖書分館,藏書60000餘冊,中文期刊290多種,外文期刊50多種,該圖書館設有Internet終端和電子閱覽室,能方便快捷地查閱全球范圍內的圖書資料。
學院有兩間共100個座位的「語音實驗室」,供外語教學使用。
◎多媒體製作室
為了提高教學質量,將商學院教學活動的多媒體化落到實處,學院特為此建立了一間子課件製作室。該製作室配置了製作電子課件所需全套設施,包括:七套聯想計算機、掃描儀、光碟刻錄機、攝影機、數碼照相機、激光列印機、採集卡、DVD 機、錄象機和相應軟體,功能齊全,能製作集文字、影象、聲音、動畫等為一體的精美的多媒體課件。
◎案例討論室
高質量的案例教學能夠體現MBA人才培養的特點和特色,對MBA學員的學習產生積極的促進作用,受到學員們的普遍歡迎脊胡尺。為滿足日益擴大的案例教學需求,我院擁有多個高標準的專用案例討論室。
◎多媒體教室
學院擁有7間多媒體教室,作為MBA學員的專用教室,進行多媒體教學。所有多媒體教室設備先進,均配置有可連入Internet的教師用機、多媒體投影機、視頻展示台、擴音設備等,平均每間教室有80-90個座位 。
5. C語言資料庫是什麼
C語言是一門編程語言,而資料庫則是數據的集合。
1、C語言是一門通用計算機編程語言,應用廣泛,用它可以開發資料庫管理軟體,也可以通過C語言藉助於SQL語句來操作資料庫。
2、資料庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗餘度的特點、是與應用程序彼此獨立的數據集合。一般來資料庫都族肢褲需要資料庫管理軟體,比如acess、oracle等等,這些大型並且對執行效飢閉率要求較高的軟兆簡件,往往都是C語言開發的。
6. c語言oracle>0是什麼意思
oracle>0 是邏輯表達式,計算 變數 oracle 的當前值 是否 大於 0,大於得 真 (數值 1),
小於察告等於 0 得 假 (數值 0)。
接下去,根據這個 條件 決定 執行 什麼 子 過程。例如 Oracle 數敗升明據笑乎庫什麼 操作。
7. C語言程序連接oracle資料庫高可用報ora03115錯
可以的。
OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小微機環境。它是一種高效率的、可靠性好的、適應高吞吐量的資料庫方案。
C語言誕生於美國的貝爾實驗室,由丹尼斯·里奇(DennisMacAlistairRitchie)以肯尼斯·藍·湯普森(KennethLaneThompson)設計的B語言為基礎發展而來,在它的主體設計完成後,湯普森和里奇用它完全重寫了UNIX,且隨著UNIX的發展,c語言也得到了不斷的完善。為了利於C語言的全面推廣,許多專家學者和硬體廠商聯合組成了C語言標准委員會,並在之後的1989年,誕生了第一個完備的C標准,簡稱「C89」,也就是「ANSIC」,截至2020年,最新的C語言標准為2018年6月發布的「C18」。
8. C語言,OCI多線程建立session的問題,需要一個多線程連接的示例代碼
。。
你子線程式控制制同步了么? 斷錯誤一般是內存操作出錯 和oci 或者pthread的關系不大!
void* OracleProcess(GPS_DATA GpsRec) // 資料庫數據處理
{
interval = 0;
struct HashItem* pHash;
pHash = inithashtable(MAX_REC<<2);
char sql[384] = {0};
char temp[256] = {0};
char tName[10] = {0}; // 表名字
int i,k;
int j = TotalRec >> RATE;
double distance;
for(i=0; i < j; i++)
{
sprintf(temp,"%s%f%f%f%d",gps_last[i].tid,gps_last[i].lon,gps_last[i].lat,gps_last[i].speed,gps_last[i].udate);
InsertHash(temp, pHash, MAX_REC<<2); // 插入最後GPS信息到hash
memset(temp,0x00,256);
}
for(i = 0; i < TotalRec; i++)
{
for(k=0; k<j; k++) // 查詢車機是否在冊
if(strcmp(GpsRec[i].tid,tid[k]) == 0)
break;
if(k < j)
{
if(GpsRec[i].udate != 0.00)
{
distance = InfoUpdate(GpsRec,i); // 最新GPS數據更新
sprintf(temp,"%s%f%f%f%d",GpsRec[i].tid,GpsRec[i].lon,GpsRec[i].lat,GpsRec[i].speed,GpsRec[i].udate);
if(GetHashTablePos(temp, pHash, MAX_REC<<2) == -1) // 查找hash是否存在
{
if (distance > 0.0001)
{
sprintf(tName,"GPS_%d_Y",tf[k]);
InsertHash(temp, pHash, MAX_REC<<2); // 插入
sprintf(sql,"insert into %s (id,tm_id,lon,lat, speed, utc_time, udate,mileage,DIRECTION,DISTANCE) values (seq_gps.nextVal,'%s','%f','%f','%f','%d','%d','%f','%d','%f','%d')",
tName,GpsRec[i].tid,GpsRec[i].lon,GpsRec[i].lat,GpsRec[i].speed,GpsRec[i].utime,GpsRec[i].udate,GpsRec[i].mileage,GpsRec[i].dir,distance,interval);
printf("%s\n",sql);
oci_excu(oracle_env,(text *)sql,0); // 插入數據
memset(tName,0x00,10);
}
}
memset(sql,0x00,384);
memset(temp,0x00,256);
}
}
}
memset(GpsRec,0x00,sizeof(GpsRec));
free(pHash);
pthread_exit(NULL);
}
void TcpProcess(int tfd) // 處理TCP連接上的事務
{
struct timeval ntime;
int index = 0,times,ret;
int rlen = 0,rflag = 0;
char recvbuf[513] = {0};
bzero(recvbuf,513);
while(1)
{
ret = rlen = read(tfd,recvbuf,512);
if(rlen <= 0)
break;
if((rlen%32) == 0) // 32長度為標准TCP信息
{
times = 0;
ret >>= 5;
while(ret--)
{
if(tflag[tfd] == tfd) // 已經存在的socket
{
LOVENIX *info = (LOVENIX *)malloc(sizeof(LOVENIX));
memset(info,0x00,sizeof(LOVENIX));
if(recvbuf[times] == 0x58 || recvbuf[times] == 0x59)
ProtocolAnalysisLovenixTcp(&recvbuf[times],info);
else if(recvbuf[times] == 0x24)
ProtocolAnalysisLovenixUdp(&recvbuf[times],info);
sprintf(info->tid,"%s",seq[tfd]); // 合成車輛ID
DataProcess(info); // 處理GPS數據
free(info);
gettimeofday(&ntime, NULL);
cntime[tfd] = ntime.tv_sec; // 更新時間
times += 32;
}
}
}
else if(rlen > 32)
{
if(!rflag)
{
if((index = RegLovenix(tfd,recvbuf)) > -1)
{
sprintf(seq[tfd],"%s",tid[index]); // 將對應的socket設備ID保存
gettimeofday(&ntime, NULL);
sfd[tfd] = tfd;
cntime[tfd] = ntime.tv_sec;
tflag[tfd] = tfd;
rflag = 1;
}
}
}
if(rlen < 512); // 已經讀完
break;
memset(recvbuf,0x00,rlen);
}
}
void *TcpServer(void *arg)
{
int port = (unsigned int) arg;
int efd,i;
struct timeval ntime;
int listener, nfds, n, listen_opt = 1, lisnum;
struct sockaddr_in my_addr, their_addr;
socklen_t len = sizeof(their_addr);
lisnum = MAXLISTEN;
for(i=0; i<MAX_REC; i++)
{
sfd[i] = 0;
tflag[i] = 0;
}
if ((listener = socket(PF_INET, SOCK_STREAM, 0)) == -1) // 開啟 socket 監聽
{
lprintf(lfd, FATAL, "TCP Socket error!\n");
exit(1);
}
else
lprintf(lfd, INFO, "TCP socket creat susscess!\n");
setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, (void *) &listen_opt,(int) sizeof(listen_opt)); // 設置埠多重邦定
setnonblocking(listener);
bzero(&my_addr, sizeof(my_addr));
my_addr.sin_family = PF_INET;
my_addr.sin_port = htons(port);
my_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(listener, (struct sockaddr *) &my_addr, sizeof(struct sockaddr)) == -1)
{
lprintf(lfd, FATAL, "TCP bind error!\n");
exit(1);
}
else
lprintf(lfd, INFO, "TCP bind susscess!\n");
if (listen(listener, lisnum) == -1)
{
lprintf(lfd, FATAL, "TCP listen error!\n");
exit(1);
}
else
lprintf(lfd, INFO, "TCP listen susscess!\n");
kdpfd = epoll_create(MAXEPOLLSIZE); // 創建 epoll句柄,把監聽socket加入到epoll集合里
ev.events = EPOLLIN | EPOLLET; // 注冊epoll 事件
ev.data.fd = listener;
if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, listener, &ev) < 0)
lprintf(lfd, FATAL, "EPOLL_CTL_ADD error!\n");
while (1)
{
sem_wait(&sem_tcp); // 等待 sem_TCP
sem_wait(&sem_tp); // 將tp值減一
nfds = epoll_wait(kdpfd, events, MAXEPOLLSIZE, 1); // 等待有事件發生
if (nfds == -1)
lprintf(lfd, FATAL,"EPOLL_WAIT error!\n");
for (n = 0; n < nfds; ++n) // 處理epoll所有事件
{
if (events[n].data.fd == listener) // 如果是連接事件
{
if ((efd = accept(listener, (struct sockaddr *) &their_addr,&len)) < 0)
{
lprintf(lfd, FATAL, "accept error!\n");
continue;
}
else
lprintf(lfd, INFO, "Client from :%s\tSocket ID:%d\n", inet_ntoa(their_addr.sin_addr) ,efd);
setnonblocking(efd); // 設置新連接為非阻塞模式
ev.events = EPOLLIN | EPOLLET; // 注冊新連接
ev.data.fd = efd;
if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, efd, &ev) < 0) // 將新連接加入EPOLL的監聽隊列
lprintf(lfd, FATAL, "EPOLL_CTL_ADD error!\n");
else
{
gettimeofday(&ntime, NULL);
cntime[efd] = ntime.tv_sec;
sfd[efd] = efd;
}
}
else if (events[n].events & EPOLLIN)
tpool_add_work(pool, TcpProcess, (void*)events[n].data.fd); // 讀取分析TCP信息
else
{
close(events[n].data.fd);
epoll_ctl(kdpfd, EPOLL_CTL_DEL, events[n].data.fd, &ev);
}
}
sem_post(&sem_cm);
sem_post(&sem_udp);
}
close(listener);
}
int DataProcess(LOVENIX *info) // 處理GPS數據
{
if(sflag == 0 && (CacheRec != TotalRec)) // 緩存1可用且沒有滿
{
gps_cache[CacheRec].lat = info->lat;
gps_cache[CacheRec].mileage = info->mileage;
gps_cache[CacheRec].lon = info->lon;
gps_cache[CacheRec].speed = atod(info->speed, strlen(info->speed))*0.514444444*3.6;
gps_cache[CacheRec].udate = atoi(info->udate);
gps_cache[CacheRec].utime = atoi(info->utime);
gps_cache[CacheRec].dir = atoi(info->dir);
sprintf(gps_cache[CacheRec].tid ,"%s",info->tid);
CacheRec++;
// printf("CacheRec %d\tTotalRec %d \t sflag:%d\n",CacheRec,TotalRec,sflag);
if(CacheRec == TotalRec)
{
sflag = 1;
pthread_attr_init(&attr); // 初始化屬性值,均設為默認值
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // 設置線程為分離屬性
if (pthread_create(&thread, &attr,(void*) OracleProcess,(void*)gps_cache)) // 創建數據處理線程
lprintf(lfd, FATAL, "oracle pthread_creat error!\n");
CacheRec = 0;
}
}
else if(sflag == 1 && (Cache1Rec != TotalRec)) // 緩存2可用且沒有滿
{
gps_cache1[Cache1Rec].mileage = info->mileage;
gps_cache1[Cache1Rec].lat = info->lat;
gps_cache1[Cache1Rec].lon = info->lon;
gps_cache1[Cache1Rec].speed = atod(info->speed, strlen(info->speed))*0.514444444*3.6;
gps_cache1[Cache1Rec].udate = atoi(info->udate);
gps_cache1[Cache1Rec].utime = atoi(info->utime);
gps_cache1[Cache1Rec].dir = atoi(info->dir);
sprintf(gps_cache1[Cache1Rec].tid ,"%s",info->tid);
Cache1Rec++;
if(Cache1Rec == TotalRec)
{
sflag = 0;
pthread_attr_init(&attr); // 初始化屬性值,均設為默認值
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // 設置線程為分離屬性
if (pthread_create(&thread, &attr,(void*) OracleProcess,(void*)gps_cache1)) // 創建數據處理線程
lprintf(lfd, FATAL, "oracle pthread_creat error!\n");
Cache1Rec = 0;
}
}
else
{
lprintf(lfd, FATAL, "No cache to use!\n");
return (0);
}
return (1);
}
9. oci 連接 oracle
ORACLE調用介面(Oracle Call Interface簡稱OCI)提供了一組可對ORACLE資料庫進行存取的介面子常式(函數),通過在第三代程序設計語言(如C語言)中進行調用可達到存取ORACLE資料庫的目的。
在普通的情況下,用戶可以通過SQL和PL/SQL來訪問資料庫中的數據。ORACLE資料庫除了提供SQL和PL/SQL來訪問資料庫外,還提供了一個第三代程序設計語言的介面,用戶可以通過C、COBOL、FORTRAN等第三代語言來編程訪問資料庫。OCI就是為了實現高級語言訪問資料庫而提供的介面。OCI允許開發者在程序里使用SQL和PL/SQL來訪問資料庫。開發者可以使用第三代語言來編寫程序,而使用OCI來訪問資料庫。
10. C語言資料庫是什麼
資料庫是用來存入數據的倉庫。用戶可以對文件中的數據進行新增、查詢、更新、刪除等操作。但是C語言和資料庫是兩個東西,他們之間的關系就是C語言可以用來開發資料庫管理軟體,也可以通過C語言藉助於SQL語句來操作資料庫。
C語言普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有匯編語言的優點,因此相對於其它編程語言,它具有自己獨特的特點。具體體現在以下三個方面:
其一,廣泛性。C 語言的運算范圍的大小直接決定了其優劣性。C 語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C 語言包含了字元型、指針型等多種數據結構形式,因此,更為龐大的數據結構運算它也可以應付。
其二,簡潔性。9 類控制語句和32個KEYWORDS是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同 時還能夠支持高級編程,避免了語言切換的繁瑣。
(10)c語言連接oracle資料庫擴展閱讀
資料庫架構
1、內層:最接近實際存儲體,亦即有關數據的實際存儲方式。
2、外層:最接近用戶,即有關個別用戶觀看數據的方式。
3、概念層:介於兩者之間的間接層。