当前位置:首页 » 数据仓库 » mfcsql数据库操作
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mfcsql数据库操作

发布时间: 2022-08-09 03:48:01

Ⅰ 在MFC下操作数据库sql语句

Cstring strsql = "...";
m_command->CommandText = (_bsrt_t)strsql;

m_recordest = m_command->Execute(NULL,NULL,adCmdText);

Ⅱ MFC中怎么用SQL更新数据库

初始化引入相关的库+Connection对象的创建和数据库的连接
#import "c:\\Program Files\\Common Files\\System\\ADO\\msado15.dll" rename_namespace("ADOCG") rename("EOF","adoEOF") //rename("BOF","adoBOF")
using namespace ADOCG;
//... ...
_ConnectionPtr m_pConnection;
//... ...
if(!AfxOleInit())
{
AfxMessageBox("初始化OLE DLL失败!");
Return FALSE;
}

m_pConnection.CreateInstance("ADODB.Connection");
try
{
m_pConnection->ConnectionTimeout = 3;
//连接ACCESS2000
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/Attendence/AttendenceDB.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description() + _T("\n数据库连接失败"));
}
更新记录:
strSql.Format(_T("UPDATE WorkUser SET MemberName = '%s', MemberPosition = '%s' WHERE MemberID = '%s' "),m_StringName, m_StringPosition, m_StringNumber);
try
{

(theApp.m_pConnection)->Execute(_bstr_t(strSql), 0, adCmdText);
}
catch(_com_error e)
{
MessageBox(e.Description());
return;
}

Ⅲ MFC对话框如何连接SQL数据库

好像没问题,应该是你没有设置好。。。其他地方出错了
有些秘密是男人永远不会说的,所以就不要再问了,因为再问,他们给的答案也不会是真的!

1、男人很容易喜欢一个女人,却不轻易深爱一个女人。

2、男人在感情的王国里,绝对是个昏君。女人只要肯奉承,他什么都答应。

3、男人普遍喜欢外表温柔的女子,宁愿把精力花在事业或其他地方,也不愿全用来征服女人。

4、男人都不太重视对自己太好的女人。

5、男人都怕女人死缠烂打,但喜欢用同样的方式对付没追上的女人。

6、男人的梦想之一,是拥有可以超越友谊界限的红颜知己。

7、男人会以很理性的态度取舍爱情,就算他感性上很爱一个人,但当他清楚她并非一个好妻子时,他会放弃她,另找合适家居生活的那一个。男人认为恋爱和结婚是两回事,很多时候,他拖延结婚,根本原因就是他认为身边的女人不是想象中的好妻子。

8、男人对妻子的要求,可能比对恋人更低——在外型上,在性格上则更高。

9、懂得欣赏聪明女人的男人不多,和她们在一起,男人总觉得缺乏安全感受。

10、当有喜欢的女人在场时,男人会有如下表现:话多;显得聪明些;比平日慷慨;会把话题扯到得意成就上;会刻意显露平时少见的好心肠;多说一些自以为好笑的笑话引大家发笑。

11、一个男人同时是大男人和小男人的化身。大男人的他,希望女人完全迁就他,令他放心;小男人的他,意识到自己懦弱无能的一面,犹豫不决。说穿了,他们很多都是忌妒心重的小器鬼,又像孩子般容易被哄骗。

12、男人追求女人的时候愿意割舍一切自由,追到了越来越感到自由的重要性。

13、男人内心隐藏着狩猎心态,追捕,得到后就要驯服她,让她变成可在家饲养的乖乖动物。

14、男人都有爱当英雄的自大心态,所以很容易爱上向他诉苦的女人。

15、男人希望身边的女人明白:带着同一个女人去所有地方,实在是一件很闷的事(或许女人也这样觉得吧,只是不好意思说),所以和其他女人适度约会,是调剂和放松,完全可以没有其他企图。

16、两性关系中,女人需要男人告诉她,他愿意为她做任何牺牲,男人则需要女人告诉他,他很能干。

17、男人自以为是的多情,常常是女人眼中不折不扣的薄幸。

18、在男人心底,亲热到哪个程度,就是和女人的恋情发展到什么程度。

19、男人每隔一段时间,就有情绪和体力跌到谷底的几天,不想见任何人,躲起来翻翻书,听听音乐,看看影碟或狂打电玩发泄。

