當前位置:首頁 » 編程語言 » c語言怎麼獲取資料庫信息
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼獲取資料庫信息

發布時間: 2023-03-15 10:34:11

c語言如何實現資料庫查詢功能

這個你試一下C語言如何調用ADODB訪問資料庫
如果是mysql之類 只要找個mysql的例子來看就可以的 mysql有庫和頭文件可以用

⑵ c語言調用資料庫mysql5.6,數據查詢後怎樣讀取

讀取出來的 char 字元么。
atoi 一下 不就變成int了么。

你這個屬於存練習 代碼. 邏輯比較混亂. 慢慢來吧.
我寫過的用 vector 和 map 做的 mysql讀取的結果集的封裝 你可以看看.
http://wenku..com/view/68dd062ca5e9856a561260e8.html

⑶ c語言如何使用access資料庫

1、C/C++與資料庫交互,像 mssql/ mysql / oracle 等,一般都有成熟的第三方庫,這些庫裡面無非就是封裝了與資料庫通訊的方式和通訊協議搜一下要用的資料庫相關的 API 文檔,會說得很清楚任何文件都是二進制數據,關鍵是數據存儲的組織方式通用擴展名的文件,像gif/doc/jpg/wav,格式都是固定的。
2、舉個例子,連接SQL:

// 打開資料庫
strDBClass.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s"), m_strUnEntryptMdbFilePath,m_strMDBPassword);
// 創建連接
HRESULT hr = m_pConnection.CreateInstance(_uuidof(Connection));
_ConnectionPtr m_pConnection->Open(m_strDBClass,_T(""),_T(""),adConnectUnspecified);
// 聲明表單指針
_RecordsetPtr pBandRecordset;
pBandRecordset.CreateInstance(__uuidof(Recordset));
// 執行語句
CString strSQL(L"SELECT * FROM [Band]");
m_pConnection->Execute((LPCTSTR)strSQL,NULL,0);
// 提取某一項 例如BandInfo
int iBandInfo = wcscmp(colum, L"BandInfo");
while(!recordsetPtr->adoEOF)
{
var = recordsetPtr->GetCollect(colum);
if(var.vt != VT_NULL)
strName = (LPCSTR)_bstr_t(var);
recordsetPtr->MoveNext();
}

⑷ 如何取得資料庫信息

