当前位置:首页 » 操作系统 » mfc读取数据库

mfc读取数据库

发布时间: 2022-12-08 04:04:40

1. MFC客户端程序如何获得服务器端数据库里的数据

有远程直接方法数据库的方法。大中型数据库基本都是网络数据库,如常见的ORACLE / MSsql / MYSQL等。

MFC编程,对这些数据库可以直接通过ADO进行查询和修改,常用的办法,就是用IP地址和实例(一般为默认)作为连接字符串中的SERVER即可。
对于网络型数据库(ACCESS、DBASE不在此列),你不需要做服务器端程序,只需要通过数据库支持的通讯协议和方法进行远程操作即可。

2. mfc 如何接收mysql数据库数据

1、最简单的方式:
下载一个MYSQL ODBC驱动,并安装
2、设置一个MYSQL ODBC数据源
3、MFC中调用该数据源
4、具体进行数据库何种操作,随意
5、更多交流可参考我空间主页有关文章。

3. MFC从ListCtrl中读取数据写入数据库中的问题

可以使用最简易的调试方式:把参数全部去掉,一个个加入测试。何况这个是insert语句,比如先插入前两个:no和erp品号,后面的参数全部去掉,包括插入值。如果语句编译通过了说明前两个参数是正确的,再增加制作数量这个参数,继续测试,通过了这说明没问题,没通过则表示卡在这个参数,就要检查语法以及参数类型包括数据库表的类型等。要掌握这种简易调试方式,不一定碰到问题都break/watch~

4. 如何在MFC中读取txt文件中的数据

MFC主要读写文件的类是CFile,而CStdioFile类是派生自CFile类的,主要增加了一个按行的方式读取/写入文件每行字符串的功能
读写TXT文件,写入和输出必须统一格式
CStdioFile
myFile,
File;
if(myFile.Open(CBApp::getCurrMolePath()+_T("filename.txt"),
CFile::modeRead))
{
//读取
myFile.ReadString(str);
myFile.Close();
}
else
{
//创建
File.Open(CBApp::getCurrMolePath()+_T("filename.txt"),
CFile::modeWrite
|
CFile::modeCreate);
File.WriteString(sFileName);
File.Close();
}
//写入
File.Open(CBApp::getCurrMolePath()+_T("filename.txt"),
CFile::modeWrite
);
File.WriteString(sFileName);
File.Close();

5. MFC怎么与数据库连接,求详细步骤!!!!!急急急!!!!!!