20、有过恋爱经验的男人都知道:女人是不能不骗的,类似像:“我会永远爱你”,“我一直都会像现在这样疼你”,“什么时候需要我,一个电话我就立刻赶来”,“我以后再也不会像爱你这样去爱另外一个人”这种话是必须要说但永远坚持不了的“骗话”,谁让女人这么爱听呢!

21、男人遇上旧情人多半会自作多情,以为与自己有过感情的人,内心总会保存一份情,幻想爱过他的女人永远爱他。女人只会美化眼前的男人,男人却不自觉地美化逝去的恋情。所以男人比女人更认同:分手还是朋友。不管是甩人还是被甩,男人多半愿意与前女友继续保持联络。

22、女人在意男友以前的女友,男人却在意女人离开他后找个什么样的男友。如果分手后仍是朋友的,他会时不时批评她的男友。

23、男人跌入爱河,很少问她的过去,不太关心她和哪种男人谈过恋爱,因为男人较注重女人的外表——外表就是现在。

24、男人不愿听心上人的旧恋情,因为一想到自己爱的人之前和其他男人有过肌肤之亲,就难以忍受。

25、面对两个对自己有爱意的人,女人会在徘徊中选择,男人不会为此烦恼——他其实只想同时追上两个人呢!

26、男人爱上一个女人,不一定对她有强烈的亲热冲动,反倒对一些他只是喜欢而不爱的女人,冲动更大些。

27、男人很容易被女人吸引,但他分得出哪种渴求出于性还是爱,大概知道能从她身上得到什么。

28、女人主动示爱,对男人来说,唯一的损失就是缩短了那段朦朦胧胧,若有若无的浪漫日子。

29、男人相信证明自身出色的重要表现之一是:拥有更多的女人。事业上越出色的男人,往往需要更多女人的仰慕和倾心以体现他的超凡脱俗。

30、男人在分手问题上拖泥带水,其实是想把去留的难题丢给女人,减少自己决定带来的内疚感。

31、男人说的“未来”是6个月到1年时间,女人的定义则可以是10年到50年。当男人爱上一个女人,他只会想象如何在短暂的未来与她亲密发展;女人则幻想到恋爱,结婚,生孩子乃至如何白头到老。

32、男人基本是都小器,大方是装出来的。表面上他们不拘小节,其实内心和女人一样,计算得清清楚楚。

33、女性较容易坦白心事,男人恰恰相反。遇到烦恼,他们找个别好友倾诉时,不会说得很完整,总会给自己留最后一点面子。男人的倾诉都是经过包装或刻意切碎的,不让一个人知道全部。这也是女人很难了解男人的原因——他们根本不想被人彻底了解。

34、一个男人可以爱上两个女人,但究竟喜欢哪个多一点,他多半分不清楚。

35、男人看待婚外情比女人实际,因为他有更多机会涉及婚外情,而且他心里明白——花心隐藏在男人的天性中。

36、男人要变心,其实和女人是否注意保持美丽仪表没直接关系,那只是他的借口之一。当他厌倦一个女人,不管她多漂亮,只要是她以外的任何女人,他都觉得比她有吸引力。

37、成熟男人对于崇拜他的少女,抵抗力是相当弱的。

38、男人年纪越大,择偶越随心所欲,乃至不顾他人的任何想法。

39、对许多男人来说,真爱意味着——爱情减去性。换句话,男人只要觉得女人缺乏性的吸引力,就可以一直跟她做单纯的朋友。

40、男人在有寻求亲热的身体冲动那一刻,对异性的要求忽然降低,他会觉得一个平时普通的女人很可爱,甚至很性感。不过等冲动一旦消退,他立刻恢复了习惯的审美判断。

41、男人对女人的爱天天快递查询 http://www.paijian.com/tt.html总是混合了生理冲动,亲热前他觉得女人什么都好,之后却可以无半点留恋,但为了不背负太多罪恶感,他们可以装作温柔地在事后继续吐露缠绵的情话。

42、男人很容易爱上卖弄风情,看起来唾手可得的女人,因为他觉得有更多机会触摸。

Ⅳ MFC中怎么连接SQL数据库