取得視圖的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的視圖: USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'V' 獲取指定資料庫的視圖的內容: EXEC sp_helptext xxxObject 取得存儲過程的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的存儲過程或者擴展存儲過程: USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'P' OR type = 'X' 獲取指定資料庫的存儲過程或者擴展存儲過程的內容: EXEC sp_helptext xxxObject 無法獲取加密的存儲過程。擴展存儲過程只能得到dll 程序名。 取得函數的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的各種函數(內嵌函數等): USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'FN' OR type = 'IF' OR type = 『TF』 獲取指定資料庫的函數的內容: EXEC sp_helptext xxxObject 只能獲取用戶定義的函數內容。 取得觸發器的方法 系統存儲過程 USE xxx EXEC sp_helptrigger xxxTable 或者 獲取指定資料庫的表的觸發器: SELECT sysobj1.name AS name, sysusers.name AS owner FROM sysobjects AS sysobj1 LEFT JOIN sysobjects AS sysobj2 ON sysobj1.parent_obj = sysobj2.id LEFT JOIN sysusers ON sysobj1.uid = sysusers.uid WHERE sysobj1.type = 'TR'AND sysobj2.name = 'xxxTable' 取得索引的方法 系統存儲過程 USE xxx EXEC sp_helpindex xxxTable 用戶 系統存儲過程 USE xxx EXEC sp_helpuser 角色 系統存儲過程 USE xxx EXEC sp_helprole 第二部分: 對於oracle 而言: ?ORACLE 只能連接特定資料庫,不能自動掃描資料庫對象。ORACLE 表必須用用戶來區別,否則表可能重名。ORACLE 不能區別系統表或者是用戶表,因此只能由管理員選擇掃描某些特定用戶的表。 取得資料庫名的方法 只能由用戶指定資料庫,不能自動掃描到特定資料庫伺服器上的所有資料庫。 取得表的方法 存儲資料庫表的系統表/視圖主要有: DBA_ALL_TABLES 描述資料庫中所有的對象以及相關的表。 ALL_ALL_TABLES 描述資料庫中所有的用戶可以訪問的對象以及相關的表。 USER_ALL_TABLES 描述資料庫中當前用戶擁有的對象以及相關的表。 DBA_ TABLES 描述資料庫中所有相關的表。 ALL_ TABLES 描述資料庫中所有的用戶可以訪問的相關的表。 USER_ TABLES 描述資料庫中當前用戶擁有的相關的表。 因此,可以從ALL_TABLES 中取得隸屬於指定用戶的表: SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER = 'DBAUDIT'; 取得隸屬於指定表空間的表: SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE TABLESPACE_NAME = 'DBAUDIT'; 也可以不指定用戶名,從而取得所有的表。 SELECT TABLE_NAME FROM SYS.ALL_TABLES; 取得列的方法 存儲資料庫表的列屬性的系統表/視圖主要有: DBA_TAB_COLUMNS 描述資料庫中所有的表的列屬性。 ALL_TAB_COLUMNS 描述資料庫中所有的用戶可以訪問的表的列屬性。 USER_TAB_COLUMNS 描述資料庫中當前用戶擁有的表的列屬性。 ALL_TAB_COLS 描述資料庫中所有的用戶可以訪問的表的列屬性。 因此,可以從ALL_TAB_COLUMNS 中取得隸屬於指定用戶的表: SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TASK' AND OWNER = 'DBAUDIT'; 取得視圖的方法 存儲資料庫視圖的系統表/視圖主要有: DBA_VIEWS 描述資料庫中所有的視圖的屬性。 ALL_VIEWS 描述資料庫中所有的用戶可以訪問的視圖的屬性。 USER_VIEWS 描述資料庫中所有的當前用戶擁有視圖的屬性。 因此,可以從ALL_VIEWS 中取得隸屬於指定用戶的視圖: SELECT VIEW_NAME FROM SYS.ALL_VIEWS WHERE OWNER = 'DBAUDIT'; 取得存儲過程的方法 存儲系統對象的系統表/視圖有: DBA_OBJECTS 描述資料庫中所有的對象。 ALL_OBJECTS 描述資料庫中所有的可以訪問的對象。 USER_OBJECTS 描述資料庫中所有的當前用戶擁有的對象。 SYS_OBJECTS 描述資料庫中所有的系統對象。 對象類型有: CONSUMER GROUP CONTEXT DIRECTORY FUNCTION INDEX INDEX PARTITION INDEXTYPE JAVA CLASS JAVA DATA JAVA RESOURCE JAVA SOURCE LIBRARY LOB MATERIALIZED VIEW OPERATOR PACKAGE PACKAGE BODY PROCEDURE QUEUE SEQUENCE SYNONYM TABLE TABLE PARTITION TRIGGER TYPE TYPE BODY VIEW 因此,取得存儲過程可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE'; 取得隸屬於某個用戶的存儲過程可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE' AND OWNER = 『DBAUDIT』; 同樣,取得其他的對象也可以用這個方法,包括表,視圖等。 取得存儲過程內容的方法 對象類型為類型、類型體、過程、函數、包、包體,JAVA 源代碼的所有對象的源代碼都存儲在幾個系統表/視圖中: DBA_SOURCE 存儲所有資料庫對象的源代碼。 ALL_SOURCE 存儲所有可以訪問的資料庫對象的源代碼。 USER_SOURCE 存儲所有當前用戶擁有的資料庫對象的源代碼。 因此,取得存儲過程源代碼的方法: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 『XXX』 AND TYPE = 『PROCEDURE』; 取得函數的方法 同上,取得函數可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION'; 取得隸屬於某個用戶的函數可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT'; 取得函數內容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION'; 取得觸發器的方法 存儲資料庫觸發器的系統表/視圖主要有: DBA_TRIGGERS 描述資料庫中所有的觸發器的屬性。 ALL_ TRIGGERS 描述資料庫中所有的用戶可以訪問的觸發器的屬性。 USER_ TRIGGERS 描述資料庫中所有的當前用戶擁有觸發器的屬性。 因此,可以從ALL_TRIGGERS 中取得隸屬於指定用戶的觸發器: SELECT TRIGGER_NAME FROM SYS.ALL_TRIGGERS WHERE OWNER = 'DBAUDIT'; 取得觸發器內容的方法: SELECT TRIGGER_BODY FROM SYS.ALL_TRIGGERS WHERE TRIGGER_NAME = 'XXX'; 取得索引的方法 存儲資料庫索引的系統表/視圖主要有: DBA_INDEXES 描述資料庫中所有的索引的屬性。 ALL_INDEXES 描述資料庫中所有的用戶可以訪問的索引的屬性。 USER_INDEXES 描述資料庫中所有的當前用戶擁有索引的屬性。 因此,可以從ALL_ INDEXES 中取得隸屬於指定用戶的索引: SELECT INDEX_NAME,TABLE_NAME FROM SYS.ALL_INDEXES WHERE OWNER = 'DBAUDIT'; 取得索引相關的列的方法: SELECT COLUMN_NAME FROM SYS.ALL_IND_COLUMNS WHERE INDEX_NAME = 'XXX' AND TABLE_OWNER = 'DBAUDIT'; 用戶 存儲資料庫用戶的系統表/視圖主要有: DBA_USERS 描述資料庫中所有的用戶的屬性。 ALL_USERS 描述資料庫中所有的用戶的屬性。 USER_USERS 描述資料庫中當前用戶的屬性。 因此,可以從ALL_USERS 中取得用戶: SELECT USER_ID, USERNAME FROM SYS.ALL_USERS; 角色 存儲角色的表/視圖有: DBA_ROLES 描述資料庫中所有角色。 取得角色方法: SELECT ROLE FROM SYS.DBA_ROLES; 表空間 SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES; 數據文件 SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES; 資料庫連接 存儲資料庫連接的系統表/視圖主要有: DBA_LINKS 描述資料庫中所有的連接的屬性。 ALL_LINKS 描述資料庫中所有的用戶可訪問的連接的屬性。 USER_LINKS 描述資料庫中當前用戶的連接屬性。 因此,可以從DBA_DB_LINKS 中取得連接: SELECT * FROM SYS.DBA_DB_LINKS; 同義詞 SELECT * FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT'; 程序包 取得程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE'; 取得隸屬於某個用戶的程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT'; 取得程序包內容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE'; 程序包體 取得程序包體可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY'; 取得隸屬於某個用戶的程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT'; 取得程序包內容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY '; 第三部分: 簡單點的還有。 返回所有列名 select name from syscolumns where id=object_id('表名') 查所有表名 select * from INFORMATION_SCHEMA.TABLES =================================== sp_tableoption N'MyTable', 'text in row', 'OFF' Sybase 取得資料庫名的方法 系統存儲過程sp_helpdb 或者 USE master SELECT d.name dbname, u.name owner FROM sysdatabases d, sysusers u WHERE d.suid = u.suid 取得表的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的用戶表: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'U' 獲取指定資料庫的系統表: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'S' 或者統一使用: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'U' OR type = 'S') 註: sysobjects 中type 欄位類型解釋: C = CHECK 約束 D = 默認值或 DEFAULT 約束 F = FOREIGN KEY 約束 L = 日誌 FN = 標量函數 IF = 內嵌表函數 P = 存儲過程 PK = PRIMARY KEY 約束(類型是 K) RF = 復制篩選存儲過程 S = 系統表 TF = 表函數 TR = 觸發器 U = 用戶表 UQ = UNIQUE 約束(類型是 K) V = 視圖 X = 擴展存儲過程 取得列的方法 系統存儲過程 USE xxxDatabase EXEC sp_help xxxTable 取得視圖的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的視圖: USE xxx SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'V' 獲取指定資料庫的視圖的內容: EXEC sp_helptext xxxObject 取得存儲過程的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的存儲過程或者擴展存儲過程: USE xxx SELECT sysobjects.name name, sysusers.name owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'P' OR type = 'X') 獲取指定資料庫的存儲過程或者擴展存儲過程的內容: EXEC sp_helptext xxxObject 無法獲取加密的存儲過程。擴展存儲過程只能得到dll 程序名。 取得函數的方法 Sybase 不支持用戶定義函數。

