當前位置:首頁 » 編程語言 » c中的sql語句

c中的sql語句

發布時間: 2022-06-17 08:22:30

c語言環境下如何使用動態sql

你真是牛人呀。資料庫類型那麼多,有oraclemysqlDB2SQLSQLsevera。你使用的那種。

相對於來說我使用oracle多。

給你一個pro*c的操作實例吧

/ 定義符號常數
#define USERNAME "SCOTT"
#define PASSWORD "x"
#include <stdio.h>
// 說明SQLCA和ORACA
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE ORACA;
// 啟用ORACLE通訊區:ORACA=YES,使它能被使用
EXEC ORACLE OPTION (ORACA=YES);
// 說明SQL變數
EXEC SQL BEGIN DECLARE SECTION;
char* username=USERNAME;
char* password=PASSWORD;
VARCHAR sqlstmt[80];
int emp_number;
VARCHAR emp_name[15];
VARCHAR job[50],job1[50],job2[50];
float salary;
EXEC SQL END DECLARE SECTION;
main()
{
EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
// 發生錯誤時,保存SQL語句至ORACA
oraca.orastxtf=ORASTFERR;
// 登錄到ORACLE
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("/nConnect to ORACLE./n");
// 構造動態SQL語句
sqlstmt.len=sprintf(sqlstmt.arr,"INSERT INTO EMP(EMPNO,ENAME,JOB,SAL)VALUES(:V1,:V2,:V3,:V4)");
// 顯示SQL語句
puts(sqlstmt.arr);
// 用PREPARE語句分析當前的動態INSERT語句,語句名是S
EXEC SQL PREPARE S FROM :sqlstmt;
// 循環插表
for(;;)
{
printf("/nEnter employee number:");
scanf("%d",&emp_number);
if(emp_number==0)break;
printf("/nEnter employee name:");
scanf("%s",&emp_name.arr);
emp_name.len=strlen(emp_name.arr);
printf("/nEnter employee job:");
scanf("%s",&job.arr);
job.len=strlen(job.arr);
salary = 0; // With VC6, Missing this line will cause C Run-Time Error R6002.
printf("/nEnter salary:");
scanf("%f",&salary);
EXEC SQL EXECUTE S USING :emp_number,:emp_name,:job,:salary;
}

// 提交事務,退出ORACLE
EXEC SQL COMMIT RELEASE;
printf("/nHave a good day!/n");
exit(0);
sqlerror:
// 列印錯誤信息
printf("/n%.*s/n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
// 列印出錯SQL語句
printf("/n/"%.*s.../"/n",oraca.orastxt.orastxtl,oraca.orastxt.orastxtc);
// 列印出錯SQL語句所在行號及所在文件名
printf("on line %d of %.*s/n/n",oraca.oraslnr,
oraca.orasfnm.orasfnml,oraca.orasfnm.orasfnmc);

// 回滾事務,退出ORACLE
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK RELEASE;
exit(1);
}

⑵ 如何在C語言裡面執行SQL語句

C語言程序與資料庫打交道的方式分為直連(同步)和非直連(非同步)兩種,它們的特點如下所示:
1. 直連方式
在該方式中,C語言程序直接與資料庫進行消息的交互。
該方式的優點是消息交互是即時的,C語言程序向資料庫發送消息之後,很快就能夠得到結果;缺點是如果資料庫執行緩慢,那麼C語言程序需要掛在那裡等待結果,影響了程序執行效率。
2. 非直連方式
在該方式中,C語言程序通過一個獨立的第三方模塊間接與資料庫進行消息的交互。
該方式的優點是當C語言程序向第三方模塊發送消息之後,可以不用等待資料庫返回結果而去執行其它流程;缺點是如果消息序列號沒有定義好,那麼極有可能會導致第三方模塊返回的結果出現混亂。因此,在該方式中,定義好發送消息的順序(即設定好序列號)很重要。
由於需要與資料庫打交道,因此要在C語言程序所使用的配置文件中填寫好關聯資料庫的相關信息,如資料庫機器的IP地址、埠號、用戶名、密碼、模塊號和所操作的具體資料庫名等。在運行程序之前,一定要確保相關配置項信息的正確性。

⑶ c語言下,怎樣往sql語句中插入整型變數 通過c語言,寫accsess資料庫

int carc = 1000; /* 隨便等於一個值 */
sprintf (sql, "update car set carcount=%d where id=1", carc);不過你是c++,如果是string類型,直接字元串加,做成流,方法太多了

⑷ VC++中如何直接執行sql語句阿

環境:WindowsXP ; VC++6.0 + sp5 1。通過odbc直接執行SQL語句CDatabase mydb;
CRecordset myRecord;
CString strSQL;
CDBVariant cv;try{if ( !mydb.IsOpen() )
mydb.OpenEx("資料庫連接字元串",CDatabase::noOdbcDialog); myRecord.m_pDatabase = &mydb;
//直接執行SQL語句,
//注意,SQL語句字元串一定不能以空格開始
strSQL = "SELECT 欄位或計算列 FROM 表 WHERE 條件";
//strSQL = " SELECT 欄位或計算列 FROM 表 WHERE 條件 "; //這樣不行,會報錯,查詢語句中沒有欄位
myRecord.Open(CRecordset::snapshot,"需要執行的SQL語句"); int i = 0;
while ( !myRecord.IsEOF() ){myRecord.MoveFirst();
myRecord.GetFieldValue(i,cv); //獲得第(i+1)列的數據,數據保存在CDBVariant變數中,不可以直接使用數字0
myRecord.MoveNext();}

⑸ SQL語句怎麼插入到C語言語句中

1、創建一個SQL文件。
此文件在ISQL中創建,文件內容是所希望執行的SQL語句。

2、在WinCC的C Script中編寫程序調用此SQL文件,如以下程序所示:

#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName,
UINT nFlags, int x, int y)
{
char*a="C:\\SIEMENS\\Common\\SQLANY\\ISQL-q-b-c
UID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;
DBN=CC_testsql_99-12-03_12:48:26R;READ
E:\\testsql\\test.sql";
printf("%s\r\n",a);
ProgramExecute(a);
}
下面是一個簡單的SQL文件內容:
select * from pde#hd#t#test;
output to E:\\test2.txt FORMAT ascii

注意:文件名及路徑中不要帶空格。

⑹ c語言中的sql寫法

前面是定義了一個存儲過程,使用的時候用EXEC SQL FETCH c5 INTO :city,:flag,:accnum;也是執行的過程,>=是大於等於的意思

⑺ 怎麼用C語言實現下列SQL語句

sql和高級語言沒關系的,不同資料庫sql可能會有點區別。eg:oracle
mysql
sql
server等等。
高級語言(Java
C++
C)調用資料庫都是驅動不同而已,sql語句都是相同的。

⑻ c/c++怎麼連接資料庫,並執行SQL語句

C++連接SQL資料庫第一步 系統配置
1.設置SQLSERVER伺服器為SQL登錄方式,並且系統安全性中的sa用戶要設置登錄功能為「啟用」,還有必須要有密碼。
2.需要在ODBC中進行數據源配置,數據源選\」SQL SERVER」,登錄方式使用「使用輸入用戶登錄ID和密碼的SQL SERVER驗證」,並填寫登錄名(sa)和密碼,注意一點,密碼不能為空,這就意味著你的sa用戶必須得有密碼。否則無法通過系統本身的安全策略。測試通過就完成了配置。
C++連接SQL資料庫第二步 C++與SQL連接初始化
1.在你所建立的C++項目中的stdafx.h頭文件中引入ADO
具體代碼如下
#import 「c:\Program Files\Common Files\System\ado\msado15.dll」
no_namespace rename(」EOF」, 「adoEOF」) rename(」BOF」, 「adoBOF」)
2.定義_ConnectionPtr變數後調用Connection對象的Open方法建立與伺服器的連接。
數據類型_ConnectionPtr實際上是由類模板_com_ptr_t得到的一個具體的實例類。_ConnectionPtr類封裝了Connection對象的Idispatch介面指針及其一些必要的操作。可以通過這個指針操縱Connection對象。
例如連接SQLServer資料庫,代碼如下:
//連接到MS SQL Server
//初始化指針
_ConnectionPtr pMyConnect = NULL;
HRESULT hr = pMyConnect.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
return;
//初始化鏈接參數
_bstr_t strConnect = 「Provider=SQLOLEDB;
Server=hch;
Database=mytest;
uid=sa; pwd=sa;」; //Database指你系統中的資料庫
//執行連接
try
{
// Open方法連接字串必須四BSTR或者_bstr_t類型
pMyConnect->Open(strConnect, 「」, 「」, NULL);
}
catch(_com_error &e)
{
MessageBox(e.Description(), 「警告」, MB_OK|MB_ICONINFORMATION);
}//發生鏈接錯誤

C++連接SQL資料庫第三步 簡單的數據連接
//定義_RecordsetPtr變數,調用它Recordset對象的Open,即可打開一個數據集
//初始化過程 以下是個實例
_RecordsetPtr pRecordset;
if (FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))
{
return;
}
//執行操作
try
{
pRecordset->Open(_variant_t(」userinfo」),
_variant_t((IDispatch*)pMyConnect),
adOpenKeyset, adLockOptimistic, adCmdTable);
}
catch (_com_error &e)
{
MessageBox(」無法打開userinfo表\」, 「系統提示」,
MB_OK|MB_ICONINFORMATION);
}