比如在你的工程目录中建一个
dbf\vir.mdb
//access数据库,然后你需要做以下操作:
1.在stadafx.h里面添加#include
//新加入头文件,用于cdatabase类。
2.在stadafx.h最后的#endif上添加#import
"msado15.dll"
no_namespace
rename("eof","rseof")
这时,你要把msado15.dll拷到与dbf同级的目录,也就是工程目录里,当然你可以该路径
3.在你自己的工程里,比如myproc是你建的工程,添加代码
cmyporcapp::cmyprocapp(){
coinitialize(null);
sqlconfigdatasource(null,odbc_add_dsn,
"microsoft
access
driver
(*.mdb)",\
"dsn=myimage;dbq=dbf\\vir.mdb;defaultdir=dbf");
//注册本地数据库数据源
m_db.openex("dsn=myimage;;",cdatabase::noodbcdialog);//myimage是数据源名称
}
4.在前面的函数体之前创建全局变量cdatabase
m_db;
crecordset
m_rec(&m_db);
5.使用数据库{
cstring
strsql="select
*
from
virdb";
bstr
bstrsql=strsql.allocsysstring();
m_rec.open(crecordset::dynaset,strsql);
while(!m_rec.iseof())
{
//
使用数据库的代码,读出来的数据都是字符串型的
cstring
myvirable;
m_rec.getfieldvalue("字段名",myvirable);
//将某个字段的当前行的值读到myvirabl中
//
......
m_rec.movenext();
//将记录移到下一行
}
}
本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.

6. 求问MFC 循环读取数据库中的表,表中字段有NULL时出现异常,如何修改

------解决方案-------------------------------------------------------- 只能先判断是否为NULL然后面赋值
或者是数据库里表每个字段的值默认为空格" ",这样就不用判断了,这是在设计数据库里的表时定义的,每个字段都有各种属性,比如类型,大小,默认值,键值等属性
------解决方案--------------------------------------------------------也可以对查询语句进行处理,对于可能null的字段,改写为ISNULL(xxxx,'')...强制返回一个值
------解决方案--------------------------------------------------------"SELECT ISNULL(字串字段名,''),...ISNULL(整数字段名,0)... FROM 表 ..."
ISNULL 是SQL Server中的函数,在你构造的查询语句中,由SQL服务器进行解析,确保不会返回不好处理的空值
------解决方案--------------------------------------------------------C/C++ code _variant_t var=m_AdoConn.m_pRecordset->GetCollect("UserNo"); if(var.vt != VT_NULL) m_Grid.SetItemText(i,0,(LPCTSTR)(_bstr_t)var); else m_Grid.SetItemText(i,0,TEXT(""));
判断他是不是NULL。是插入字符""不是就插入原值

7. MFC对话框如何读取access数据库

首先在stdafx.h中添加如下
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
上面的路径根据你自己的更改

然后在你要查询的地方写如下代码:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
pConn->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\a.mdb";
//这里的数据库也是你的绝对路径
pConn->Open("","","",adConnectUnspecified);
pRst = pConn->Execute("Select * from ...",NULL,adCmdText);

while(!pRst->rsEOF)
{
/*
这里写你怎么把数据读取到外面,如下面是吧数据读到一个ListB0x控件中
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("这里写属性名"));
*/
pRst->MoveNext();
}
pRst->Close();
pConn->Close();

pRst.Release();
pConn.Release();
pCmd.Release();
CoUninitialize();

8. 如何用MFC从MYSQL中读取数据

//下面的代码是一个实现C++连接MYSQL数据库的很好的例子
//这里用了建表,插入,检索,删表等常用功能
//我用VC++6.0生成,已经成功连接了。
//在VC++6.0中要想把做一下两步准备工作才可以。
//(1)Tools->Options->Directories->Include files中添加C:\Program Files\MySQL\MySQL Server 6.0\include
//(2)Tools->Options->Directories->Library files中添加C:\Program Files\MySQL\MySQL Server 6.0\lib\opt
//其实就是将头文件和库文件包含进来
//我觉得这个例子写的很好,再结合自己的试验,特地介绍给大家!

#include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")

//单步执行,不想单步执行就注释掉
#define STEPBYSTEP

int main() {
cout << "****************************************" << endl;

#ifdef STEPBYSTEP
system("pause");
#endif

//必备的一个数据结构
MYSQL mydata;

//初始化数据库
if (0 == mysql_library_init(0, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
} else {
cout << "mysql_library_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//初始化数据结构
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
} else {
cout << "mysql_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//在连接数据库之前,设置额外的连接选项
//可以设置的选项很多,这里设置字符集,否则无法处理中文
if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
cout << "mysql_options() succeed" << endl;
} else {
cout << "mysql_options() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//连接数据库
if (NULL
!= mysql_real_connect(&mydata, "localhost", "root", "test", "test",
3306, NULL, 0))
//这里的地址,用户名,密码,端口可以根据自己本地的情况更改
{
cout << "mysql_real_connect() succeed" << endl;
} else {
cout << "mysql_real_connect() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//sql字符串
string sqlstr;

//创建一个表
sqlstr = "CREATE TABLE IF NOT EXISTS user_info";
sqlstr += "(";
sqlstr +=
"user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";
sqlstr +=
"user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";
sqlstr +=
"user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'";
sqlstr += ");";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() create table succeed" << endl;
} else {
cout << "mysql_query() create table failed" << endl;
mysql_close(&mydata);
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//向表中插入数据
sqlstr =
"INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() insert data succeed" << endl;
} else {
cout << "mysql_query() insert data failed" << endl;
mysql_close(&mydata);
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//显示刚才插入的数据
sqlstr = "SELECT user_id,user_name,user_second_sum FROM user_info";
MYSQL_RES *result = NULL;
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() select data succeed" << endl;

//一次性取得数据集
result = mysql_store_result(&mydata);
//取得并打印行数
int rowcount = mysql_num_rows(result);
cout << "row count: " << rowcount << endl;

//取得并打印各字段的名称
unsigned int fieldcount = mysql_num_fields(result);
MYSQL_FIELD *field = NULL;
for (unsigned int i = 0; i < fieldcount; i++) {
field = mysql_fetch_field_direct(result, i);
cout << field->name << "\t\t";
}
cout << endl;

//打印各行
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
while (NULL != row) {
for (int i = 0; i < fieldcount; i++) {
cout << row[i] << "\t\t";
}
cout << endl;
row = mysql_fetch_row(result);
}

} else {
cout << "mysql_query() select data failed" << endl;
mysql_close(&mydata);
return -1;
}

#ifdef STEPBYSTEP
system("pause");
#endif

//删除刚才建的表
sqlstr = "DROP TABLE user_info";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() drop table succeed" << endl;
} else {
cout << "mysql_query() drop table failed" << endl;
mysql_close(&mydata);
return -1;
}
mysql_free_result(result);
mysql_close(&mydata);
mysql_server_end();

system("pause");
return 0;
}

9. MFC中怎么在编辑框中输出从数据库表中读取的信息

// txl3.cpp: 定义应用程序的类行为。
//

#include "pch.h"
#include "framework.h"
#include "txl3.h"
#include "txl3Dlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// Ctxl3App

BEGIN_MESSAGE_MAP(Ctxl3App, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()

// Ctxl3App 构造

Ctxl3App::Ctxl3App()
{
// 支持重新启动管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}

// 唯一的 Ctxl3App 对象

Ctxl3App theApp;

// Ctxl3App 初始化

BOOL Ctxl3App::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

CWinApp::InitInstance();

AfxEnableControlContainer();

// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;

// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

Ctxl3Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}
else if (nResponse == -1)
{
TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
}

// 删除上面创建的 shell 管理器。
if (pShellManager != nullptr)
{
delete pShellManager;
}

#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
ControlBarCleanUp();
#endif

// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}

10. MFC从数据库读取ASCII的表中读取数据

改成((LPCTSTR*)_bstr_t(theValue));试一下,
如果还是显示乱码,需要用WideCharToMultiByte函数将unicode字符串转行成multi-byte字符串后,再添加到List控件

热点内容
服务器无法通过ip访问 发布:2025-05-16 14:26:13 浏览:540
网吧u盘拒绝访问 发布:2025-05-16 14:13:50 浏览:260
无线网检查网络配置是怎么回事 发布:2025-05-16 14:04:03 浏览:220
网络爬虫python代码 发布:2025-05-16 14:03:26 浏览:516
汽车小组件怎么弄到安卓桌面 发布:2025-05-16 13:51:12 浏览:220
linuxg编译器下载 发布:2025-05-16 13:50:58 浏览:776
centosc编译器 发布:2025-05-16 13:50:17 浏览:948
安卓手机如何变换桌面 发布:2025-05-16 13:39:33 浏览:515
sql存储过程命令 发布:2025-05-16 13:17:54 浏览:146
用纸做解压小玩具西瓜 发布:2025-05-16 13:04:09 浏览:936