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腳本文件,實
1、用cmd命令打開DOS命令行窗口
2、用sqlplus命令進入SQL命令狀態,命令行如下:c:\sqlplus/nolog
3、用如下命令連接資料庫:connect 資料庫用戶名/密碼@sid_ip,如:sql>connectionljm/ljm@ljm_localhost(本機資料庫)
4、用如下命令執行腳本文件sql>@完整路徑文件名
5、如果要導入SEQUENCE的話,可以用toad工具先生成SEQ腳本文件,再用如上命令導入
『叄』 怎麼用C語言實現下列SQL語句
sql和高級語言沒關系的,不同資料庫sql可能會有點區別。eg:oracle
mysql
sql
server等等。
高級語言(Java
C++
C)調用資料庫都是驅動不同而已,sql語句都是相同的。
『肆』 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();}
『伍』 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語句,並且能返回數據記錄的函數
執行sql語句的主要API函數被恰當的命名為: int mysql_query(MYSQL *connection ,const char *query); 如果成功返回0. 1.不返回數據的SQL語句 my_ulonglong mysql_affected_rows(MYSQL *connection);
『柒』 如何在C#中按順序依次執行SQL語句
用for循環
for(int i=1;i<6;i++)
{
SqlCommand cmd = new SqlCommand(i + Cmd, conn);
}
或:
SqlConnection conn = new SqlConnection();
conn.Open();
SqlTransaction t = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand("", conn, t);
try
{
string[] strCmd = { "1", "2", "3", "4", "5" };
for (int i = 0; i < 5; i++)
{
cmd.CommandText = strCmd[i];
cmd.ExecuteNonQuery();
}
t.Commit();
conn.Close();
}
catch
{
t.Rollback();
}
(7)c中執行sql語句擴展閱讀:
C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基於MICROSOFT .NET平台的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。
C#使得C++程序員可以高效的開發程序,且因可調用由 C/C++ 編寫的本機原生函數,而絕不損失C/C++原有的強大的功能。因為這種繼承關系,C#與C/C++具有極大的相似性,熟悉類似語言的開發者可以很快的轉向C#。
『捌』 如何在C語言裡面執行SQL語句
C語言程序與資料庫打交道的方式分為直連(同步)和非直連(非同步)兩種,它們的特點如下所示:
1. 直連方式
在該方式中,C語言程序直接與資料庫進行消息的交互。
該方式的優點是消息交互是即時的,C語言程序向資料庫發送消息之後,很快就能夠得到結果;缺點是如果資料庫執行緩慢,那麼C語言程序需要掛在那裡等待結果,影響了程序執行效率。
2. 非直連方式
在該方式中,C語言程序通過一個獨立的第三方模塊間接與資料庫進行消息的交互。
該方式的優點是當C語言程序向第三方模塊發送消息之後,可以不用等待資料庫返回結果而去執行其它流程;缺點是如果消息序列號沒有定義好,那麼極有可能會導致第三方模塊返回的結果出現混亂。因此,在該方式中,定義好發送消息的順序(即設定好序列號)很重要。
由於需要與資料庫打交道,因此要在C語言程序所使用的配置文件中填寫好關聯資料庫的相關信息,如資料庫機器的IP地址、埠號、用戶名、密碼、模塊號和所操作的具體資料庫名等。在運行程序之前,一定要確保相關配置項信息的正確性。
『玖』 c++如何能直接使用SQL語句
1.C++連接SQL資料庫第二步 C++與SQL連接初始化
在你所建立的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);
}//發生鏈接錯誤
3.
//定義_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);
}
4.
這里是關鍵,我認為只要你懂點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();
}