C++連接SQL資料庫第四步 執行SQL語句
這里是關鍵,我認為只要你懂點SQL語句那麼一切都會方便許多比用上面的方法簡單,更有效率點。
首先
m_pConnection.CreateInstance(_uuidof(Connection));
//初始化Connection指針
m_pRecordset.CreateInstance(__uuidof(Recordset));
//初始化Recordset指針
CString strSql=」select * from tb_goods」;//具體執行的SQL語句
m_pRecordset=m_pConnection->Execute(_bstr_t(strSql),
NULL, adCmdText);//將查詢數據導入m_pRecordset數據容器
至此 你的SQL語句已經執行完成了m_pRecordset內的數據就是你執行的結果。
取得記錄:
while(!m_pRecordset->adoEOF)//遍歷並讀取name列的記錄並輸出
{
CString temp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem
(」name」)->Value;
AfxMessageBox(temp);
pRecordset->MoveNext();
}

插入記錄
//記得初始化指針再執行以下操作
CString strsql;
strsql.Format(」insert into tb_goods(no,name, price)
values(』%d』,'%s』, %d)」,m_intNo,m_strName,m_intPrice);
m_pRecordset=m_pConnection->
Execute(_bstr_t(strsql),NULL,adCmdText);

修改記錄
CString strsql;
strsql.Format(」update tb_goods set name=』%s』 ,
price=%d where no=%d 「,m_strName,m_intPrice,m_intNo);
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText);

刪除記錄
CString strsql;
strsql.Format(」delete from tb_goodswhere no= 『%d』 「,m_intNo);
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText)

