c讀取資料庫
A. c語言操作Mysql資料庫的基本步驟指南c使用mysql步驟
C語言是一種強大且廣泛應用於軟體開發的編程語言。在很多應用中,C語言需要與資料庫進行交互。MySQL資料庫是一種常用且開源的關系型資料庫,本文將介紹C語言操作MySQL資料庫的基本步驟。
一、安裝MySQL資料庫和C語言相關庫文件
要操作MySQL資料庫,首先需要安裝MySQL資料庫和相關的C語言庫文件。逐步完成以下操作:
1. 從官網下載MySQL資料庫安裝程序,安裝程序自帶了C語言庫文件。
2. 在C語言程序中,需要包括mysql.h頭文件,該頭文件是關於MySQL資料庫的聲明和定義。
3. 在C語言程序中還需要包括鏈接器庫libmysql.dll的定義。
二、連接MySQL資料庫
在C語言中連接MySQL資料庫需要進行以下步驟:
1. 初始化MySQL連接
在C語言程序中連接MySQL資料庫,首先需要初始化連接。MySQL提供了初始化函數mysql_init(),該函數返回一個類型為MYSQL*的指針,該指針用於連接MySQL伺服器。下面是一個示例代碼:
MYSQL *conn_ptr;
//初始化連接
conn_ptr = mysql_init(NULL);
if (!conn_ptr)
{
fprintf(stderr, “mysql_init對象出錯 %s\n”, mysql_error(conn_ptr));
exit(1);
}
2. 連接MySQL資料庫
調用mysql_real_connect()函數連接MySQL資料庫,將返回值與MYSQL*對象做比較。下面是一些常用的參數:
mysql_real_connect(MYSQL * mysql, const char * host, const char * user, const char * passwd, const char * db,
unsigned int port, const char * unix_socket, unsigned long clientflag);
參數解釋:
mysql:使用mysql_init()函數初始化後的MYSQL*對象。
host:MySQL伺服器的主機名或IP地址。
user:MySQL用戶名。
passwd:MySQL密碼。
db:連接到的資料庫名稱。
port:MySQL伺服器的埠號。
unix_socket:連接到MySQL伺服器使用的Unix套接字。
clientflag:客戶端屬性。
下面是連接MySQL資料庫的示例代碼:
MYSQL *conn_ptr;
//連接MySQL資料庫
conn_ptr = mysql_real_connect(conn_ptr, “localhost”, “root”, “password”, “test”, 3306, NULL, 0);
if (conn_ptr)
{
printf(“連接成功!\n”);
}
else
{
printf(“連接失敗: %s \n”, mysql_error(conn_ptr));
}
三、查詢MySQL資料庫
在C語言中查詢MySQL資料庫需要以下步驟:
1. 執行查詢語句
調用mysql_real_query()函數執行SELECT語句並返回結果集。
下面是函數的聲明:
int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length);
參數解釋:
mysql:一個MYSQL*對象。
query:SQL查詢語句。
length:指定查詢緩沖區的長度。
下面是一個查詢MySQL資料庫的示例代碼:
MYSQL *conn_ptr;
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;
//執行查詢語句
mysql_real_query(conn_ptr, “SELECT * FROM student”, (unsigned int)strlen(“SELECT * FROM student”));
res_ptr = mysql_store_result(conn_ptr);
if (res_ptr)
{
printf(“查詢成功!\n”);
while ((sqlrow = mysql_fetch_row(res_ptr)))
{
printf(“%s \n”, sqlrow[0]);
}
mysql_free_result(res_ptr);
}
else
{
printf(“查詢失敗: %s \n”, mysql_error(conn_ptr));
}
四、斷開MySQL資料庫
在完成MySQL資料庫操作後,需要斷開與MySQL伺服器的連接。調用mysql_close()函數即可。以下是函數的示例代碼:
MYSQL *conn_ptr;
//斷開MySQL資料庫連接
mysql_close(conn_ptr);
在使用C語言操作MySQL資料庫時,需貫徹於以上這些基本步驟,以確保代碼的完整性。
B. c語言可以連接access資料庫
#import "C:\program files\common files\system\ado\msado15.dll " no_namespace rename( "EOF ", "adoEOF ")
//#import "c:\program files\common files\system\ado\msado15.dll " rename ( "EOF ", "adoEOF ") no_namespace
#define CREATEiNSTANCE(sp,riid) { HRESULT _hr =sp .CreateInstance( __uuidof( riid ) ); \
if (FAILED(_hr)) _com_issue_error(_hr); }
#define RsITEM(rs,x) ((rs-> Fields-> Item[_variant_t(x)]-> Value))
class CHmbAdoDB
{
public:
BOOL m_bOpen;
_ConnectionPtr m_DbConn;
CString m_ErrMsg;
CString m_SQLState;
long mSqlCode;
public:
void Cancel();
BOOL IsOpen();
void RollbackTrans();
void CommitTrans();
long BeginTrans();
void Close();
BOOL Open(LPCSTR lpszConnect);
BOOL Execute(LPCTSTR lpSQL);
void ProviderError();
CHmbAdoDB()
{
}
virtual ~CHmbAdoDB()
{
}
};
class CHmbAdoDBRs : public CObject
{
public:
_RecordsetPtr m_Rs;
public:
CHmbAdoDBRs();
virtual ~CHmbAdoDBRs();
BOOL Open( CHmbAdoDB *pDB, LPCSTR szSource,long option=-1);
void Close();
void GetRs(_variant_t x,_bstr_t &ret);
void GetRs(_variant_t x,CString &ret);
BOOL IsEOF();
BOOL IsOpen();
BOOL MoveNext();
BOOL MovePrev();
BOOL MoveFirst();
BOOL MoveLast();
};
#endif // !defined(AFX_RfidAdoDB_H__7C539954_1C62_47B6_AB6E_1A5BB73A67E5__INCLUDED_) truct InitOle
{
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;
long mSqlCode;
BOOL CHmbAdoDB::Open(LPCSTR lpszConnect)
{
try
{
CREATEiNSTANCE(m_DbConn,Connection);
m_DbConn-> Open(lpszConnect, " ", " ", adModeUnknown );
}
catch( _com_error &e)
{
return FALSE;
}
catch(...)
{
return FALSE;
}
return TRUE;
}
void CHmbAdoDB::Close()
{
if( IsOpen() )
{
m_DbConn-> Close();
}
}
long CHmbAdoDB::BeginTrans()
{
return m_DbConn-> BeginTrans();
}
void CHmbAdoDB::CommitTrans()
{
m_DbConn-> CommitTrans();
}
void CHmbAdoDB::RollbackTrans()
{
m_DbConn-> RollbackTrans();
}
void CHmbAdoDB::Cancel()
{
m_DbConn-> Cancel();
}
BOOL CHmbAdoDB::IsOpen()
{
return ( (m_DbConn-> GetState() != 0) ? TRUE : FALSE );
}
BOOL CHmbAdoDB::Execute(LPCTSTR lpSQL)
{
if (!IsOpen())
{
AfxMessageBox( "Network error, Database do not open. ");
return FALSE;
}
CString strSQL(lpSQL);
strSQL.TrimLeft();
strSQL.TrimRight();
try
{
m_DbConn-> Execute(_bstr_t(strSQL), NULL, adExecuteNoRecords);
}
catch( _com_error &e)
{
return FALSE;
}
catch(...)
{
return FALSE;
}
return TRUE;
}
void CHmbAdoDB::ProviderError()
{
// Print Provider Errors from Connection object.
// pErr is a record object in the Connection 's Error collection.
ErrorPtr pErr = NULL;
if( (m_DbConn-> Errors-> Count) > 0)
{
long nCount = m_DbConn-> Errors-> Count;
// Collection ranges from 0 to nCount -1.
for(long i = 0; i < nCount; i++)
{
pErr = m_DbConn-> Errors-> GetItem(i);
mSqlCode = pErr-> NativeError;
m_ErrMsg.Format( "SQLCODE : %ld\t%s ",mSqlCode, LPCTSTR(pErr-> Description));
m_SQLState.Format( "%s ",(char*)pErr-> SQLState);
printf( "%s // %s\n ",m_SQLState,m_ErrMsg);
}
}
m_DbConn-> Errors-> Clear();
}
CHmbAdoDBRs::CHmbAdoDBRs( )
{
}
CHmbAdoDBRs::~CHmbAdoDBRs()
{
}
BOOL CHmbAdoDBRs::Open( CHmbAdoDB *pDB, LPCSTR szSource,long option )
{
CString strSQL;
strSQL = CString(szSource);
strSQL.TrimLeft();
strSQL.TrimRight();
_variant_t vRecsAffected(0L);
// CREATEiNSTANCE( m_Rs,Recordset) ;
// m_Rs-> PutRefActiveConnection( pDB-> m_DbConn );
try
{
m_Rs = pDB-> m_DbConn-> Execute(_bstr_t(strSQL),
&vRecsAffected,
adOptionUnspecified);
m_Rs-> AddRef();
// m_Rs-> Open(szSource, vtMissing, adOpenKeyset, adLockBatchOptimistic, adOptionUnspecified);
// m_Rs-> Open(szSource, vtMissing, adOpenKeyset, adLockReadOnly, option);
// m_Rs-> Open(szSource,pDB-> m_DbConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic, adCmdText);
}
catch( _com_error &e)
{
//ErrorMessage();
m_Rs-> Close();
m_Rs-> Release();
return FALSE;
}
catch(...)
{
m_Rs-> Close();
m_Rs-> Release();
return FALSE;
}
return TRUE;
}
void CHmbAdoDBRs::Close()
{
m_Rs-> Close();
m_Rs-> Release();
}
void CHmbAdoDBRs::GetRs(_variant_t x,_bstr_t &ret)
{
ret = (m_Rs-> Fields-> Item[x]-> Value);
}
void CHmbAdoDBRs::GetRs(_variant_t x,CString &ret)
{
_bstr_t retVal;
try{
retVal = (m_Rs-> Fields-> Item[x]-> Value);
}
catch(...){
ret = " ";
return;
}
ret = CString((char*) retVal);
}
BOOL CHmbAdoDBRs::IsEOF()
{
return m_Rs-> adoEOF;
}
BOOL CHmbAdoDBRs::IsOpen()
{
return ( (m_Rs-> GetState() != 0) ? TRUE : FALSE );
}
BOOL CHmbAdoDBRs::MoveNext() { return (FAILED(m_Rs-> MoveNext()) ? FALSE : TRUE ); }
BOOL CHmbAdoDBRs::MovePrev() { return (FAILED(m_Rs-> MovePrevious()) ? FALSE : TRUE ); }
BOOL CHmbAdoDBRs::MoveFirst() { return (FAILED(m_Rs-> MoveFirst()) ? FALSE : TRUE ) ; }
BOOL CHmbAdoDBRs::MoveLast() { return (FAILED(m_Rs-> MoveLast()) ? FALSE : TRUE ) ; }
以上為一個ADO的封裝類.
c語言如何連接access資料庫
現在一般是用ADO的方法.
C. C#讀取資料庫IMAGE欄位的內容。
讀取... 讀取長二進制為圖片..
string sql = "select photo from studentinfo where studentid = " + this.Tag.ToString();
OleDbCommand cmd = new OleDbCommand(sql, connection1);
if (Convert.DBNull != cmd.ExecuteScalar())
pictureBox1.Image = Image.FromStream(new MemoryStream((Byte[])cmd.ExecuteScalar()));
放大就不知道了
保存:
string filename= textBox1.Text;//"c:\\IMG_0117.jpg";
BinaryReader reader=null;
FileStream myfilestream = new FileStream(filename,FileMode.Open);
try
{
reader=new BinaryReader(myfilestream);
byte[] image = reader.ReadBytes((int)myfilestream.Length);
using (SqlConnection conn = new SqlConnection("server=test05;database=esdb2;uid=datatran;pwd=qyrl"))
{
using (SqlCommand command = conn.CreateCommand())
{
command.CommandText =@"INSERT INTO photo(photo) VALUES (@photo)";
command.Parameters.Add("@photo", image);
conn.Open();
command.ExecuteNonQuery();
conn.Close();
MessageBox.Show("文件保存成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}
catch(IOException ee)
{
MessageBox.Show(ee.Message.ToString());
}
finally
{
if(reader!=null)
reader.Close();
}
D. C語言實現MySQL資料庫連接驅動cmysql連接驅動
C語言實現MySQL資料庫連接驅動
MySQL是一種流行的關系型資料庫管理系統,它可以輕松存儲和管理大量數據。為了連接MySQL資料庫,需要使用一種稱為「驅動」的軟體。
在本文中,我們將學習如何使用C語言來實現MySQL資料庫連接驅動。我們將涵蓋以下內容:
1. 安裝MySQL Connector/C
2. 建立連接
3. 查詢資料庫
4. 插入、更新和刪除數據
第一步:安裝MySQL Connector/C
MySQL Connector/C是一個MySQL資料庫連接器,它可以允許你從C語言編程環境中連接到MySQL伺服器。你需要先安裝這個連接器,才能開始實現我的下面的代碼。
打開命令行窗口,輸入以下命令:
sudo apt-get install libmysqlclient-dev
這會安裝最新的Connector/C庫。
第二步:建立連接
為了建立連接,我們需要在程序中包含MySQL的庫頭文件mysql.h,並調用相關的函數。
#include
#include
int mn()
{
MYSQL *conn;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, “localhost”, “username”, “password”, “database”, 0, NULL, 0))
{
printf(“Connection Fled: %s\n”, mysql_error(conn));
}
else
{
printf(“Connection Successful\n”);
}
mysql_close(conn);
return 0;
}
在上面的程序中,我們使用了mysql_init()函數來初始化連接對象,然後使用mysql_real_connect()函數來實際建立連接。這個函數需要四個參數:
1. 主機名或IP地址(本地主機為「localhost」)
2. 用戶名
3. 密碼
4. 資料庫名
如果連接成功,這個函數將返回一個MYSQL對象,我們可以用它來進行後續的操作。否則,我們需要使用mysql_error()函數來顯示錯誤信息。
我們用mysql_close()函數來關閉連接對象。
第三步:查詢資料庫
一旦我們建立了連接,我們就可以開始查詢資料庫。這個過程涉及使用mysql_query()函數來執行SQL語句。
在這個例子中,我們將查詢一個名為「table」的表格,顯示每一行的數據。
#include
#include
int mn()
{
MYSQL *conn;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, “localhost”, “username”, “password”, “database”, 0, NULL, 0))
{
printf(“Connection Fled: %s\n”, mysql_error(conn));
}
else
{
printf(“Connection Successful\n”);
if (mysql_query(conn, “SELECT * FROM table”))
{
printf(“Query Fled: %s\n”, mysql_error(conn));
}
else
{
MYSQL_RES *res = mysql_store_result(conn);
MYSQL_ROW row;
while ((row = mysql_fetch_row(res)) != NULL)
{
printf(“%s %s\n”, row[0], row[1]);
}
mysql_free_result(res);
}
}
mysql_close(conn);
return 0;
}
在這個例子中,我們使用了mysql_query()函數來執行一個SELECT查詢。如果查詢失敗,我們需要使用mysql_error()函數來輸出錯誤信息。否則,我們將返回一個MYSQL_RES對象,它包含了查詢結果。
這里我們使用了mysql_fetch_row()函數來以行的方式讀取MYSQL_RES對象中的結果,直到NULL為止。我們將每一行的第一列和第二列輸出。
我們用mysql_free_result()函數來釋放MYSQL_RES對象。
第四步:插入、更新和刪除數據
我們可以使用mysql_query()函數來執行插入、更新和刪除等操作。
在下面的例子中,我們將插入一個新的行,然後更新一個行的數據。
#include
#include
int mn()
{
MYSQL *conn;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, “localhost”, “username”, “password”, “database”, 0, NULL, 0))
{
printf(“Connection Fled: %s\n”, mysql_error(conn));
}
else
{
printf(“Connection Successful\n”);
if (mysql_query(conn, “INSERT INTO table (col1, col2) VALUES (‘value1’, ‘value2’)”))
{
printf(“Query Fled: %s\n”, mysql_error(conn));
}
else
{
printf(“Insert Successful\n”);
}
if (mysql_query(conn, “UPDATE table SET col1 = ‘new_value’ WHERE col2 = ‘value2′”))
{
printf(“Query Fled: %s\n”, mysql_error(conn));
}
else
{
printf(“Update Successful\n”);
}
}
mysql_close(conn);
return 0;
}
在這個例子中,我們使用了mysql_query()函數來執行一個INSERT INTO查詢和一個UPDATE查詢。我們可以用相同的方式刪除一個行,只需在查詢中使用DELETE FROM語句即可。
總結
在本文中,我們學習了如何使用C語言來實現MySQL資料庫連接驅動。我們已經了解了如何安裝MySQL Connector/C、建立連接、查詢資料庫和插入、更新和刪除數據。對於需要從程序中訪問MySQL資料庫的開發人員,這些都是非常有用的技能。
E. c璇璦涓璁塊棶鏁版嵁搴撻兘鐢ㄥ埌浜嗗摢浜涚被錛
鍦–璇璦涓錛岃塊棶鏁版嵁搴撻氬父娑夊強浣跨敤鏁版嵁搴撴搷浣滃簱錛岃繖浜涘簱鎻愪緵浜嗕竴浜涚被鍜屽嚱鏁版潵鎵ц屾暟鎹搴撴搷浣溿傛渶甯哥敤鐨勬暟鎹搴撴搷浣滃簱鏄疧DBC錛圤pen Database Connectivity錛夛紝瀹冨厑璁鎬嬌鐢ㄦ爣鍑嗙殑API鎺ュ彛鏉ヨ繛鎺ュ拰鎿嶄綔涓嶅悓綾誨瀷鐨勬暟鎹搴撱備互涓嬫槸鍦–璇璦涓璁塊棶鏁版嵁搴撴椂鍙鑳芥秹鍙婄殑涓浜涚被鍜岀浉鍏蟲傚康錛
1. **ODBC API錛** ODBC API鏄鏁版嵁搴撹塊棶鐨勬牳蹇冿紝瀹冩彁渚涗簡涓緋誨垪鍑芥暟鐢ㄤ簬榪炴帴鏁版嵁搴撱佹墽琛孲QL鏌ヨ銆佽幏鍙栨煡璇㈢粨鏋滅瓑鎿嶄綔銆
2. **鏁版嵁搴撹繛鎺ョ被錛** 鏁版嵁搴撹繛鎺ョ被鐢ㄤ簬寤虹珛鍜岀$悊涓庢暟鎹搴撶殑榪炴帴銆傚湪ODBC涓錛屽彲浠ヤ嬌鐢╜SQLHDBC`鏁版嵁綾誨瀷琛ㄧず鏁版嵁搴撹繛鎺ュ彞鏌勩
3. **SQL璇鍙ユ墽琛岀被錛** 榪欎簺綾葷敤浜庢墽琛孲QL鏌ヨ㈣鍙ワ紝鍖呮嫭SELECT銆両NSERT銆乁PDATE銆丏ELETE絳夈傚彲浠ヤ嬌鐢╜SQLExecDirect`鍑芥暟鎵ц孲QL璇鍙ャ
4. **緇撴灉闆嗙被錛** 褰撴墽琛孲ELECT鏌ヨ㈡椂錛屼細鐢熸垚涓涓緇撴灉闆嗭紝琛ㄧず鏌ヨ㈢粨鏋溿傚彲浠ヤ嬌鐢╜SQLHSTMT`鏁版嵁綾誨瀷琛ㄧず緇撴灉闆嗗彞鏌勶紝騫朵嬌鐢╜SQLFetch`鍑芥暟鑾峰彇緇撴灉闆嗕腑鐨勬暟鎹銆
5. **閿欒澶勭悊綾伙細** 鐢ㄤ簬澶勭悊鏁版嵁搴撴搷浣滀腑鐨勯敊璇鍜屽紓甯搞傚彲浠ヤ嬌鐢╜SQLHENV`鏁版嵁綾誨瀷琛ㄧず鐜澧冨彞鏌勶紝騫朵嬌鐢╜SQLError`鍑芥暟鑾峰彇閿欒淇℃伅銆
6. **鍙傛暟鍖栨煡璇㈢被錛** 鐢ㄤ簬鎵ц屽弬鏁板寲鐨凷QL鏌ヨ錛岄槻姝SQL娉ㄥ叆絳夊畨鍏ㄩ棶棰樸
7. **浜嬪姟綆$悊綾伙細** 鐢ㄤ簬綆$悊鏁版嵁搴撶殑浜嬪姟鎿嶄綔錛屽寘鎷鎻愪氦鍜屽洖婊氫簨鍔°
8. **鏁版嵁搴撹繛鎺ユ睜綾伙細** 鏁版嵁搴撹繛鎺ユ睜鐢ㄤ簬綆$悊澶氫釜鏁版嵁搴撹繛鎺ワ紝鎻愰珮鎬ц兘鍜岃祫婧愬埄鐢ㄧ巼銆
闇瑕佹敞鎰忕殑鏄錛孋璇璦鏈韜騫舵病鏈夌被鐨勬傚康錛岃屾槸浣跨敤緇撴瀯浣撱佹寚閽堝拰鍑芥暟絳夋潵瀹炵幇闈㈠悜瀵硅薄鐨勫姛鑳姐傛暟鎹搴撴搷浣滃簱浼氭彁渚涗竴浜涙暟鎹綾誨瀷鍜屽嚱鏁版潵灝佽呮暟鎹搴撶浉鍏蟲搷浣滐紝浣嗚繖浜涘苟涓嶆槸浼犵粺鎰忎箟涓婄殑綾匯傚湪瀹為檯寮鍙戜腑錛屽彲浠ユ牴鎹鎵浣跨敤鐨勬暟鎹搴撴搷浣滃簱鐨勬枃妗e拰紺轟緥鏉ヤ簡瑙e備綍榪涜屾暟鎹搴撴搷浣溿
F. c語言直接讀取sql資料庫 直接用讀取txt文件的方式行不行
單純的用c語言不可以,需要混編才能訪問資料庫。txt文件,單純的c就可以。
G. c語言如何調用Mysql資料庫文件並進行對資料庫的操作呢。
MYSQL m_sqlCon;//聲明
mysql_init(&m_sqlCon);//初始化
mysql_real_connect(&m_sqlCon, "127.0.0.1", abc, "root", "hibernate", atoi("3306"),NULL,0)//鏈接
mysql_query(&m_sqlCon, "SET NAMES GB2312"); //設置查詢編碼格式
res = mysql_query(&m_sqlCon,"select * from ms_sendlist where flag = 1 order by style desc");//查詢
mysql_query(&m_sqlCon, sql);//插入,刪除