⑸ 想麻煩問問怎樣用C語言編寫一個檢索資料庫里資料的程序

mysql的,首先你得連好環境,不知能不能幫到你,這本來是我在C++寫的,你要是不懂的話這個對你可能完全沒用。

MYSQL mysql; //資料庫連接句柄
MYSQL_RES *result;
mysql_init (&mysql);
MYSQL_ROW sql_row;

if(!mysql_real_connect(&mysql,"localhost","root","密碼","資料庫名字",3306,NULL,0))
{//mydb為你所創建的資料庫,3306為埠號,可自行設定
printf("資料庫連接失敗\n");
}
else
{ mysql_query(&mysql, "SET NAMES GBK");//設置字體,因為中文可能亂碼

mysql_query(&mysql,"select * from 表名 where 公司名的欄位名=『你要搜的公司名』");//運行SQL語句
result=mysql_store_result(&mysql);
sql_row=mysql_fetch_row(result);//搜到的結果顯示到數組sql_row[]

if(sql_row)
{
printf("沒有找到");
return;
}
輸出sql_row[x]
//sql_row[x]就是結果,。x是欄位在表的位置,第一個位置就是sql_row[0]。但是我不知道C語言如何輸出

}

⑹ c語言關於從資料庫讀取數據寫文件

#include<stdio.h>
execsqlincludesqlca;

intmain(){
execsqlbegindeclaresection;
charuserpasswd[30]="openlab/123456";
struct{
intid;
charname[30];
doublesalary;
}emp;
execsqlenddeclaresection;
execsqlconnect:userpasswd;

selectid,first_name,salaryfrom
s_emporderbysalary;
execsqlopenempcursor;
;
for(;;){
execsqlfetchempcursorinto:emp;
printf("%d:%s:%lf ",emp.id,emp.name,
emp.salary);
}
execsqlcloseempcursor;
execsqlcommitworkrelease;
}

把數據存到結構體里。

⑺ 在c語言中,如何提取一個txt資料庫文件中的信息

簡單的用C讀取文件的例子代碼片段。
... ...
FILE *fp;
char buffer[1000];
fp=fopen( "input.txt", "r" );
while ( fread(&buffer, sizeof(buffer), 1, fp )==1)
{
... ...
//對從文件讀出來的數據在此處進行處理
... ...
}
fclose(fp);
... ...