當前位置:首頁 » 編程語言 » c讀取sql資料庫數據

c讀取sql資料庫數據

發布時間: 2022-05-17 00:58:02

㈠ 關於c語言連接sql資料庫

1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:

#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void main()
{
HENV henv; //環境句柄
HDBC hdbc; //數據源句柄
HSTMT hstmt; //執行語句句柄
unsigned char datasource[]="數據源名稱"; //即<a href="https://www..com/s?wd=ODBC&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">ODBC</a>源中設置的源名稱
unsigned char user[]= "用戶名"; //資料庫的帳戶名
unsigned char pwd[]= "密碼"; //資料庫的密碼
unsigned char search[]="select xm from stu where xh=0";
SQLRETURN retcode; //記錄各SQL函數的返回情況
// 分配環境句柄
retcode= SQLAllocEnv(&henv); // 等介於 SQLAllocHandle(SQL_HANDLE_ENV, SQL_<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>_HANDLE, &henv);
// 設置ODBC環境版本號為3.0
retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配連接句柄
retcode= SQLAllocConnect(henv,&hdbc); // 等介於 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0);

//直接連接數據源
// 如果是windows身份驗證,第二、三參數可以是<a href="https://www..com/s?wd=NULL&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">NULL</a>,也可以是任何字串
//SQL_NTS 即 "<a href="https://www..com/s?wd=Null&tn=44039180_cpr&fenlei=_5y9YIZ0lQzqlpA-" target="_blank" class="-highlight">Null</a>-Terminated String"
retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS );
//分配語句句柄
retcode= SQLAllocStmt(hdbc,&hstmt); // 等介於 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//直接執行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數據緩沖區綁定資料庫中的相應欄位(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)
SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0);
//遍歷結果集到相應緩沖區 queryData
SQLFetch(hstmt);
/*
*對遍歷結果的相關操作,如顯示等
*/
//注意釋放順序,否則會造成未知錯誤!
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}

代碼看上去很復雜,其實都可以直接復制。其中需要改的是數據源名稱、資料庫用戶名、資料庫密碼和SQL語句。
然後就是SQLFetch後得到結果集後,如何使用的問題了。
在下面的注釋部分 填寫你的處理代碼即可。

/*
*對遍歷結果的相關操作,如顯示等
*/

㈡ 用c語言怎樣連接sql資料庫

SQL 有API的,包含頭文件和連接使用相應的.lib就可以

~
~
~

㈢ 用C#二維數組怎樣讀取並計算SQL資料庫表的值

<p>讀資料庫的數據你最好別用數組,用隊列List或動態數組ArrayList</p>
class
C
{
    public
數據類型
A1
{get;set;}
    public
數據類型
A2
{get;set;}
    public
數據類型
A3
{get;set;}
    public
數據類型
A4
{get;set;}
    public
數據類型
A5
{get;set;}
    public
數據類型
A6
{get;set;}   
}
class
CService
//這是操作這張表的類
{
    public
List<C>
GetModels(string
sql)//這里是讀取數據的sql語句
    {
        List<C>
CList=new
List<C>();
        //獲取數據
        return
CList;//返回數據
    }
}
//得到數據以後
public
void
method()
{
    List<C>
CList=new
List<C>();
    CService
cs=new
CService();
    CList=cs.GetModels("select
*
from
表名")
    foreach(var
item
in
CList)//得到數據以後,這里的item就是你的每一行
    {
        item.A1//這里是列的值
        ...
        item.A6
    }
}<p>這樣操作比用數組好,因為數據是聲明的時候就要明確大小的,而用List就可以動態加入數據</p>

㈣ 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語言直接讀取sql資料庫 直接用讀取txt文件的方式行不行

單純的用c語言不可以,需要混編才能訪問資料庫。txt文件,單純的c就可以。

㈥ 簡道雲如何讀取本地sql資料庫的數據

步驟如下;
1、導入.sql文件命令:mysql>USE資料庫名;mysql>sourced:/mysql.sql;
2、建立資料庫:mysql>CREATEDATABASE庫名;
3、建立數據表:mysql>USE庫名;mysql>CREATETABLE表名(欄位名VARCHAR(20),欄位名CHAR(1));
4、刪除資料庫:mysql>DROPDATABASE庫名;
5、刪除數據表:mysql>DROPTABLE表名;
6、將表中記錄清空:mysql>DELETEFROM表名;
7、往表中插入記錄:mysql>INSERTINTO表名VALUES("hyq","M");
8、更新表中數據:mysql->UPDATE表名SET欄位名1='a',欄位名2='b'WHERE欄位名3='c';
9、用文本方式將數據裝入數據表中:mysql>loaddatalocalinfile"d:/mysql.txt"intotable表名.

㈦ C#中如何連接SQL資料庫 並獲取數據

Console.WriteLine("成功連接到資料庫!"); Console.WriteLine("data sourc:{0}",conn.DataSource); Console.WriteLine("database name:{0}",conn.Database); Console.WriteLine("client name:{0}",conn.WorkstationId); SqlCommand cmd=new SqlCommand("select CategoryID,CategoryName from Categories",conn); SqlDataReader dr=cmd.ExecuteReader(); while(dr.Read()){Console.WriteLine("\t{0}\t{1}",dr.GetInt32(0),dr.GetString(1));}dr.Close(); conn.Close();}catch(Exception e){Console.WriteLine("無法連接到資料庫!"); DataReader的意思就是數據閱讀器,它是以類似於指針的形式讀取資料庫裡面的記錄,具有效率高的特點。使用Read()方法可以將滿足查詢的記錄依次讀取出來,類似於指針的Next()方法。使用while循環可以讀取到全部記錄,讀取到最後一條記錄時退出循環。返回的值為Object類型,可以進行轉換以得到需要的數據。 示例:while(reader.Read()){string name = reader["name"].ToString(); // name為查詢語句中的name列}注意使用datareader必須及時關閉,否則會與資料庫建立長連接,消耗資料庫的連接數。關閉連接使用Close()方法或使用Using方法讓系統幫你自動釋放。 具體可參考MSDN SqlDataReader.Read()方法。

㈧ 請問如何用VC連接資料庫並讀取SQL Server資料庫中的數據

在新建的工程中選擇有資料庫支持,點那個數據源按鈕然後選擇要你使用的資料庫,將你做好的資料庫全部選中,在編程時建立基類為CRECORDSET的類,選擇你在該模塊中要使用的資料庫,然後在其後的編程中調用

顯示資料庫用列表控制項

剩下的就看你的編程了

㈨ 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)

熱點內容
優酷怎麼給視頻加密 發布:2025-05-14 19:31:34 瀏覽:633
夢三國2副本腳本 發布:2025-05-14 19:29:58 瀏覽:859
phpxmlhttp 發布:2025-05-14 19:29:58 瀏覽:432
Pua腳本 發布:2025-05-14 19:24:56 瀏覽:448
蘋果像素低為什麼比安卓好 發布:2025-05-14 19:13:23 瀏覽:460
安卓機微信怎麼設置紅包提醒 發布:2025-05-14 19:00:15 瀏覽:271
androidsystem許可權設置 發布:2025-05-14 18:56:02 瀏覽:970
mq腳本 發布:2025-05-14 18:45:37 瀏覽:25
仙境傳說ro解壓失敗 發布:2025-05-14 18:45:01 瀏覽:868
betweenand的用法sql 發布:2025-05-14 18:39:25 瀏覽:250