c語言selectinto
我曾經寫過C語言的資料庫系統..
給你部分代碼(一個銷售函數)以作參考...
void
book_out()
//銷售函數
{
char
temp;
EXEC
sql
BEGIN
DECLARE
SECTION;
/*主變數定義開始.*/
int
Hout_shuliang;
int
Hshuliang;///////////
char
Hbook_id[11];
EXEC
SQL
END
DECLARE
SECTION;
/*主變數定義結束*/
lab3:
printf("請輸入圖書編號:");
scanf("%s",&Hbook_id);
printf("請輸入賣出本數:");
scanf("%d",&Hout_shuliang);
//先將庫存量取出到主變數
EXEC
SQL
select
book_shuliang
into
:Hshuliang
from
book_kucun
where
book_id=:Hbook_id;
if(Hshuliang<Hout_shuliang)
//假如庫存不足,銷售不成功.
{
printf("輸入有誤.沒那麼多庫存,請重新輸入.\n");
goto
lab3;
}
//將銷售記錄插入到book_out(銷售表)數據表.
EXEC
SQL
insert
into
book_out
values(:Hbook_id,:Hout_shuliang,GETDATE());
EXEC
SQL
COMMIT
TRANSACTION;
/*事務提交*/
printf("售出成功,輸入Y繼續輸入其他要售出的書.其他鍵返回主菜單:");
getchar();//////////////////////////
scanf("%c",&temp);
if(temp=='y'||temp=='Y')
goto
lab3;
}
② c程序該怎麼樣調用oracle存儲過程並獲取存儲過程中的輸出參數的值
我以前這樣用pro*c 這樣玩的,僅供參考
EXEC SQL EXECUTE
DECLARE
lsid varchar2(60);
lss_this_error_code number;
BEGIN
proctest(:ls_name,lsid); --ls_name 輸入參數 lss_id 輸出
:chId := lsid;-- lsid 輸出返回給C變數chId
END;
END-EXEC;
③ C語言如何調用SQLite3中的介面
下載 sqlite3 庫,放在項目文件夾中,包含 sqlite3.h 頭文件,包含 sqlite3.lib 導入庫,將 sqlite3.dll 復制到 .exe 所在目錄。
代碼如下:
#include<stdio.h>
#include<stdlib.h>
//包含sqlite3頭文件
#include"../sqlite-3.24.0/include/sqlite3.h"
//添加sqlite3lib庫
#pragmacomment(lib,"../sqlite-3.24.0/x86/sqlite3.lib")
inttable_exist_callback(void*data,intargc,char**argv,char**azColName)
{
intval=atoi(argv[0]);
if(val==0){
return-1;
}
return0;
}
intprint_callback(void*data,intargc,char**argv,char**azColName)
{
for(inti=0;i<argc;i++){
printf("%s=%s ",azColName[i],argv[i]);
}
printf(" ");
return0;
}
intmain()
{
sqlite3*db=NULL;
char*sql=NULL;
char*errMsg=NULL;
//打開資料庫
intret=sqlite3_open("data.db",&db);
if(ret!=SQLITE_OK){
printf("打開數據失敗,%s ",sqlite3_errmsg(db));
exit(-1);
}
//判斷students是否存在,如果不存在,則創建表students
sql="selectcount(*)fromsqlite_masterwheretype='table'andname='students';";
ret=sqlite3_exec(db,sql,table_exist_callback,NULL,NULL);
if(ret!=SQLITE_OK){
//創建students表
sql="createtablestudents(numbervarchar(10),namevarchar(20),ageinteger);";
ret=sqlite3_exec(db,sql,NULL,NULL,&errMsg);
if(ret!=SQLITE_OK){
printf("創建表失敗,%s. ",errMsg);
sqlite3_close(db);
sqlite3_free(errMsg);
exit(-1);
}
}
//插入數據到students表
sql="insertintostudents(number,name,age)values('100001','Barry',23);"
"insertintostudents(number,name,age)values('100002','Oliver',33);";
ret=sqlite3_exec(db,sql,NULL,NULL,&errMsg);
if(ret!=SQLITE_OK){
printf("插入表數據失敗,%s. ",errMsg);
sqlite3_close(db);
sqlite3_free(errMsg);
exit(-1);
}
//查詢students表數據
sql="select*fromstudents";
ret=sqlite3_exec(db,sql,print_callback,NULL,&errMsg);
if(ret!=SQLITE_OK){
printf("查詢數據失敗,%s. ",errMsg);
sqlite3_close(db);
sqlite3_free(errMsg);
exit(-1);
}
//關閉資料庫
sqlite3_close(db);
system("pause");
return0;
}
項目源碼:網頁鏈接
④ c連接oracle資料庫的連接語句
連接代碼如下:
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
char oc_passwd[101]; /*資料庫密碼*/
char oc_userid[101]; /*資料庫用戶名*/
char oc_dbname[101]; /*資料庫名*/
char oc_coad[101];
EXEC SQL END DECLARE SECTION;
memset(oc_passwd, 0x00, sizeof(oc_passwd));
memset(oc_userid, 0x00, sizeof(oc_userid));
memset(oc_dbname, 0x00, sizeof(oc_dbname));
/*取資料庫用戶名*/
strcpy(oc_userid, "userid");
/*取資料庫用戶密碼*/
strcpy(oc_passwd, "passwd") ;
/*取資料庫名*/
strcpy(oc_dbname, "dbname");
EXEC SQL CONNECT :oc_userid
IDENTIFIED BY :oc_passwd
USING :oc_dbname;
if (sqlca.sqlcode != 0)
{
printf("用戶名[%s]密碼[%s]資料庫[%s]\n", oc_userid, oc_passwd, oc_dbname);
printf("連接資料庫失敗,sqlcode=%d\n", sqlca.sqlcode);
return -1;
}
/*讀table取coad欄位*/
memset(oc_coad, 0x00, sizeof(oc_coad));
EXEC SQL SELECT coad
INTO :oc_coad
FROM table
WHERE 1=1;
if (sqlca.sqlcode == NORECORD)
{
printf("查詢無記錄\n");
return -1;
}
else if (sqlca.sqlcode != 0)
{
printf("查詢失敗,sqlcode=%d\n", sqlca.sqlcode);
return -1;
}
return 0;
}
⑤ C語言中嵌套sql語句 $select user_name into :user_name from test where student_id = 1; test如何設置
一般情況應該不是支持這種寫法的。
可以採用動態SQL,利用游標語句,可以實現
⑥ 嵌入SQL的C語言程序 怎麼接收insert into 的返回值
select @@identity
⑦ 誰有2009年江西省計算機二級考試題目與答案還有2010年的
兄弟,你問題補充下吧,你是學那一門先啊。
有C語言,有JAVA 好多種的。
不知道你的二級是哪一類的 以下是VFP的:
2009年3月全國計算機等級考試二級筆試試卷
Visual FoxPro 資料庫程序設計
(考試時間90分鍾,滿分100分)
選擇題
(1)下列敘述中正確的是
A) 棧是「先進先出」的線性表
B) 隊列是「先進先出」的線性表
C) 循環隊列是非線性結構
D) 有序性表既可以採用順序存儲結構,也可以採用鏈式存儲結構
(2)支持子程序調用的數據結構是
A) 棧 B) 樹 C) 隊列 D)二叉樹
(3)某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是
A)10 B)8 C)6 D)4
(4)下列排序方法中,最壞情況下比較次數最少的是
A)冒泡排序 B)簡單選擇排序 C)直接插入排序 D)堆排序
(5)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下面屬於應用軟體的是
A)編譯軟體 B)操作系統 C)教務管理系統 D)匯編程序
(6)下面敘述中錯誤的是
A)軟體測試的目的是發現錯誤並改正錯誤
B)對被調試的程序進行「錯誤定位」是程序調試的必要步驟
C)程序調試通常也稱為Debug
D)軟體測試應嚴格執行測試計劃,排除測試的隨意性
(7)耦合性和內聚性是對模塊獨立性度量的兩個標准。下列敘述中正確的是
A)提高耦合性降低內聚性有利於提高模塊的獨立性
B)降低耦合性提高內聚性有利於提高模塊的獨立性
C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度
D)內聚性是指模塊間互相連接的緊密程度
(8)資料庫應用系統中的核心問題是
A)資料庫設計 B)資料庫系統設計
C)資料庫維護 D) 資料庫管理員培訓
(9)有兩個關系R,S如下:
R S
A B C A B
a 3 2 a 3
b 0 1 b 0
c 2 1 c 2
由關系R通過運算得到關系S,則所使用的運算為
A) 選擇 B)投影 C) 插入 D)連接
(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為
A) 屬性 B)鍵 C) 關系 D) 域
(11)資料庫(DB)、資料庫系統(DBS)和資料庫管理系統(DBMS)三者之間的關系是
A)DBS包括DB和DBMS B)DBMS包括DB和DBS
C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS
(12)SQL語言的查詢語句是
A)INSERT B)UPDATE C)DELETE D)SELECT
(13)下列與修改表結構相關的命令是
A)INSERT B)ALTER C)UPDATE D)CREATE
(14)對表SC(學號 C(8),課程號 C(2),成績 N(3),備注 C(20)),可以插入的記錄是
A)('20080101', 'c1', '90',NULL) B)('20080101', 'c1', 90, '成績優秀')
C)('20080101', 'c1', '90', '成績優秀') D)('20080101', 'c1', '79', '成績優秀')
(15)在表單中為表格控制項指定數據源的屬性是
A)DataSource B)DateFrom C)RecordSource D)RecordFrom
(16)在Visual FoxPro中,下列關於SQL表定義語句(CREATE TABLE)的說法中錯誤的是
A)可以定義一個新的基本表結構
B)可以定義表中的主關鍵字
C)可以定義表的域完整性、有效性規則等信息的設置
D)對自由表,同樣可以實現其完整性、有效性規則等信息的設置
(17)在Visual FoxPro中,若所建立索引的欄位值不允許重復,並且一個表中只能創建一個,這種索引應該是
A)主索引 B)唯一索引 C)候選索引 D)普通索引
(18)在Visual FoxPro中,用於建立或修改程序文件的命令是
A)MODIFY<文件名> B)MODIFY COMMAND <文件名>
C)MODIFY PROCEDURE <文件名> D)上面B和C都對
(19)在Visual FoxPro中,程序中不需要用PUBLIC等命令明確申明和建立,可直接使用的內存變數是
A)局部變數 B)私有變數 C)公告變數 D)全局變數
(20)以下關於空值(NULL值)敘述正確的是
A)空值等於空字元串 B)空值等同於數值0
C)空值表示欄位或變數還沒有確定的值 D)Visual FoxPro不支持空值
(21)執行USE sc IN 0命令的結果是
A)選擇0號工作區打開sc表
B)選擇空閑的最小號的工作區打開sc表
C)選擇第1號工作區打開sc
D)顯示出錯信息
(22)在Visual FoxPro中,關系資料庫管理系統所管理的關系是
A)一個DBF文件 B)若干個二維表
C)一個DBC文件 D)若干個DBC文件
(23)在Visual FoxPro中,下面描述正確的是
A)資料庫表允許對欄位設置默認值
B)自由表允許對欄位設置默認值
C)自由表或資料庫表都允許對欄位設置默認值
D)自由表或資料庫表都不允許對欄位設置默認值
(24)SQL的SELECT語句中,「HAVING<條件表達式>」用來篩選滿足條件的
A)列 B)行 C)關系 D)分組
(25)在Visual FoxPro中,假設表單上有一個選項組:O男 O女,初始時該選項組的value屬性值為1。若選項按鈕「女」被選中,該選項組的value屬性值是
A)1 B)2 C)「女」 D)「男」
(26)在Visual FoxPro中,假設教師表T(教師號,姓名,性別,職稱,研究生導師)中,性別是C型欄位,研究生導師是L型欄位。若要查詢「是研究生導師的女老師」信息,那麼SQL語句「SELECT * FROM T WHERE <邏輯表達式>」中的<邏輯表達式>應是
A)研究生導師 AND 性別= "女" B)研究生導師 OR 性別= "女"
C)性別= "女" AND 研究生導師=.F. D)研究生導師=.T. OR 性別=女
(27)在Visual FoxPro中,有如下程序,函數IIF()返回值是
*程序
PRIVATE X,Y
STORE "男" TO X
Y=LEN(X)+2
?IIF(Y<4, "男", "女")
RETURN
A)"女" B)"男" C).T. D).F.
(28)在Visual FoxPro 中,每一個工作區中最多能打開資料庫表的數量是
A)1個 B)2個
C)任意個,根據內存資源而確定 D)35535個
(29)在Visual FoxPro 中,有關參照完整性的刪除規則正確的描述是
A)如果刪除規則選擇的是"限制",則當用戶刪除父表中的記錄時,系統將自動刪除子表中的所有相關記錄
B)如果刪除規則選擇的是"級聯",則當用戶刪除父表中的記錄時,系統將禁止刪除與子表相關的父表中的記錄
C)如果刪除規則選擇的是"忽略",則當用戶刪除父表中的記錄時,系統不負責檢查子表中是否有相關記錄
D)上面三種說法都不對
(30)在Visual FoxPro中,報表的數據源不包括
A)視圖 B)自由表 C)查詢 D)文本文件
第(31)到第(35)題基於學生表S和學生選課表SC兩個資料庫表,它們的結構如下:
S(學號,姓名,性別,年齡)其中學號、姓名和性別為 C型欄位,年齡為N型欄位。
SC(學號,課程號,成績),其中學號和課程號為C型欄位,成績為N型欄位(初始為空值)。
(31)查詢學生選修課程成績小於60分的學號,正確的SQL語句是
A)SELECT DISTINCT 學號 FROM SC WHERE "成績" <60
B)SELECT DISTINCT 學號 FROM SC WHERE 成績 < "60"
C)SELECT DISTINCT 學號 FROM SC WHERE 成績 <60
D)SELECT DISTINCT "學號" FROM SC WHERE "成績" <60
(32) 查詢學生表S的全部記錄並存儲於臨時表文件one中的SQL命令是
A)SELECT * FROM 學生表 INTO CURSOR one
B)SELECT * FROM 學生表TO CURSOR one
C)SELECT * FROM 學生表 INTO CURSOR DBF one
D)SELECT * FROM 學生表TO CURSOR DBF one
(33)查詢成績在70分至85分之間學生的學號、課程號和成績,正確的SQL語句是
A)SELECT 學號,課程號,成績 FROM sc WHERE 成績 BETWEEN 70 AND 85
B)SELECT 學號,課程號,成績 FROM sc WHERE 成績 >=70 OR 成績 <=85
C)SELECT 學號,課程號,成績 FROM sc WHERE 成績 >=70 OR <=85
D)SELECT 學號,課程號,成績 FROM sc WHERE 成績 >=70 AND <=85
(34)查詢有選課記錄,但沒有考試成績的學生的學號和課程號,正確的SQL語句是
A)SELECT 學號,課程號 FROM sc WHERE 成績 = ""
B)SELECT 學號,課程號 FROM sc WHERE 成績 = NULL
C)SELECT 學號,課程號 FROM sc WHERE 成績 IS NULL
D)SELECT 學號,課程號 FROM sc WHERE 成績
(35)查詢選修C2課程號的學生姓名,下列SQL語句中錯誤的是
A)SELECT 姓名 FROM S WHERE EXISTS;
(SELECT * FROM SC WHERE 學號=S.學號 AND 課程號= 'C2')
B)SELECT 姓名 FROM S WHERE 學號 IN;
(SELECT * FROM SC WHERE課程號= 'C2')
C)SELECT 姓名 FROM S JOIN ON S.學號=SC.學號 WHERE 課程號= 'C2'
D)SELECT 姓名 FROM S WHERE 學號=;
(SELECT * FROM SC WHERE課程號= 'C2')
二、填空題(每空2分,共30分)
請將每一個空的正確答案寫在答題紙上【1】-【15】序號的橫線上,答在試卷上,在試卷上不得分,
注意:以命令關鍵字填空的必須寫完整。
(1)假設一個長度為50的數組(數組元素的下標從0到49)作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數組下標),則棧中具有 【1】 個元素。
(2)軟體測試可分為白盒測試和黑盒測試。基本路徑測試屬於 【2】 測試。
(3)符合結構化原則的三種基本控制結構是:選擇結構、循環結構和 【3】 。
(4)資料庫系統的核心是 【4】
(5)在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯系的是 【5 】框。
(6)所謂自由表就是那些不屬於若任何【6】的表。
(7)常量{^2009-10-01,15:30:00}的數據類型是【7】 。
(8)利用SQL語句的定義功能建立一個課程表,並且為課程號建立主索引,語句格式為:
CREATE TABLE 課程表(課程號 C(5) 【8】 ,課程名 C(30))
(9)在Visual FoxPro中,程序文件的擴展名是【9】 。
(10)在Visual FoxPro中,SEELCT 語句能夠實現投影、選擇和【10】三種專門的關系運算。
(11)在Visual FoxPro中,LOCATE ALL 命令按條件對某個表中的記錄進行查找,若查找不到滿足條件的記錄,函數EOF()的返回值應是【11】 。
(12)在Visual FoxPro中,設有一個學生表STUDENT,其中有學號、姓名、年齡、性別等欄位,用戶可以用命令「 【12】 年齡 WITH 年齡+1」將表中所有學生的年齡增加一歲。
(13)在Visual FoxPro中,有如下程序:
*程序名:TEST.PRG
SET TALK OFF
PRIVATE X,Y
X= "資料庫"
Y= "管理系統"
DO sub1
?X+Y
RETURN
*子程序:sub1
LOCAL X
X= "應用"
Y= "系統"
X= X+Y
RETURN
執行命令DO TEST後,屏幕顯示的結果應是【13】 。
(14)使用SQL語言的SELECT語句進行分組查詢時,如果希望去掉不滿足條件的分組,應當在GROUP BY 中使用【14】子句。
(15)設有SC(學號,課程號,成績)表,下面 SQL的SELECT語句檢索成績高於或等於平均成績的學生的學號。
SELECT 學號 FROM sc;
WHERE 成績>=(SELECT 【15】 FROM sc)
2009年4月二級VFP參考答案
一、選擇題
1-5 DDCDC
6-10 ABAAC
11-15 ADBBC
16-20 DABBC
21-25 BBADB
26-30 AAACD
31-35 CAACD
二、填空題
1、20
2、白盒
3、順序結構
4、資料庫管理系統
5、菱形
6、資料庫
7、日期時間型
8、primary key
9、.prg
10、聯接
11、.T.
12、Replace all
13、資料庫系統
14、Having
15、avg(成績)
⑧ 怎樣運行C語言和Postgres編寫的嵌入SQL
嗯,正好,我這兩天也在整這個,回答下啊。
1、把這個文件存為test.pgc
2、在linux下面運行:ecpg test.pgc -o test.c(ecpg似乎也可以在windows下安裝,本行意思是將.pgc文件預編譯為真正的c程序)。
3、在linux下面運行:gcc test.c -o test -l ecpg
4、./test就可以出結果了
5、上述所有的命令都必須在test.pgc這個文件所在的文件夾下面運行咯
6、參考書籍:http://www.php100.com/manual/PostgreSQL8