1. 由于使用的是ADO架构 首先需要在StdAfx.h文件中导入msado15.dll 和 oledb32.dll连个动态连接库文件倒入方式为:
#import "msado15.dll" no_namespace rename ("EOF", "adoEOF")
#import "oledb32.dll" no_namespace
两个文件的实际所在位置由于系统安装的位置不同而不同。
no_namespace 使用无名命名空间 程序段比较短关联较少的话可以这样使用 否则请使用命名空间以免发生冲突,
rename ("EOF", "adoEOF") 重命名 EOF为 adoEOF 以免常量冲突。
2. 关于SQL Server以及的一些要求 首先安装SQL Server的机器必须是 NT架构以上的系统 如果使用的是Windows XP SP2 的话需要对SQL Server打上SP4补丁方可网络访问
3. 最好建立一个单独的数据库操作类 使程序中需要对数据库进行操作的地方继承这个类。
4. 类成员如下
_ConnectionPtr m_pConnection; // 数据库
_RecordsetPtr m_pRecordset; // 命令
_CommandPtr m_pCommand; // 记录
5. 方法如下
bool connect2database();
bool check_user(_bstr_t name, _bstr_t pwd);
bool CBugListCommon::connect2database()
{
_bstr_t ConnectionString = "Provider=sqloledb;Data Source='SQLSERVER';Integrated Security='SSPI';Initial Catalog='Test';User Id='sa';Password='sa';";
//Data Source 数据库实例名
//Initial Catalog表名
//User Id 用户名
//Password 密码
if(FAILED(CoInitialize(NULL)))
return FALSE;
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open(ConnectionString , "", "", adConnectUnspecified);
return TRUE;
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败");
return FALSE;
}
return FALSE;
}

bool CBugListCommon::check_user(_bstr_t name, _bstr_t pwd)
{
_bstr_t cmdtxt = "SELECT User_Name, User_PassWord FROM User_Table WHERE (User_Name = N'";
cmdtxt = cmdtxt + name + "')";
// cmdtxt == SELECT User_Name, User_PassWord FROM User_Table WHERE (User_Name = N'name')
m_pCommand.CreateInstance("ADODB.Command");
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandText = cmdtxt;
m_pRecordset = m_pCommand->Execute(NULL, NULL, adCmdText);
if(!m_pRecordset->adoEOF)
{
_bstr_t tn;
tn = m_pRecordset->GetCollect("User_PassWord");
if(tn == pwd)
return TRUE;
else
return FALSE;
}
return FALSE;
}

Ⅳ MFC编程 执行SQL数据库语句问题

把这句改一下,格式不对!变量应该有单引号括起来!
"insert into 生产计划表 values
('"+qj2+"', '"+qj3+"', '"+qj4+"', '"+qj5+"', '"+qj6+"', '"+qj7+"',
'"+qj8+"', '"+qj9+"', '"+qj10+"', '"+qj11+"', '"+qj12+"')";

对于这种sql语句,可以用输出函数输出一下,来检查sql语句是否错误!

Ⅵ mfc如何连接sql数据库

推荐使用ADO连接数据库,只要数据库配置正确,基本就是sql语句的增删改查了。
推荐你去看一下孙鑫的VC++视频教程,其中有一讲是讲MFC数据库连接的sql server的,讲的很详细的。祝好运。

Ⅶ MFC中,如何连接sqlite3的数据库,并对此数据库操作

这个比较容易。按照网上提供的方法把sqlite编译成dll和lib
将dll和lib在项目的输入中添加好
在要操作的文件中#include “sqlite3.h”就可以了。我做过这方面的项目,虽然是嵌入式wince使用,但是基本和windows相同。
下面是详细的用法:
一. 编译动态链接库库文件
1). 打开VC新建一个“Win32 Dynamic-Link Library”工程,命名为:sqlite3(也可以是其他的,注意这个就是编译后的dll和lib的名字)
2). 在接下来的对话框中选择"An empty DLL project",点 FINISH->OK
3). 将源码中所有的 *.c *.h *.def 复制到工程文件夹下
4). 在工程的Source File中添加你下载到的SQLite源文件中所有*.c文件,
注意这里不要添加shell.c和tclsqlite.c这两个文件。*注意需要将tclsqlite.c和shell.c、icu.c去掉。其中tclsqlite.c用于生成基于tcl的api,如果要编译,这需要另外下载tcl.h;shell.c用于生成命令行模式的sqlite.exe,如果是静态库形式则可以选择; icu是internationalcomponents forunicode,如果需要则需另外下载相关头文件。