⑼ 如何用C實現對SQL資料庫的操作

#include <stdio.h> #include <stdlib.h> #include <string.h> #include "util.h" #include <sqlca.h>`` EXEC SQL INCLUDE SQLCA;main(){EXEC SQL BEGIN DECLARE SECTION; char firstname[13]; char userid[9]; char passwd[19]; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT TO sample; EXEC SQL SELECT FIRSTNME INTO :firstname FROM employee WHERE LASTNAME = 'JOHNSON'; printf( "First name = %s\n", firstname ); EXEC SQL CONNECT RESET;return 0;}上面是一個簡單的靜態嵌入SQL語句的應用程序。它包括了嵌入SQL的主要部分: (1)中的include SQLCA語句定義並描述了SQLCA的結構。SQLCA用於應用程序和資料庫之間的通訊,其中的SQLCODE返回SQL語句執行後的結果狀態。 (2)在BEGIN DECLARE SECTION和END DECLARE SECTION之間定義了宿主變數。宿主變數可被SQL語句引用,也可以被C語言語句引用。它用於將程序中的數據通過SQL語句傳給資料庫管理器,或從資料庫管理器接收查詢的結果。在SQL語句中,主變數前均有「:」標志以示區別。 (3)在每次訪問資料庫之前必須做CONNECT操作,以連接到某一個資料庫上。這時,應該保證資料庫實例已經啟動。 (4)是一條選擇語句。它將表employee中的LASTNAME為「JOHNSON」的行數據的FIRSTNAME查出,並將它放在firstname變數中。該語句返回一個結果。可以通過游標返回多個結果。當然,也可以包含update、insert和delete語句。 (5)最後斷開資料庫的連接。 從上例看出,每條嵌入式SQL語句都用EXEC SQL開始,表明它是一條SQL語句。這也是告訴預編譯器在EXEC SQL和「;」之間是嵌入SQL語句。

