当前位置:首页 » 操作系统 » c封装数据库

c封装数据库

发布时间: 2024-04-28 07:59:27

㈠ 用C编写数据库怎么写

一个万能的DBHelper就可以解决都事情,直接对数据库中的存储过程进行调用,只需要传入参数就可以和你调用的存储过程就可以。有关万能DBHelper的参考代码如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.sqlClient;

namespace Clock
{
public static class DBHelper
{
private static SqlConnection connection;//这里的SqlConnection 自己写//对数据进行查询时候调用的
public static SqlConnection Connection
{
get
{
string connectionString = "Data Source=PC-Ahsun;Initial Catalog=Clock; uid=sa;pwd=striveahsun";
if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}//对数据进行增删改时候调用的
public static int ExecuteCommand(string sql)
{
SqlCommand cmd = new SqlCommand(sql,connection);
int resualt = cmd.ExecuteNonQuery();
return resualt;
}
}
}

㈡ 用c语言怎么连接数据库呢

25.2.2. C API函数概述
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。请参见25.2.3节,“C API函数描述”。

函数
描述

mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。

mysql_autocommit()
切换 autocommit模式,ON/OFF

mysql_change_user()
更改打开连接上的用户和数据库。

mysql_charset_name()
返回用于连接的默认字符集的名称。

mysql_close()
关闭服务器连接。

mysql_commit()
提交事务。

mysql_connect()
连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。

mysql_create_db()
创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。

mysql_data_seek()
在查询结果集中查找属性行编号。

mysql_debug()
用给定的字符串执行DBUG_PUSH。

mysql_drop_db()
撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。

mysql_mp_debug_info()
让服务器将调试信息写入日志。

mysql_eof()
确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()
返回上次调用的MySQL函数的错误编号。

mysql_error()
返回上次调用的MySQL函数的错误消息。

mysql_escape_string()
为了用在SQL语句中,对特殊字符进行转义处理。

mysql_fetch_field()
返回下一个表字段的类型。

mysql_fetch_field_direct()
给定字段编号,返回表字段的类型。

mysql_fetch_fields()
返回所有字段结构的数组。

mysql_fetch_lengths()
返回当前行中所有列的长度。

mysql_fetch_row()
从结果集中获取下一行

mysql_field_seek()
将列光标置于指定的列。

mysql_field_count()
返回上次执行语句的结果列的数目。

mysql_field_tell()
返回上次mysql_fetch_field()所使用字段光标的位置。

mysql_free_result()
释放结果集使用的内存。

mysql_get_client_info()
以字符串形式返回客户端版本信息。

mysql_get_client_version()
以整数形式返回客户端版本信息。

mysql_get_host_info()
返回描述连接的字符串。

mysql_get_server_version()
以整数形式返回服务器的版本号。

mysql_get_proto_info()
返回连接所使用的协议版本。

mysql_get_server_info()
返回服务器的版本号。

mysql_info()
返回关于最近所执行查询的信息。

mysql_init()
获取或初始化MYSQL结构。

mysql_insert_id()
返回上一个查询为AUTO_INCREMENT列生成的ID。

mysql_kill()
杀死给定的线程。

mysql_library_end()
最终确定MySQL C API库。

mysql_library_init()
初始化MySQL C API库。

mysql_list_dbs()
返回与简单正则表达式匹配的数据库名称。

mysql_list_fields()
返回与简单正则表达式匹配的字段名称。

mysql_list_processes()
返回当前服务器线程的列表。

mysql_list_tables()
返回与简单正则表达式匹配的表名。

mysql_more_results()
检查是否还存在其他结果。

mysql_next_result()
在多语句执行过程中返回/初始化下一个结果。

mysql_num_fields()
返回结果集中的列数。

mysql_num_rows()
返回结果集中的行数。

mysql_options()
为mysql_connect()设置连接选项。

mysql_ping()
检查与服务器的连接是否工作,如有必要重新连接。

mysql_query()
执行指定为“以Null终结的字符串”的SQL查询。

mysql_real_connect()
连接到MySQL服务器。

mysql_real_escape_string()
考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。

mysql_real_query()
执行指定为计数字符串的SQL查询。

mysql_refresh()
刷新或复位表和高速缓冲。

mysql_reload()
通知服务器再次加载授权表。

mysql_rollback()
回滚事务。

mysql_row_seek()
使用从mysql_row_tell()返回的值,查找结果集中的行偏移。

mysql_row_tell()
返回行光标位置。

mysql_select_db()
选择数据库。

mysql_server_end()
最终确定嵌入式服务器库。

mysql_server_init()
初始化嵌入式服务器库。

mysql_set_server_option()
为连接设置选项(如多语句)。

mysql_sqlstate()
返回关于上一个错误的SQLSTATE错误代码。

mysql_shutdown()
关闭数据库服务器。

mysql_stat()
以字符串形式返回服务器状态。

mysql_store_result()
检索完整的结果集至客户端。

mysql_thread_id()
返回当前线程ID。

mysql_thread_safe()
如果客户端已编译为线程安全的,返回1。

mysql_use_result()
初始化逐行的结果集检索。

mysql_warning_count()
返回上一个SQL语句的告警数。 详见:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview
http://dev.mysql.com/doc/refman/5.0/en/c.html

㈢ C语言中如何做数据库(c语言写数据库)

CDatabase对象表示到数据源的连接,通过它可以操作数据源。数据源是位于一些数据库管理系统(DBMS)的数据的指定实例,包括Server,MicrosoftAess,BorlanddBASE和xBASE。在应用中可以同时使一个或多个CDatabase对象活动。

注意让高氏:

如果在处理数据访问对象(DAO)类而不是开放数据库连接(念瞎ODBC)类,可使用类。有关的更多信息,请参阅联机文档“VisualC程序员指南”中的“数据库主题(通用)”与“DAO和MFC”。

为使用CDatabase,构造一个CDatabase对象并调用它的OpenEx成员函数。这打开了一个连接。在接着构造CRecordset对象以操纵连接的数据源时,向CDatabase对象传递记录集构造程序指针。完成使用连接时坦散调用Close成员函数并销毁CDatabase对象。Close关闭以前没有关闭的任何记录集。

㈣ 如何用C语言建立数据库

用SQLITE吧,像ACCESS.你可以去www.sqlite.org那里下载类库.头文件.以及管理工具.

㈤ C语言 如何将变量 插入mySQL数据库,mySQL C语言封装变量的问题

假如用户输入的姓名和年龄值分别保存在变量name,age中:
char sql_insert[200];
sprintf(sql_insert, "INSERT INTO table values('%s','%d');", name, age);
mysql_query(&mysql_conn, sql_insert);
上述语句在执行完sprintf语句后,sql_insert中保存的是INSERT查询语句字符串,sql_insert作为mysql_query()语句的参数即可实现正确的插入。

㈥ 鐢╒isual C++寮鍙戞暟鎹搴揿簲鐢ㄧ▼搴(2)


3銆 浣跨敤MFC璁块梾ODBC鏁版嵁婧
3锛1 姒傝堪
VisualC++镄凪FC绫诲簱瀹氢箟浜嗗嚑涓鏁版嵁搴撶被銆傚湪鍒╃敤ODBC缂栫▼镞讹纴缁忓父瑕佷娇鐢ㄥ埌CDatabase(鏁版嵁搴撶被)锛孋RecordSet(璁板綍闆嗙被)鍜孋RecordView(鍙瑙呜板綍闆嗙被)銆 鍏朵腑锛
CDatabase绫诲硅薄鎻愪緵浜嗗规暟鎹婧愮殑杩炴帴锛岄氲繃瀹冧綘鍙浠ュ规暟鎹婧愯繘琛屾搷浣溿
CRecordView绫诲硅薄鑳戒互鎺у埗镄勫舰寮 鏄剧ず鏁版嵁搴撹板綍銆傝繖涓瑙嗗浘鏄鐩存帴杩炲埌涓涓狢RecordSet瀵硅薄镄勮〃瑙嗗浘銆
CRecordSet绫诲硅薄鎻愪緵浜嗕粠鏁版嵁婧 涓鎻愬彇鍑虹殑璁板綍闆嗐侰RecordSet瀵硅薄阃氩父鐢ㄤ簬涓ょ嶅舰寮忥细 锷ㄦ佽岄泦锛坉ynasets锛夊拰蹇镦ч泦锛坰napshots锛夈傚姩镐佽岄泦鑳戒缭 鎸佷笌鍏朵粬鐢ㄦ埛镓锅氱殑镟存敼淇濇寔钖屾ャ傚揩镦ч泦鍒欐槸鏁版嵁镄勪竴涓闱欐佽嗗浘銆傛疮涓绉嶅舰寮忓湪璁板綍闆呜镓揿紑镞堕兘鎻愪緵涓缁勮板綍锛屾墍涓嶅悓镄勬槸锛屽綋浣犲湪涓涓锷ㄦ佽岄泦閲屾粴 锷ㄥ埌涓𨱒¤板綍镞讹纴鐢卞叾浠栫敤鎴锋垨鏄浣犲簲鐢ㄧ▼搴忎腑镄勫叾浠栬板綍闆嗗硅ヨ板綍镓锅氱殑镟存敼浼氱浉搴斿湴鏄剧ず鍑烘潵銆
Visual C++鎻愪緵浜嗗嚑绉嶈板綍闆嗭纴鍙浠ョ敤𨱒ュ畾鍒跺簲鐢ㄧ▼搴忕殑宸ヤ綔鏂瑰纺銆傛煡鐪嬭繖浜涗笉钖岄夐”镄勬渶蹇鏂瑰纺瑕佸吋椤鹃熷害鍜岀壒寰併备綘浼氩彂鐜帮纴鍦ㄥ緢澶氭儏鍐典笅锛屽傛灉𨱍虫坊锷犵壒寰侊纴灏卞繀椤讳粯鍑虹▼搴忔墽琛岄熷害闄崭绠镄勪唬浠枫备笅闱㈠憡璇変綘涓浜涘彲浠ヨ嚜鐢辨敮閰岖殑璁板綍闆嗛夐”銆傛洿閲嶈佺殑鏄锛岃佸憡璇変綘浠庤繖涓阃夐”鍙浠ヨ幏寰楁洿蹇镄勯熷害杩樻槸镟村氱殑鐗瑰緛銆
1銆丼napshot锛埚揩镦э级 杩欎釜阃夐”瑕乂isual C++鍦ㄤ竴娆″揩镦т腑涓嬭浇鏁翠釜镆ヨ銆傛崲瑷涔嬶纴鍙婃椂蹇阃熷湴缁欐暟鎹搴揿唴瀹规媿镦э纴骞舵妸瀹冧綔涓烘湭𨱒ュ伐浣灭殑锘虹銆傝繖绉嶆柟娉曟湁涓変釜缂虹偣銆傜涓锛屼綘鐪嬩笉鍒板埆浜哄湪缃戠粶涓婂仛镄勬洿鏂帮纴杩椤彲鑳芥剰锻崇潃浣犵殑鍐冲畾鏄寤虹珛鍦ㄨ佷俊鎭镄勫熀纭涓娿傜浜岋纴涓娆″氨涓嬭浇镓链夎繖浜涜板綍锛岃繖镒忓懗镌鍦ㄤ笅杞芥湡闂寸粰缃戠粶澧炲姞浜嗘矇閲岖殑璐熸媴銆傜涓夛纴璁板綍涓嬭浇镞剁敤鎴蜂细缁撴潫绛夊緟锛岃繖镒忓懗镌缃戠粶镄勫懠鍙镐ц兘鍙桦缑镟翠绠銆傜劧钥岃繖绉嶆柟娉曚篃链変袱涓浼樼偣銆傜涓锛岃板綍涓镞﹁涓嬭浇锛岃ュ伐浣灭珯镓闇镄勭绣缁沧椿锷ㄥ嚑涔庡氨娌℃湁浜嗘灒杩欎负鍏跺畠璇锋眰閲婃斁浜嗗甫瀹姐傛讳箣锛屼綘浼氱湅鍒扮绣缁灭殑钖炲悙閲忓炲ぇ浜嗐傜浜岋纴锲犱负镓链夎鐢宠风殑璁板綍閮藉湪鐢ㄦ埛镄勬満鍣ㄤ笂锛屾墍浠ョ敤鎴峰疄闄呬笂浼氩缑鍒板簲鐢ㄧ▼搴忔洿浣崇殑镐讳綋镐ц兘銆备綘鍙鑳芥兂鎶婂揩镦х殑鏂规硶闄愬埗鍦ㄨ缉灏忕殑鏁版嵁搴扑笂浣跨敤锛屽师锲犲湪浜庡揩镦ч傜敤浜庣敤鎴疯锋眰淇℃伅钥屼笉阃傜敤浜庢暟鎹缂栬緫浼氲瘽銆
2銆丏ynaset锛埚姩镐侀泦锛 浣跨敤杩欎釜阃夐”镞讹纴Visual C++鍒涘缓鎸囧悜镓璇锋眰镄勬疮涓璁板綍镄勫疄闄呮寚阍堛傚彟澶栵纴鍙链夊~鍏呭睆骞曟椂瀹为檯闇瑕佺殑璁板綍鏄浠庢湇锷″櫒涓娄笅杞芥潵镄勚傝繖绉嶆柟娉旷殑濂藉勫緢鏄庢樉銆傚嚑涔庨┈涓婂氨鑳藉湪灞忓箷涓婄湅鍒拌板綍銆傝屼笖杩树细鐪嫔埌鍏跺畠鐢ㄦ埛瀵规暟鎹搴撴墍锅氱殑镟存敼銆傛渶钖庯纴鍏跺畠鐢ㄦ埛涔熶细鐪嫔埌浣犲仛镄勬洿鏀癸纴锲犱负锷ㄦ侀泦鍦ㄤ綘镟存敼璁板綍镞惰涓婅浇鍒版湇锷″櫒涓娿傚緢鏄庢樉锛岃繖绉嶆柟娉曡佹眰瀵规湇锷″櫒镄勫疄镞惰块梾锛屽畠鍑忓皬浜嗙绣缁沧诲闷钖愰噺骞堕檷浣庝简搴旂敤绋嫔簭镄勬ц兘銆傝繖涓阃夐”阃傚悎浜庡垱寤虹敤鎴疯佽姳璐瑰緢澶氭椂闂存潵缂栬緫鏁版嵁镄勫簲鐢ㄧ▼搴忋傚悓镞讹纴瀹冧篃鏄澶у瀷鏁版嵁搴撶殑链浣抽夋嫨锛屽师锲犲湪浜庡彧闇涓嬭浇鐢ㄦ埛瀹为檯闇瑕佺殑淇℃伅銆
3锛2 搴旂敤ODBC缂栫▼
鍙浠ュ簲鐢ˋppWizard𨱒ュ缓绔嬩竴涓狾DBC镄勫簲鐢ㄧ▼搴忔嗘灦锛屼篃鍙浠ョ洿鎺ヤ娇鐢∣DBC𨱒ヨ繘琛屾暟鎹搴撶紪绋嬶纴杩欐椂锛屽簲鍖呮嫭澶存枃浠禷fxdb.h銆
搴旂敤ODBC缂栫▼涓や釜链閲嶈佺殑绫绘槸CDatabase鍜孋RecordSet锛屼絾鍦ㄥ簲鐢ㄧ▼搴忎腑锛屼笉搴旂洿鎺ヤ娇鐢–RecordSet绫伙纴钥屽繀椤讳粠CRecordSet绫讳骇鐢熶竴涓瀵煎嚭绫伙纴骞舵坊锷犵浉搴斾簬鏁版嵁搴撹〃涓瀛楁电殑鎴愬憳鍙橀噺銆傞殢钖庯纴閲嶈浇CRecordset绫荤殑鎴愬憳鍑芥暟DoFieldExchange锛岃ュ嚱鏁伴氲繃浣跨敤RFX鍑芥暟瀹屾垚鏁版嵁搴揿瓧娈典笌璁板綍闆嗗烟鏁版嵁鎴愬憳鍙橀噺镄勬暟鎹浜ゆ崲锛孯FX鍑芥暟钖屽硅瘽妗嗘暟鎹浜ゆ崲锛图DX锛夋満鍒剁浉绫讳技锛岃礋璐e畬鎴愭暟鎹搴扑笌鎴愬憳鍙橀噺闂寸殑鏁版嵁浜ゆ崲銆
涓嬮溃涓句緥璇存槑鍦╒isualC++鐜澧冧腑ODBC 镄勭紪绋嬫妧宸э细
3锛21 鏁版嵁搴撹繛鎺
鍦–RecordSet绫讳腑瀹氢箟浜嗕竴涓鎴愬憳鍙 閲弇_pDatabase:
CDatabase *m_pDatabase;
瀹冩槸鎸囧悜瀵硅薄鏁版嵁搴撶被镄勬寚阍堛傚傛灉鍦–RecordSet绫诲硅薄璋幂敤Open()鍑芥暟涔嫔墠锛屽皢涓涓宸茬粡镓揿紑镄凛Database绫诲硅薄鎸囬拡浼犵粰m_pDatabase锛屽氨鑳藉叡浜鐩稿悓 镄凛Database绫诲硅薄銆傚傦细
CDatabase m_db;
CRecordSet m_set1,m_set2;
m_db.Open(_T("Super_ES")); // 寤 绔婳DBC 杩 鎺
m_set1.m_pDatabase=m_db; //m_set1 澶 鐢╩_db 瀵 璞
m_set2.m_pDatabse=m_db; // m_set2 澶 鐢╩_db 瀵 璞
鎴栧备笅锛
Cdatabase db;
db.Open(钬淒atabase钬); //寤虹珛ODBC杩炴帴
CrecordSet m_set(db); //鏋勯犺板綍闆嗗硅薄,浣挎暟鎹搴撴寚钖慸b
3锛22 镆ヨ㈣板綍
镆ヨ㈣板綍浣跨敤CRecordSet::Open()鍜 CRecordSet::Requery()鎴愬憳鍑芥暟銆傚湪浣跨敤CRecordSet绫诲硅薄涔嫔墠锛屽繀椤讳娇鐢 CRecordSet::Open()鍑芥暟𨱒ヨ幏寰楁湁鏁堢殑璁板綍闆嗐备竴镞﹀凡缁忎娇鐢ㄨ繃CRecordSet::Open() 鍑芥暟锛屽啀娆℃煡璇㈡椂灏卞彲浠ュ簲鐢–RecordSet::Requery()鍑芥暟銆傚湪璋 鐢–RecordSet::Open()鍑芥暟镞讹纴濡傛灉宸茬粡灏嗕竴涓宸茬粡镓揿紑镄凛Database 瀵硅薄鎸囬拡浼犵粰CRecordSet绫诲硅薄镄刴_pDatabase鎴愬憳鍙橀噺锛屽垯浣 鐢ㄨユ暟鎹搴揿硅薄寤虹珛ODBC杩炴帴锛涘惁鍒椤傛灉m_pDatabase涓虹┖鎸 阍堬纴灏辨柊寤轰竴涓狢Database绫诲硅薄骞朵娇鍏朵笌缂虹渷镄勬暟鎹婧 鐩歌繛锛岀劧钖庤繘琛孋RecordSet绫诲硅薄镄勫埯濮嫔寲銆傜己鐪佹暟鎹婧 鐢盙etDefaultConnect()鍑芥暟銮峰缑銆备綘涔熷彲浠ユ彁渚涗綘镓闇瑕佺殑SQL 璇鍙ワ纴骞朵互瀹冩潵璋幂敤CRecordSet::Open()鍑芥暟锛屼緥濡傦细
m_Set.Open(AFX_DATABASE_USE_DEFAULT,strSQL);
濡傛灉娌℃湁鎸囧畾鍙傛暟锛岀▼搴忓垯浣 鐢ㄧ己鐪佺殑SQL璇鍙ワ纴鍗冲瑰湪GetDefaultSQL()鍑芥暟涓鎸囧畾镄凷QL璇 鍙ヨ繘琛屾搷浣滐细
CString CTestRecordSet::GetDefaultSQL()
{return _T("[BasicData],[MainSize]");}
瀵逛簬GetDefaultSQL()鍑芥暟杩斿洖镄勮〃钖嶏纴 瀵瑰簲镄勭己鐪佹搷浣沧槸SELECT璇鍙ワ纴鍗筹细
SELECT * FROM BasicData,MainSize
镆ヨ㈣繃绋嬩腑涔熷彲浠ュ埄鐢–RecordSet镄 鎴愬憳鍙橀噺m_strFilter鍜宫_strSort𨱒ユ墽琛屾浔浠舵煡璇㈠拰缁撴灉鎺掑簭銆俶_strFilter 涓鸿繃婊ゅ瓧绗︿覆锛屽瓨鏀剧潃SQL璇鍙ヤ腑WHERE钖庣殑𨱒′欢涓诧绂m_strSort 涓烘帓搴忓瓧绗︿覆锛屽瓨鏀剧潃SQL璇鍙ヤ腑ORDERBY钖庣殑瀛楃︿覆銆 濡傦细
m_Set.m_strFilter="TYPE='鐢靛姩链'";
m_Set.m_strSort="VOLTAGE";
m_Set.Requery();
瀵瑰簲镄凷QL璇鍙ヤ负锛
SELECT * FROM BasicData,MainSize
WHERE TYPE='鐢靛姩链'
ORDER BY VOLTAGE
闄や简鐩存帴璧嫔肩粰m_strFilter浠ュ栵纴杩 鍙浠ヤ娇鐢ㄥ弬鏁板寲銆傚埄鐢ㄥ弬鏁板寲鍙浠ユ洿鐩磋傦纴镟存柟渚垮湴 瀹屾垚𨱒′欢镆ヨ浠诲姟銆备娇鐢ㄥ弬鏁板寲镄勬ラゅ备笅锛
(1)锛庡0鏄庡弬鍙橀噺锛
Cstring p1;
Float p2;
(2)锛庡湪鏋勯犲嚱鏁颁腑鍒濆嫔寲鍙傚彉閲
p1=_T("");
p2=0.0f;
m_nParams=2;
(3)锛庡皢鍙傚彉閲忎笌瀵瑰簲鍒楃粦瀹
pFX-SetFieldType(CFieldExchange::param)
RFX_Text(pFX,_T("P1"),p1);
RFX_Single(pFX,_T("P2"),p2);
瀹屾垚浠ヤ笂姝ラや箣钖庡氨鍙浠ュ埄鐢ㄥ弬鍙橀噺杩涜屾浔浠舵煡璇浜嗭细
m_pSet-m_strFilter="TYPE=?ANDVOLTAGE=?";
m_pSet-p1="鐢靛姩链";
m_pSet-p2=60.0;
m_pSet-Requery();
鍙傚彉閲忕殑鍊兼寜缁戝畾镄勯‘搴忔浛鎹 镆ヨ㈠瓧涓蹭腑镄勨?钬濋傞厤绗︺
濡傛灉镆ヨ㈢殑缁撴灉鏄澶氭浔璁板綍镄 璇濓纴鍙浠ョ敤CRecordSet绫荤殑鍑芥暟Move()锛孧oveNext()锛孧ovePrev()锛孧oveFirst() 鍜孧oveLast()𨱒ョЩ锷ㄥ厜镙囥
3锛23 澧炲姞璁板綍
澧炲姞璁板綍浣跨敤AddNew()鍑芥暟锛岃佹眰鏁版嵁搴揿繀椤绘槸浠ュ厑璁稿炲姞镄勬柟寮忔墦寮锛
m_pSet-AddNew(); //鍦ㄨ〃镄勬汤灏惧炲姞鏂拌板綍
m_pSet-SetFieldNull((m_pSet-m_type),FALSE);
m_pSet-m_type="鐢靛姩链";
... //杈揿叆鏂扮殑瀛楁靛
m_pSet- Update(); //灏嗘柊璁板綍瀛桦叆鏁版嵁搴
m_pSet-Requery(); //閲嶅缓璁板綍闆
3锛24 鍒犻櫎璁板綍
鐩存帴浣跨敤Delete()鍑芥暟锛屽苟涓斿湪璋幂敤Delete() 鍑芥暟涔嫔悗涓嶉渶璋幂敤Update()鍑芥暟锛
m_pSet-Delete();
if(!m_pSet-IsEOF())
m_pSet-MoveNext();
else
m_pSet-MoveLast();
3锛25 淇鏀硅板綍
淇鏀硅板綍浣跨敤Edit()鍑芥暟锛
m_pSet-Edit(); //淇鏀瑰綋鍓嶈板綍
m_pSet-m_type="鍙戠数链"; //淇鏀瑰綋鍓嶈板綍瀛楁靛
...
m_pSet-Update(); //灏嗕慨鏀圭粨鏋滃瓨鍏ユ暟鎹搴
m_pSet-Requery();
3锛26 缁熻¤板綍
缁熻¤板綍鐢ㄦ潵缁熻¤板綍闆嗙殑镐绘暟銆傚彲浠ュ厛澹版槑涓涓狢Recordset瀵硅薄m_pSet銆傚啀缁戝畾涓涓鍙橀噺m_lCount锛岀敤𨱒ョ粺璁¤板綍镐绘暟銆傛墽琛屽备笅璇鍙ワ细
m_pSet-Open(钬沦elect Count(*) from 琛ㄥ悕 where 闄愬畾𨱒′欢钬);
RecordCount=m_pSet-m_lCount;
m_pSet-Close();
RecordCount鍗充负瑕佺粺璁$殑璁板綍鏁般
鎴栧备笅锛
CRecordset m_Set(db); //db 涓篊Database瀵硅薄
CString strValue;
m_Set.Open(Select count(*) from 琛ㄥ悕 where 闄愬畾𨱒′欢钬);
m_pSet.GetFieldValue((int)0,strValue);
long count=atol(strValue);
m_set.Close();
count涓鸿板綍镐绘暟銆
3锛27 镓ц孲QL璇鍙
铏界劧阃氲繃CRecordSet绫伙纴鎴戜滑鍙浠ュ畬鎴 澶у氭暟镄勬煡璇㈡搷浣滐纴钥屼笖鍦–RecordSet::Open()鍑芥暟涓涔熷彲浠 鎻愪緵SQL璇鍙ワ纴浣嗘槸链夌殑镞跺欐垜浠杩樻兂杩涜屼竴浜涘叾浠栨搷 浣滐纴渚嫔傚缓绔嬫柊琛锛屽垹闄よ〃锛屽缓绔嬫柊镄勫瓧娈电瓑绛夛纴杩 镞跺氨闇瑕佷娇鐢ㄥ埌CDatabase绫荤殑鐩存帴镓ц孲QL璇鍙ョ殑链哄埗銆傞 杩囱皟鐢–Database::ExecuteSQL()鍑芥暟𨱒ュ畬鎴怱QL璇鍙ョ殑鐩存帴镓ц岋细
濡备笅浠g爜镓绀
BOOL CDB::ExecuteSQLAndReportFailure(const CString strSQL)
{
TRY
{
m_pdb-ExecuteSQL(strSQL); //鐩存帴镓ц孲QL璇鍙
}
CATCH (CDBException,e)
{
CString strMsg;
strMsg.LoadString(IDS_EXECUTE_SQL_FAILED);
strMsg+=strSQL;
return FALSE;
}
END_CATCH
return TRUE;
}
搴斿綋鎸囧嚭镄勬槸锛岀敱浜庝笉钖娈BMS鎻 渚涚殑鏁版嵁镎崭綔璇鍙ヤ笉灏界浉钖岋纴鐩存帴镓ц孲QL璇鍙ュ彲鑳戒细镰村潖杞浠剁殑DBMS镞犲叧镐э纴锲犳ゅ湪搴旂敤涓搴斿綋鎱庣敤姝ょ被镎崭綔銆
3锛28 娉ㄦ剰
浠嶤RecordSet瀵煎嚭镄勭被涓濡傛灉鍖呭惈DataTime绫诲瀷镄勬暟鎹锛屽湪VC涓鏄鐢–Time绫诲瀷𨱒ユ浛浠g殑锛岃繖镞讹纴鏋勯犲嚱鏁版病链夎祴浜庣己鐪佸笺傝繖镞讹纴鎴戜滑搴斿綋镓嫔伐璧嫔笺傚备笅镓绀:
CTime m_time;
m_time=NULL;#p#鍓镙囬#e#
3锛3 镐荤粨
VisualC++涓镄凮DBC绫诲簱鍙浠ュ府锷╃▼搴忓憳瀹屾垚缁濆ぇ澶氭暟镄勬暟鎹搴撴搷浣溿傚埄鐢∣DBC鎶链浣垮缑绋嫔簭锻树粠鍏蜂綋镄凞BMS涓瑙h㔉鍑烘潵锛屼粠钥屾瀬澶х殑鍑忓皯浜呜蒋浠跺紑鍙戠殑宸ヤ綔閲忥纴缂╃煭寮鍙戝懆链燂纴鎻愰珮浜嗘晥鐜囧拰杞浠剁殑鍙闱犳с
4銆佷娇鐢―AO
4锛1 姒傝堪
Visual C++鎻愪緵浜嗗笵AO镄勫皝瑁咃纴MFC DAO绫诲皝瑁呬简DAO锛堟暟鎹搴撹块梾瀵硅薄锛夌殑澶ч儴鍒嗗姛鑳斤纴浠庨溃Visual C++绋嫔簭灏卞彲浠ヤ娇鐢╒isual C++鎻愪緵镄凪FC DAO绫绘柟渚跨殑璁块梾Microsoft Jet 鏁版嵁搴掳纴缂栧埗绠娲併佹湁Visaul C++鐗硅壊镄勬暟鎹搴揿簲鐢ㄧ▼搴忋
鏁版嵁搴撹块梾瀵硅薄锛图AO锛夋彁渚涗简涓绉嶉氲繃绋嫔簭浠g爜鍒涘缓鍜屾搷绾垫暟鎹搴撶殑链哄埗銆傚氢釜DAO瀵硅薄鏋勬垚涓涓浣撶郴缁撴瀯锛屽湪杩欎釜缁撴瀯閲岋纴钖勪釜DAO瀵硅薄鍗忓悓宸ヤ綔銆侱AO鏀鎸佷互涓嫔洓涓鏁版嵁搴挞夐”锛
镓揿紑璁块梾鏁版嵁搴掳纸MDB鏂囦欢锛夆斺拟DB鏂囦欢鏄涓涓镊鍖呭惈镄勬暟鎹搴掳纴瀹冨寘𨰾镆ヨ㈠畾涔夈佸畨鍏ㄤ俊鎭銆佺储寮曘佸叧绯伙纴褰撶劧杩樻湁瀹为檯镄勬暟鎹琛ㄣ傜敤鎴峰彧椤绘寚瀹歁DB鏂囦欢镄勮矾寰勫悕銆
鐩存帴镓揿紑ODBC鏁版嵁婧悫斺旇繖閲屾湁涓涓寰堥吨瑕佺殑闄愬埗銆备笉鑳芥垒寮浠Jet寮曟搸浣滀负椹卞姩绋嫔簭镄凮DBC鏁版嵁婧愶绂鍙鍙浠ヤ娇鐢ㄥ叿链夎嚜宸辩殑ODBC椹卞姩绋嫔簭DLL镄勬暟鎹婧愩
鐢↗et寮曟搸镓惧紑ISAM鍨嬶纸绱㈠紩椤哄簭璁块梾鏂规硶锛夋暟鎹婧愶纸鍖呮嫭dBase,FoxPro,Paradox,Btrieve,Excel鎴栨枃链鏂囦欢锛夆斺斿嵆浣垮凡缁忚剧疆浜哋DBC鏁版嵁婧愶纴瑕佺敤Jet寮曟搸𨱒ヨ块梾杩欎簺鏂囦欢绫诲瀷涓镄勪竴绉嶏纴涔熷繀椤讳互ISAM鍨嬫暟鎹婧愮殑鏂瑰纺𨱒ユ垒寮鏂囦欢锛岃屼笉鏄浠ODBC鏁版嵁婧愮殑鏂瑰纺銆
缁橝CCESS鏁版嵁搴挞梼锷犲栭儴琛ㄢ斺旇繖瀹为檯涓婃槸鐢―AO璁块梾ODBC鏁版嵁婧愮殑棣栭夋柟娉曘傞栧厛浣跨敤ACCESS鎶奜DBC琛ㄦ坊锷犲埌涓涓狭DB鏂囦欢涓婏纴铹跺悗渚濈収绗涓阃夐”涓浠嬬粛镄勬柟娉旷敤DAO镓惧紑杩欎釜MDB鏂囦欢灏卞彲浠ヤ简銆傜敤鎴蜂篃鍙浠ョ敤ACCESS鎶奍ASM鏂囦欢闄勫姞鍒颁竴涓狭DB鏂囦欢涓娿
4锛2 搴旂敤DAO缂栫▼
4锛21 镓揿紑鏁版嵁搴
CDaoWorkspace瀵硅薄浠h〃涓涓狣AO Workspace瀵硅薄锛屽湪MFC DAO浣撶郴缁撴瀯涓澶勪簬链楂桦勶纴瀹氢箟浜嗕竴涓鐢ㄦ埛镄勫悓鏁版嵁搴撶殑浼氲瘽锛屽苟鍖呭惈镓揿紑镄勬暟鎹搴掳纴璐熻矗瀹屾垚鏁版嵁搴撶殑浜嫔姟澶勭悊銆傛垜浠鍙浠ヤ娇鐢ㄩ殣钖镄剋orkspace瀵硅薄銆
CDaoDatabase瀵硅薄浠h〃浜嗕竴涓鍒版暟鎹搴撶殑杩炴帴锛屽湪MFC涓锛屾槸阃氲繃CDaoDatabase灏佽呯殑銆
鍦ㄦ瀯阃烫DaoDatabase瀵硅薄镞讹纴链夊备笅涓ょ嶆柟娉:
鍒涘缓涓涓狢DaoDatabase瀵硅薄锛屽苟钖戝叾浼犻掍竴涓鎸囧悜涓涓宸茬粡镓惧紑镄凛Workspace瀵硅薄镄勬寚阍堛
鍒涘缓涓涓狢DaoDatabase瀵硅薄锛岃屼笉鏄庣‘鍦版寚瀹氢娇鐢ㄧ殑workspace,姝ゆ椂锛孧FC灏嗗垱寤轰竴涓鏂扮殑涓存椂镄凛DaoWorkspace瀵硅薄銆
濡备笅浠g爜镓绀猴细
CDaoDatabase db;
db.Open(钬渢est.mdb钬,FALSE,FALSE,_T(钬溾);
鍏朵腑鍙傛暟涓鍖呮嫭瑕佹墦寮镄勬枃浠剁殑鍏ㄨ矾寰勫悕銆
4锛22 镆ヨ㈣板綍
涓涓狣AO recordset瀵硅薄锛屼唬琛ㄤ竴涓鏁版嵁璁板綍镄勯泦钖堬纴璇ラ泦钖堟槸涓涓搴撹〃鎴栬呮槸涓涓镆ヨ㈢殑杩愯岀粨鏋滀腑镄勫叏閮ㄨ板綍銆侰DaoRecorset瀵硅薄链変笁绉岖被鍨嬶细琛ㄣ佸姩镐侀泦銆佸揩镦с
阃氩父𨱍呭喌涓嬶纴鎴戜滑鍦ㄥ簲鐢ㄧ▼搴忎腑鍙浠ヤ娇鐢–DaoRecordset镄勫煎嚭绫伙纴杩欎竴鑸鏄阃氲繃ClassWizard鎴朅ppWizard𨱒ョ敓鎴愮殑銆备絾鎴戜滑涔熷彲浠ョ洿鎺ヤ娇鐢–DaoRecordset绫荤敓鎴愮殑瀵硅薄銆傛ゆ椂锛屾垜浠鍙浠ュ姩镐佸湴缁戝畾recordset瀵硅薄镄勬暟鎹鎴愬憳銆
濡备笅浠g爜镓绀猴细
COleVariant var;
long id;
CString str;
CDaoRecordset m_Set(db);
m_Set.Open(钬沧煡璇㈢殑SQL璇鍙モ);
while(!m_Set.IsEOF())
{
/*
澶勭悊
m_Set.GetFieldValue(钬泪D钬,var);
id=V_I4(var);
m_Set.GetFieldValue(钬淣ame钬,var);
str=var.pbVal;
*/
m_Set.MoveNext();
}
m_Set.Close();
4锛23 娣诲姞璁板綍
娣诲姞璁板綍鐢ˋddNew鍑芥暟锛屾ゆ椂鐢⊿etFieldValue𨱒ヨ繘琛岃祴鍊笺
濡备笅浠g爜镓绀:
m_pDaoRecordset-AddNew ();
sprintf(strValue,"%s",m_UserName );
m_pDaoRecordset-SetFieldValue ("UserName",strValue);
sprintf(strValue,"%d",m_PointId );
m_pDaoRecordset-SetFieldValue ("PointId",strValue);
dataSrc.SetDateTime (m_UpdateTime .GetYear ),m_UpdateTime .GetMonth ),m_UpdateTime .GetDay (),
m_UpdateTime .GetHour (),m_UpdateTime .GetMinute (),m_UpdateTime .GetSecond ());
valValue=dataSrc;
m_pDaoRecordset-SetFieldValue ("UpdateTime",valValue);
sprintf(strValue,"%f",m_pRecordset-m_OldValue );
m_pDaoRecordset-SetFieldValue ("OldValue",strValue);
sprintf(strValue,"%f",m_pRecordset-m_NewValue );
m_pDaoRecordset-SetFieldValue ("NewValue",strValue);
m_pDaoRecordset-Update ();
姝ゆ椂锛岃佹敞镒忥纴镞ユ湡镞堕棿鍨嬫暟鎹瑕佺敤SetDataTime鍑芥暟𨱒ヨ祴鍊,杩欓噷闱㈣佺敤鍒癈OleVariant绫诲瀷鏁版嵁锛屽叿浣撶敤娉曞彲浠ュ弬钥冩湁鍏冲府锷┿
4锛24 淇鏀硅板綍
淇鏀硅板綍鐢‥dit()鍑芥暟锛屾妸璁板綍瀹氢綅鍒拌佷慨鏀圭殑浣岖疆锛岃皟鐢‥dit鍑芥暟锛屼慨鏀瑰畬鎴愬悗锛岃皟鐢║pdate鍑芥暟銆
濡备笅浠g爜镓绀猴细
m_Set.Edit();
m_Set.SetFieldValue(钬滃垪钖嵝,钬濆瓧绗︿覆钬);
m_Set.Update();
4锛25 鍒犻櫎璁板綍
鍒犻櫎璁板綍鐢―elete()鍑芥暟锛屼娇鐢ㄥ悗涓嶉渶璋幂敤Update()鍑芥暟銆
4锛26 缁熻¤板綍
鍙浠ヤ娇鐢ㄥ备笅浠g爜𨱒ョ粺璁¤板綍鏁帮细
COleVariant varValue;
CDaoRecordset m_Set(db);
m_Set.Open(dbOpenDynaset,钬漇QL璇鍙モ);
varValue=m_Set.GetFieldValue(0);
m_lMaxCount=V_I4(varValue);
m_Set.Close();
濡傛灉鏄缁熻′竴寮犺〃涓镐昏板綍锛屽彲浠ヤ娇鐢–DaoTableDef瀵硅薄锛屽备笅浠g爜镓绀猴细
CDaoTableDef m_Set(gUseDB);
Count=m_Set.GetRecordCount();
m_Set.Close();
涓嶈兘鐢–DaoRecordset瀵硅薄镄凣etRecordCount()𨱒ュ彇寰楄板綍鏁般
4锛3 镐荤粨
浣跨敤DAO鎶链鍙浠ヤ究鎴戜滑鏂逛究镄勮块梾Microsoft Jet寮曟搸鏁版嵁搴掳纴鐢变簬Microsoft Jet涓嶆敮鎸佸氱嚎绋嬶纴锲犳わ纴蹇呴’闄愬埗璋幂敤鍒板簲鐢ㄧ▼搴忎富绾跨▼镄勬墍链塂AO銆
5 浣跨敤OLE DB
5锛1 姒傝堪
OLE DB镄勫瓨鍦ㄤ负鐢ㄦ埛鎻愪緵浜嗕竴绉岖粺涓镄勬柟娉曟潵璁块梾镓链変笉钖岀岖被镄勬暟鎹婧愩侽LE DB鍙浠ュ湪涓嶅悓镄勬暟鎹婧愪腑杩涜岃浆鎹銆傚埄鐢∣LE DB锛屽㈡埛绔镄勫紑鍙戜汉锻桦湪杩涜屾暟鎹璁块梾镞跺彧闇鎶婄簿锷涢泦涓鍦ㄥ緢灏戠殑涓浜涚粏鑺备笂锛岃屼笉蹇呭纰镍傚ぇ閲忎笉钖屾暟鎹搴撶殑璁块梾鍗忚銆
OLE DB鏄涓濂楅氲繃COM鎺ュ彛璁块梾鏁版嵁镄𪞝ctiveX鎺ュ彛銆傝繖涓狾LE DB鎺ュ彛鐩稿綋阃氱敤锛岃冻浠ユ彁渚涗竴绉嶈块梾鏁版嵁镄勭粺涓镓嬫碉纴钥屼笉绠″瓨鍌ㄦ暟鎹镓浣跨敤镄勬柟娉曞备綍銆傚悓镞讹纴OLE DB杩桦厑璁稿紑鍙戜汉锻樼户缁鍒╃敤锘虹鏁版嵁搴撴妧链镄勪紭镣癸纴钥屼笉蹇呬负浜嗗埄鐢ㄨ繖浜涗紭镣硅屾妸鏁版嵁绉诲嚭𨱒ャ
5锛2 浣跨敤ATL浣跨敤OLE DB鏁版嵁浣跨敤绋嫔簭
鐢变簬鐩存帴浣跨敤OLE DB镄勫硅薄鍜屾帴鍙h捐℃暟鎹搴揿簲鐢ㄧ▼搴忛渶瑕佷功鍐椤ぇ閲忕殑浠g爜銆备负浜嗙亩鍖栫▼搴忚捐★纴Visual C++鎻愪緵浜咥TL妯℃澘鐢ㄤ簬璁捐OLE DB鏁版嵁搴旂敤绋嫔簭鍜屾暟鎹鎻愪緵绋嫔簭銆
鍒╃敤ATL妯℃澘鍙浠ュ緢瀹规槗鍦板皢OLE DB涓崄FC缁揿悎璧锋潵锛屼娇鏁版嵁搴撶殑鍙傛暟镆ヨ㈢瓑澶嶆潅镄勭紪绋嫔缑鍒扮亩鍖栥侻FC鎻愪緵镄勬暟鎹搴撶被浣缢LE DB镄勭紪绋嬫洿鍏锋湁闱㈠悜瀵硅薄镄勭壒镐с俈iual C++镓鎻愪緵鐢ㄤ簬OLE DB镄𪞝TL妯℃澘鍙鍒嗕负鏁版嵁鎻愪緵绋嫔簭镄勬ā𨱒垮拰鏁版嵁浣跨敤绋嫔簭镄勬ā𨱒裤
浣跨敤ATL妯℃澘鍒涘缓鏁版嵁搴旂敤绋嫔簭涓鑸链変互涓嫔嚑姝ラわ细
鍒涘缓搴旂敤妗嗘灦
锷犲叆ATL浜х敓镄勬ā𨱒跨被
鍦ㄥ簲鐢ㄤ腑浣跨敤浜х敓镄勬暟鎹璁块梾瀵硅薄
涓岖敤ATL浣跨敤OLE DB鏁版嵁浣跨敤绋嫔簭
鍒╃敤ATL妯℃澘浜х敓鏁版嵁浣跨敤绋嫔簭杈冧负绠鍗曪纴浣嗛傜敤镐т笉骞匡纴涓嶈兘锷ㄦ侀傚簲鏁版嵁搴撶殑鍙桦寲銆备笅闱㈡垜浠浠嬬粛鐩存帴浣跨敤MFC OLE DB绫绘潵鐢熸垚鏁版嵁浣跨敤绋嫔簭銆
妯℃澘镄勪娇鐢
OLE DB鏁版嵁浣跨敤钥呮ā𨱒挎槸鐢变竴浜涙ā𨱒跨粍鎴愮殑锛屽寘𨰾濡备笅涓浜涙ā𨱒匡纴涓嬮溃瀵逛竴浜涘父鐢ㄧ被浣滀竴浜涗粙缁嶃
浼氲瘽绫
CDataSource绫
CDataSource绫讳笌OLE DB镄勬暟鎹婧愬硅薄鐩稿瑰簲銆傝繖涓绫讳唬琛ㄤ简OLE DB鏁版嵁鎻愪緵绋嫔簭鍜屾暟鎹婧愪箣闂寸殑杩炴帴銆傚彧链夊綋鏁版嵁婧愮殑杩炴帴琚寤虹珛涔嫔悗锛屾墠鑳戒骇鐢熶细璇濆硅薄锛屽彲浠ヨ皟鐢∣pen𨱒ユ墦寮鏁版嵁婧愮殑杩炴帴銆
CSession绫
CSession镓鍒涘缓镄勫硅薄浠h〃浜嗕竴涓鍗旷嫭镄勬暟鎹搴撹块梾镄勪细璇濄备竴涓鐢–DataSource绫讳骇鐢熺殑鏁版嵁婧愬硅薄鍙浠ュ垱寤轰竴涓鎴栬呭氢釜浼氲瘽锛岃佸湪鏁版嵁婧愬硅薄涓娄骇鐢熶竴涓浼氲瘽瀵硅薄锛岄渶瑕佽皟鐢ㄥ嚱鏁疠pen()𨱒ユ墦寮銆傚悓镞讹纴浼氲瘽瀵硅薄杩桦彲鐢ㄤ簬鍒涘缓浜嫔姟镎崭綔銆
CEnumeratorAccessor绫
CEnumeratorAccessor绫绘槸鐢ㄦ潵璁块梾鏋氢妇鍣ㄦ煡璇㈠悗镓浜х敓镄勮岄泦涓鍙鐢ㄦ暟鎹鎻愪緵绋嫔簭镄勪俊鎭镄勮块梾鍣锛屽彲鎻愪緵褰揿墠鍙鐢ㄧ殑鏁版嵁鎻愪緵绋嫔簭鍜屽彲瑙佺殑璁块梾鍣ㄣ
璁块梾鍣ㄧ被
CAcessor绫
CAccessor绫讳唬琛ㄤ笌璁块梾鍣ㄧ殑绫诲瀷銆傚綋鐢ㄦ埛鐭ラ亾鏁版嵁搴撶殑绫诲瀷鍜岀粨鏋勬椂锛屽彲浠ヤ娇鐢ㄦょ被銆傚畠鏀鎸佸逛竴涓琛岄泦閲囩敤澶氢釜璁块梾鍣锛屽苟涓旓纴瀛樻斁鏁版嵁镄勭紦鍐插尯鏄鐢辩敤鎴峰垎閰岖殑銆
CDynamicAccessor绫
CDy

热点内容
如何修改网游服务器指令 发布:2024-05-11 16:24:01 浏览:143
如何测试服务器电源是否正常 发布:2024-05-11 16:02:55 浏览:216
比亚迪宋经典版都有哪些配置 发布:2024-05-11 16:02:54 浏览:650
如何配置第二张网卡 发布:2024-05-11 15:50:02 浏览:935
新神魔大陆脚本下载 发布:2024-05-11 15:20:21 浏览:155
c语言控制符 发布:2024-05-11 14:56:00 浏览:756
linux怎么卸载mysql 发布:2024-05-11 14:51:57 浏览:418
同步安卓源码 发布:2024-05-11 14:50:25 浏览:362
安卓如何设置抖音后台不更新 发布:2024-05-11 14:48:49 浏览:966
一元夺宝还需要什么服务器 发布:2024-05-11 14:29:01 浏览:802