5). 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
6). 在Header File中添加你下载到的SQLite源文件中所有*.h文件,
7). 开始编译,Build(F7)一下
也许到这里会遇到一个错误:

e:\zieckey\sqlite\sqlite3\sqlite3ext.h(22) : fatal error C1083: Cannot open include file: 'sqlite3.h': No such file or directory

经检查发现,源码中包含sqlite3.h都是以 #include <sqlite3.h> 方式包含的,
这就是说编译器在系统默认路径中搜索,这样当然搜索不到 sqlite3.h 这个头文件啦,
这时可以改为 #include "sqlite3.h" ,让编译器在工程路径中搜索,
但是如果还有其他地方也是以 #include <sqlite3.h> 方式包含的,那么改源码就显得有点麻烦,
好了,我们可以这样,在菜单栏依次选择:Tools->Options...->Directeries
在下面的Directeries选项中输入你的 sqlite3.h 的路径,这里也就是你的工程目录.
添加好后,我们在编译一下就好了,
最后我们在工程目录的 Debug 目录生成了下面两个重要文件:
动态链接库文件 sqlite3.dll 和引入库文件 sqlite3.lib

二. 使用动态链接库

下面我们来编写个程序来测试下我们的动态链接库.

在VC下新建一个空的"Win32 Console Application" Win32控制台程序,工程命名为:TestSqliteOnWindows
再新建一个 test.cpp 的C++语言源程序,源代码如下:

// name: test.cpp
// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
// Author : zieckey
// data : 2006/11/28

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
#define _DEBUG_

int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;

int rc;

rc = sqlite3_open("zieckey.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return (1);
}
else printf("You have opened a sqlite3 database named zieckey.db successfully!\nCongratulations! Have fun ! ^-^ \n");

//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中
char *sql = " CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

#ifdef _DEBUG_
printf("zErrMsg = %s \n", zErrMsg);
#endif

//插入数据
sql = "INSERT INTO \"SensorData\" VALUES(NULL , 1 , 1 , '200605011206', 18.9 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sql = "INSERT INTO \"SensorData\" VALUES(NULL , 23 , 45 , '200605011306', 16.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sql = "INSERT INTO \"SensorData\" VALUES(NULL , 34 , 45 , '200605011306', 15.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

int nrow = 0, ncolumn = 0;
char **azResult; //二维数组存放结果

//查询数据
sql = "SELECT * FROM SensorData ";
sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
int i = 0 ;
printf( "row:%d column=%d \n" , nrow , ncolumn );
printf( "\nThe result of querying is : \n" );
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );

//删除数据
sql = "DELETE FROM SensorData WHERE SensorID = 1 ;" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
#ifdef _DEBUG_
printf("zErrMsg = %s \n", zErrMsg);
#endif
sql = "SELECT * FROM SensorData ";
sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
printf( "\n\n\n\nrow:%d column=%d " , nrow , ncolumn );
printf( "\nAfter deleting , the result of querying is : \n" );
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );

//释放掉 azResult 的内存空间
sqlite3_free_table( azResult );

#ifdef _DEBUG_
printf("zErrMsg = %s \n", zErrMsg);
#endif

sqlite3_close(db); //关闭数据库
return 0;
}

另外,将sqlite3.h sqlite3.lib sqlite3.dll文件复制到我们的工程目录.
最后 Project->Settings 在Link选项卡找到Object/library moles : 在最后填入sqlite3.lib 。
如果原来就有链接,请使用空格分隔。
现在可以编译了.
运行结果如下:
You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
zErrMsg = (null)
row:3 column=5

The result of querying is :
azResult[0] = ID
azResult[1] = SensorID
azResult[2] = SiteNum
azResult[3] = Time
azResult[4] = SensorParameter
azResult[5] = 1
azResult[6] = 1
azResult[7] = 1
azResult[8] = 200605011206
azResult[9] = 18.9
azResult[10] = 2
azResult[11] = 23
azResult[12] = 45
azResult[13] = 200605011306
azResult[14] = 16.4
azResult[15] = 3
azResult[16] = 34
azResult[17] = 45
azResult[18] = 200605011306
azResult[19] = 15.4
zErrMsg = (null)

row:2 column=5
After deleting , the result of querying is :
azResult[0] = ID
azResult[1] = SensorID
azResult[2] = SiteNum
azResult[3] = Time
azResult[4] = SensorParameter
azResult[5] = 2
azResult[6] = 23
azResult[7] = 45
azResult[8] = 200605011306
azResult[9] = 16.4
azResult[10] = 3
azResult[11] = 34
azResult[12] = 45
azResult[13] = 200605011306
azResult[14] = 15.4
zErrMsg = (null)
Press any key to continue
在上面的第五步
5). 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
是必须的, sqlite3.def 这个文件的加入会生成 *.lib引入库文件,这个对于*.dll文件是很重要的.否则你光有*.dll文件在程序调用的时候就不是那么方便了,因为这样你只能通过动态加载dll的方式调用dll库中函数

这个程序,我们先创建一个数据库,然后新建一个表,然后插入一些数据,
再查询看看插入的数据是否正确,然后又删除一些数据,删除后我们再查询了一下,
发现我们的删除操作也是成功的.
这个程序简单的调用 sqlite 的函数接口来实现对数据库的管理,
包括创建数据库、创建表格、插入数据、查询数据、删除数据等。

Ⅷ MFC 向SQL数据库写入数据问题

在MFC中与SQL数据库相关联的主要是两个类:CDatabase类与CRecordeset类。

1.将SQL中的字段显示在Clistctrl空间的列名中

[cpp]viewplain
m_gl.Open(CRecordset::dynaset);//打开ODBC连接的数据库
shortnfilecount=m_gl.GetODBCFieldCount();//获取表中的字段数
CODBCFieldInfofieldinfo;//用于存储字段信息
for(intn=0;n<nfilecount;n++)
{
m_gl.GetODBCFieldInfo(n,fieldinfo);//返回某一字段索引的字段信息m_strName保存的是字段名
intnWidth=m_list.GetStringWidth(fieldinfo.m_strName)+15;//确定列头的显示长度
m_list.InsertColumn(n,fieldinfo.m_strName,LVCFMT_LEFT,nWidth);//在Clistctrl控件中插入列
}


CStringstrvalue;
m_gl.MoveFirst();
intncount=0;
while(!m_gl.IsEOF())
{

m_list.InsertItem(ncount,strvalue);
//for(shortj=0;j<nfilecount;j++)
//{
//m_gl.GetFieldValue(j,strvalue);//获取某个字段的信息
//m_list.SetItemText(ncount,j,strvalue);//在Clistctrl控件中写入数据
//}
CStringm_ID;
m_ID.Format("%d",m_gl.m_ID);
m_list.SetItemText(ncount,0,m_ID);
m_list.SetItemText(ncount,1,m_gl.column1);
m_list.SetItemText(ncount,2,m_gl.column2);
m_list.SetItemText(ncount,3,m_gl.column3);
m_list.SetItemText(ncount,4,m_gl.column4);
m_list.SetItemText(ncount,5,m_gl.column4);
m_gl.MoveNext();
ncount++;

}
m_gl.Close();
m_db.Close();

2.删除表中的某一行:

[cpp]viewplain
intnIdxingdb=nIdx1+1;
m_gl.Open(CRecordset::dynaset);//打开数据库
m_gl.SetAbsolutePosition(nIdxingdb);//设置数据库的记录位置
m_gl.Delete();//删除记录
m_gl.Close();

3.增加到记录中一行:

[cpp]viewplain
m_gl.AddNew();
m_gl.SetFieldNull(NULL,false);

m_gl.column1=r.Name;
m_gl.column5=r.Photo;
m_gl.column2=r.Depart;
m_gl.column3=r.IsIntern;
m_gl.column4=r.Phone;
m_gl.Update();
m_gl.Requery();

m_gl.MoveFirst();

Ⅸ mfc 应用ado 连接 sql 数据库

教你个连接数据库的方法。首先新建一个txt文件,把他命名为aaa.udl然后双击它配置数据库的连接。配置好连接成功后,将该文件放置程序文件夹内。连接数据库时将你的_bstr_t
strConnect
=
"Provider
=
SQLOLEDB.1;Password=111;Persist
Security
Info=True
;User
Id=root;
Initial
Catalog=test;
Data
Source=localhost;";
这一句改为: _bstr_t
strConnect
="File
Name=EPXLDT.udl";然后再连接试试。 如果还不行,把你的邮箱发给我,我给你发个连接数据库的类。挺好用的