⑽ C#中的SQL語句

我來回答,把我知道的給一部分吧,有一部分沒有把握,不敢亂說

一、填空題

3.翻譯程序的作用是把源程序翻譯成等價的_____二進制代碼。
4.被調用函數中的____return 語句用來把表達式的值傳回給調用函數。
5.要想使函數中的局部變數在函數調用之間保持其值,該變數必須用存儲類別說明符__extern_說明。
6.指針是把另一個變數的__地址_作為其值的變數。
7.c語言中,申請內存使用malloc,釋放內存使用_free_。
8.若a是int型變數,且a的初值為4,則計算表達式a+=a-=a*a後a的值為__-24_。
9.C語言中,數組名是一個不可改變的_地址值_,不能對它進行賦值運算。
10.在C語言中,&運算符作為單目運算符時表示的是__取地址_運算。
11.如果一個函數直接或間接地調用自身,這樣的調用稱為_遞歸__調用。
12.如果初始化值列表中的初始化值的個數少於數組的元素個數,C編譯器會自動把剩餘的元素初始化為__0__。
13.int*p[n]定義了一個指針數組, int(*p) [n]定義了一個__指向n個元素數組的指針_。
14.能夠賦給指針的唯一的整數是_________ 。
15.__main()_是C程序的起始點,可以獨立運行。
16.C提供了一個測定某一種類型數據所佔存儲空間長度的運算符_sizeof_。
17.「\5」是指ASCII碼值為_______的字元。
此處題目是錯誤的不能用雙引號
18.十進制常數25對應的八進制的C表示為__031__。
二、判斷題
1.所有的預處理命令都是以符號"#"開頭的,必須放在程序的開頭部分。(√ )
2.所有的C語言程序都必須有一個名為main的主函數。 √
3.Int,a15,char都是合法的標識符。 ×
4.c語言中'b'和"b"是等同的。 ×
5.C語言本身沒有輸入輸出語句。 √
6.系統分配給結構體變數的內存是成員中占內存量最大者所需的容量。 ×
7.C語言共用體類型變數在程序運行期間所有成員一直駐留在內存中。 ×
8.系統的標准輸入文件是指硬碟。 ×
9.C語言中,被調用的函數的定義出現在主調用函數之前時,函數原型可以省略。 √
10.系統的標准輸出文件是指顯示器。√ 17112希望對你有幫助!

熱點內容
手機開腳本買個什麼配置的 發布:2025-02-06 18:45:59 瀏覽:111
python代碼輸入 發布:2025-02-06 18:32:35 瀏覽:562
易語言上傳ftp文件夾 發布:2025-02-06 18:31:09 瀏覽:73
仿qq源碼java 發布:2025-02-06 18:24:06 瀏覽:424
阿里雲訪問mysql資料庫 發布:2025-02-06 18:17:57 瀏覽:789
原神遊戲伺服器ip 發布:2025-02-06 17:54:23 瀏覽:811
如何查筆記本電腦的真正配置 發布:2025-02-06 17:48:07 瀏覽:82
存儲器存在地址 發布:2025-02-06 17:47:28 瀏覽:540
phpsocket教程 發布:2025-02-06 17:42:13 瀏覽:424
mysql解壓縮版安裝 發布:2025-02-06 17:26:33 瀏覽:180