⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visual c++ 中 的odbc 编 程 .htm

📁 VC的一些技巧性文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    <pre>	m_pSet-&gt;AddNew();	// 在 表 的 末 尾 增 加 新 记 录	m_pSet-&gt;SetFieldNull(&amp;(m_pSet-&gt;m_type), FALSE);	m_pSet-&gt;m_type=&quot; 电 动 机&quot;;		...			// 输 入 新 的 字 段 值	m_pSet-&gt;	Update();	// 将 新 记 录 存 入 数 据 库	m_pSet-&gt;Requery();	// 重 建 记 录 集</pre>    <p><font color="#FFFFFF">----</font> <b>3 . 删 除 记 录</b> <br>    <font color="#FFFFFF">----</font> 直 接 使 用Delete() 函 数, 并 且 在 调 用Delete()     函 数 之 后 不 需 调 用Update() 函 数: </p>    <pre>	m_pSet-&gt;Delete();	if (!m_pSet-&gt;IsEOF())		m_pSet-&gt;MoveNext();	else		m_pSet-&gt;MoveLast();</pre>    <p><font color="#FFFFFF">----</font> <b>4 . 修 改 记 录</b> <br>    <font color="#FFFFFF">----</font> 修 改 记 录 使 用Edit() 函 数: </p>    <pre>	m_pSet-&gt;Edit();		// 修 改 当 前 记 录	m_pSet-&gt;m_type=&quot; 发 电 机&quot;;	// 修 改 当 前 记 录 字 段 值		...m_pSet-&gt;Update();		// 将 修 改 结 果 存 入 数 据 库	m_pSet-&gt;Requery();</pre>    <p><font color="#FFFFFF">----</font> <b>5 . 撤 消 操 作</b> <br>    <font color="#FFFFFF">----</font> 如 果 用 户 选 择 了 增 加 或 者 修 改 记     录 后 希 望 放 弃 当 前 操 作, 可 以 在 调 用Update() 函 数 之 前 调     用: </p>    <p><font color="#FFFFFF">----</font> CRecordSet::Move(AFX_MOVE_REFRESH); </p>    <p><font color="#FFFFFF">----</font> 来 撤 消 增 加 或 修 改 模 式, 并 恢     复 在 增 加 或 修 改 模 式 之 前 的 当 前 记 录。 其 中 的 参 数AFX_MOVE_REFRESH     的 值 为 零。 </p>    <p><font color="#FFFFFF">----</font> <b>6 . 数 据 库 连 接 的 复 用</b> <br>    <font color="#FFFFFF">----</font> 在CRecordSet 类 中 定 义 了 一 个 成 员 变     量m_pDatabase: </p>    <p><font color="#FFFFFF">----</font> CDatabase* m_pDatabase; </p>    <p><font color="#FFFFFF">----</font> 它 是 指 向 对 象 数 据 库 类 的 指     针。 如 果 在CRecordSet 类 对 象 调 用Open() 函 数 之 前, 将 一 个 已     经 打 开 的CDatabase 类 对 象 指 针 传 给m_pDatabase, 就 能 共 享 相 同     的CDatabase 类 对 象。 如: </p>    <pre>	CDatabase m_db;	CRecordSet m_set1,m_set2;	m_db.Open(_T(&quot;Super_ES&quot;));	// 建 立ODBC 连 接	m_set1.m_pDatabase=&amp;m_db;	//m_set1 复 用m_db 对 象	m_set2.m_pDatabse=&amp;m_db;	// m_set2 复 用m_db 对 象</pre>    <p><font color="#FFFFFF">----</font> <b>7 .SQL 语 句 的 直 接 执 行</b> <br>    <font color="#FFFFFF">----</font> 虽 然 通 过CRecordSet 类, 我 们 可 以 完 成     大 多 数 的 查 询 操 作, 而 且 在CRecordSet::Open() 函 数 中 也 可 以     提 供SQL 语 句, 但 是 有 的 时 候 我 们 还 想 进 行 一 些 其 他 操     作, 例 如 建 立 新 表, 删 除 表, 建 立 新 的 字 段 等 等, 这     时 就 需 要 使 用 到CDatabase 类 的 直 接 执 行SQL 语 句 的 机 制。 通     过 调 用CDatabase::ExecuteSQL() 函 数 来 完 成SQL 语 句 的 直 接 执 行: </p>    <pre>	BOOL CDB::ExecuteSQLAndReportFailure(const CString&amp; strSQL)	{		TRY		{		m_pdb-&gt;ExecuteSQL(strSQL);	// 直 接 执 行SQL 语 句		}		CATCH (CDBException,e)		{		CString strMsg;		strMsg.LoadString(IDS_EXECUTE_SQL_FAILED);		strMsg+=strSQL;		return FALSE;		}		END_CATCH 		return TRUE;	}</pre>    <p><font color="#FFFFFF">----</font> 应 当 指 出 的 是, 由 于 不 同DBMS 提     供 的 数 据 操 作 语 句 不 尽 相 同, 直 接 执 行SQL 语 句 可 能 会     破 坏 软 件 的DBMS 无 关 性, 因 此 在 应 用 中 应 当 慎 用 此 类 操     作。 </p>    <p><font color="#FFFFFF">----</font> <b>8 . 动 态 连 接 表</b> <br>    <font color="#FFFFFF">----</font> 表 的 动 态 连 接 可 以 利 用 在 调 用CRecordSet::Open()     函 数 时 指 定SQL 语 句 来 实 现。 同 一 个 记 录 集 对 象 只 能 访     问 具 有 相 同 结 构 的 表, 否 则 查 询 结 果 将 无 法 与 变 量 相     对 应。 </p>    <pre>	void CDB::ChangeTable()	{		if (m_pSet-&gt;IsOpen())	m_pSet-&gt;Close();		switch (m_id)		{		case 0:		m_pSet-&gt;Open(AFX_DB_USE_DEFAULT_TYPE, &quot;SELECT * FROM SLOT0&quot;);	// 连 接 表SLOT0		m_id=1;		break;		case 1:		m_pSet-&gt;Open(AFX_DB_USE_DEFAULT_TYPE, &quot;SELECT * FROM SLOT1&quot;);	// 连 接 表SLOT1		m_id=0;		break;		}	}</pre>    <p><font color="#FFFFFF">----</font> <b>9 . 动 态 连 接 数 据 库</b> <br>    <font color="#FFFFFF">----</font> 由 于 与 数 据 库 的 连 接 是 通 过CDatabase     类 对 象 来 实 现 的, 所 以 我 们 可 以 通 过 赋 与CRecordSet 类 对     象 参 数m_pDatabase 以 连 接 不 同 数 据 库 的CDatabase 对 象 指 针, 就     可 以 动 态 连 接 数 据 库。 </p>    <pre>	void CDB::ChangeConnect()	{		CDatabase* pdb=m_pSet-&gt;m_pDatabase;		pdb-&gt;Close();		switch (m_id)		{		case 0:		if (!pdb-&gt;Open(_T(&quot;Super_ES&quot;)))	// 连 接 数 据 源Super_ES		{			AfxMessageBox(&quot; 数 据 源Super_ES 打 开 失 败,&quot;</pre>    <p><font color="#FFFFFF">----</font> &quot; 请 检 查 相 应 的ODBC 连 接&quot;,     MB_OK|MB_ICONWARNING); </p>    <pre>			exit(0);		}		m_id=1;		break;		case 1:		if (!pdb-&gt;Open(_T(&quot;Motor&quot;)))	// 连 接 数 据 源Motor		{			AfxMessageBox(&quot; 数 据 源Motor 打 开 失 败,&quot;</pre>    <p><font color="#FFFFFF">----</font> &quot; 请 检 查 相 应 的ODBC 连 接&quot;,     MB_OK|MB_ICONWARNING); </p>    <pre>			exit(0);		}		m_id=0;		break;		}	}</pre>    <h3><font color="#0000C0">四 . 总 结</font></h3>    <h3><font color="#FFFFFF">----</font> Visual C++ 中 的ODBC 类 库 可 以 帮 助 程     序 员 完 成 绝 大 多 数 的 数 据 库 操 作。 利 用ODBC 技 术 使 得 程     序 员 从 具 体 的DBMS 中 解 脱 出 来, 从 而 极 大 的 减 少 了 软 件     开 发 的 工 作 量, 缩 短 开 发 周 期, 提 高 了 效 率 和 软 件 的     可 靠 性。 本 文 总 结 的 笔 者 从 事 软 件 开 发 的 一 些 经 验 心     得 希 望 对 从 事ODBC 开 发 的 工 作 者 有 所 帮 助。 </h3>    <h3><font color="#0000C0">参 考 文 献 </font></h3>    <ol>      <li>《Visual C++ 技 术 内 幕( 第 二 版)》,[ 美] David J.Kruglinski, 清         华 大 学 出 版 社,1996。 <br>      </li>      <li>《Visual C++4.0 教 程》,Microsoft 著, 何 晓 刚 等 译, 科 学 出 版         社 等 出 版,1997。 <br>      </li>      <li>《ODBC 深 入 剖 析》,[ 美] Kyle Geiger 著, 曹 康 等 译, 电 子 工         业 出 版 社,1996。 </li>    </ol>    </td>  </tr></table></center></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -