MFC调用SQL语句,在线等啊 试试 SQLExecute Function 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ODBC SQLExecute SQLPrepare 用ADO,ODBC都可以例子ODBC,CDatabase db;db.Open(...);//连接字符串db.ExecuteSQL(上面那些SQL语句);db.close();// 假设你的是Sql server数据库,安装好之后,有用户名口令至少还有一个库,你就连这个库,然后再执行sql语句。 用m_pRecordset->open(strSQL,(IDpatch*)adComText)connection打开 安装好数据库后建立数据源创建的时候用ado什么都可以随便网上搜代码都有。 首先你必须有数据库系统,有数据库系统你就可以用登录用户名和密码连接master数据库,在master数据库上执行这些代码就可以了 推荐使用Xproer.OleDb类库。过去对于开发人员来说在VC中进行数据库开发是一件并不轻松的事情,就算是一个简单的添加或者是删除操作都需要开发人员编写大量的代码。由于VC操作数据库需要使用一些特殊的语法和类型,这些类型没有统一的规范文档和示例,导致开发人员不能深理解。从而使得开发人员编写的代码不能简单高效。随着时间的推移这些代码最终将会变成产品的负担。因为它将影响产品的后续开发工作。现在Xproer.OleDb类库采用全新的设计理念为VC数据库开发带来了革命性的变化。采用Xproer.OleDb类库将使得VC数据库开发工作变得比以往任何时侯都要简单。对于常用的增删改查功能开发人员再也不需要编写大量的代码了,甚至有时侯只需要编写一行代码就能实现删除功能。由于良好的构架设计,开发人员能够根据业务需求来对Xproer.OleDb进行扩展和修改。借助于一些代码生成器,开发人员能够在10秒钟内实现对一张包含30个字段的数据表的所有操作(增,删,改,查)。对于信息管理系统的开发商来讲,这些改进将会成倍的提高公司的开发效率。新的设计为后期的维护工作节省了成本,对于系统后期的维护人员来讲,不再需要理解复杂的数据库操作代码,只需要关心业务逻辑,而且即便是调试代码也将会变得前所未有的轻松。与同类C++库相比,Xproer.OleDb拥有更高的可扩展性,更佳的易用性。Xproer.OleDb不仅使用简单,而且开发文档完善,各种示例丰富。在信息管理系统领域Xproer.OleDb是企业的最佳组件。在Xproer.OleDb的设计之初就充分考虑到了开发人员的需求,特别是在易用性和可扩展性方面做了许多的努力。如果一个组件的易用性非常差,用这个组件写出来的代码非常冗余,而且也难已理解,那么随着时间的推移这些代码将会使得项目越来越难已维护和升级,这相当于为一个商业项目埋下了一颗巨大的定时炸弹~。,如果一个组件的易用性和可扩展性非常差,那么即便是这个组件功能再强大,开发人员也不愿意使用。因为一个难用的类库不仅给开发人员带来额外的负担,而且还使得项目开发成本几何式的增加。无论是VC数据库开发新手,还是一个拥有多年VC数据库开发经验的人都能够在10分钟内掌握Xproer.OleDb类库的使用。Xproer.OleDb类库为开发人员带来的不仅是开发工作效率的提升,更是为解决更复杂的业务需求提供了最佳的解决方案。以下示例演示如何从数据表中删除一条数据#include "stdafx.h"#include "XproerDataDef.h"#include "OleDb/OleDbCommand.h"#include "OleDb/OleDbConnection.h"#include "OleDb/OleDbDataReader.h"#include "OleDb/DataTable.h"#include "OleDb/DataRow.h"#include "OleDb/DataValue.h"using namespace Xproer::OleDb;int _tmain(int argc, _TCHAR* argv[]){ ::CoInitialize(NULL); OleDbConnection con; //设置Access数据库,兼容Access 97,Access 2000,Access 2003,Access 2007,Access 2010 con.SetAccessConStr(L"F:\\vc9\\adoDemo\\Debug\\db.mdb"); con.Open(); OleDbCommand cmd(&con); //设置SQL命令 cmd.SetCommandText(L"delete from xdb_news where id=1"); cmd.ExecuteNonQuery(); con.Close();//关闭数据库连接 ::CoUninitialize(); system("pause"); return 0;}以下示例演示对数据库的多种操作:#include "stdafx.h"#include "XproerDataDef.h"#include "OleDb/OleDbCommand.h"#include "OleDb/OleDbConnection.h"#include "OleDb/OleDbDataReader.h"#include "OleDb/DataTable.h"#include "OleDb/DataRow.h"#include "OleDb/DataValue.h"using namespace Xproer::OleDb;//获取DataTable的示例void ADODataTable(OleDbCommand& cmd){ int count = 0; cmd.ExecuteScalar(L"select count(*) from xdb_news",count); auto_ptr<DataTable> table; table.reset(cmd.ExecuteDataTable(L"select top 10 IsTop from xdb_news")); size_t rowCount = table->GetRowsCount(); for (int i = 0 ; i < rowCount ; ++i) { DataRow* row = table->GetRow(i); DataValue* val = row->GetCel(0); printf("时间:%d \r\n", val->ToBoolean() ); }}//使用OleDbDataReader快速读取数据的示例void ADORead(OleDbCommand& cmd){ OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news"); USES_CONVERSION; wstring title; while(r->Read()) { //r->GetString(0,title); //printf("标题:%s \r\n",W2A(title.c_str())); printf("ID:%f \r\n", r->GetFloat(0) ); } r->Close();}//通过变量向数据库安全添加数据的示例void ADOAdd(OleDbCommand& cmd){ cmd.SetCommandText(L"insert into xdb_about(VDouble) values(@VDouble)"); cmd.AddDoubleParam(L"@VDouble",125022.3180); cmd.ExecuteNonQuery();}//高性能向数据库插入数据的示例void ADOParam(OleDbCommand& cmd){ cmd.SetCommandText(L"delete from xdb_news where ID=@ID;"); cmd.AddInt32Param(L"@ID",886); cmd.SetPrepared(true); _variant_t index = (short)0; _ParameterPtr param = cmd.GetCommand()->Parameters->GetItem(index); param->Value = 887; cmd.ExecuteNonQuery(); param->Value = 888; cmd.ExecuteNonQuery(); param->Value = 889; cmd.ExecuteNonQuery(); param->Value = 890; cmd.ExecuteNonQuery(); param->Value = 891; cmd.ExecuteNonQuery();}//向数据库添加实数的示例void NumericScaleX(OleDbCommand& cmd){ OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news"); _RecordsetPtr& rs = r->GetRecordsetPtr(); rs->MoveFirst(); _variant_t vi = (short)0; FieldPtr fd = rs->Fields->GetItem(vi); unsigned char numeri = fd->GetNumericScale(); unsigned char precision = fd->GetPrecision(); printf("GetNumericScale:%d\r\n", fd->GetNumericScale() ); printf("GetPrecision:%d\r\n", fd->GetPrecision() ); printf("Value:%f\r\n", (float)fd->Value ); r->Close();}int _tmain(int argc, _TCHAR* argv[]){ ::CoInitialize(NULL); OleDbConnection con; con.SetAccessConStr(L"F:\\vc9\\adoDemo\\Debug\\db.mdb"); con.Open(); OleDbCommand cmd(&con); ADORead(cmd); con.Close(); ::CoUninitialize(); //printf("总数:%d",count); system("pause"); return 0;} 我的Combo-box为啥看不到 下拉项 请教关于socket客户端连接失败重试的问题,在线等,谢谢 请教:vc中字符集问题 GetTextExtentPoint32,WideCharToMultiByte一类函数怎样在98下使用的问题? 在C环境下调用DLL 准备系统的学习mms,请大家给一个建议 CStdioFile为什么不能用,要什么头文件啊?? 请教IOCP投递问题,此问题很是奇怪 怎样得到DIALOG上的所有控件的类,ID,CAPTION delphi 中的包的问题,急!急!急! 有谁用过微视的mvavi.dll做视频采集,怎么能不弹出压缩模式对话框 求助 CArray怎么被清空了
例子ODBC,
CDatabase db;
db.Open(...);//连接字符串
db.ExecuteSQL(上面那些SQL语句);
db.close();
//
你就可以用登录用户名和密码连接master数据库,
在master数据库上执行这些代码就可以了
过去对于开发人员来说在VC中进行数据库开发是一件并不轻松的事情,就算是一个简单的添加或者是删除操作都需要开发人员编写大量的代码。由于VC操作数据库需要使用一些特殊的语法和类型,这些类型没有统一的规范文档和示例,导致开发人员不能深理解。从而使得开发人员编写的代码不能简单高效。随着时间的推移这些代码最终将会变成产品的负担。因为它将影响产品的后续开发工作。现在Xproer.OleDb类库采用全新的设计理念为VC数据库开发带来了革命性的变化。采用Xproer.OleDb类库将使得VC数据库开发工作变得比以往任何时侯都要简单。对于常用的增删改查功能开发人员再也不需要编写大量的代码了,甚至有时侯只需要编写一行代码就能实现删除功能。由于良好的构架设计,开发人员能够根据业务需求来对Xproer.OleDb进行扩展和修改。借助于一些代码生成器,开发人员能够在10秒钟内实现对一张包含30个字段的数据表的所有操作(增,删,改,查)。对于信息管理系统的开发商来讲,这些改进将会成倍的提高公司的开发效率。新的设计为后期的维护工作节省了成本,对于系统后期的维护人员来讲,不再需要理解复杂的数据库操作代码,只需要关心业务逻辑,而且即便是调试代码也将会变得前所未有的轻松。与同类C++库相比,Xproer.OleDb拥有更高的可扩展性,更佳的易用性。Xproer.OleDb不仅使用简单,而且开发文档完善,各种示例丰富。在信息管理系统领域Xproer.OleDb是企业的最佳组件。
在Xproer.OleDb的设计之初就充分考虑到了开发人员的需求,特别是在易用性和可扩展性方面做了许多的努力。如果一个组件的易用性非常差,用这个组件写出来的代码非常冗余,而且也难已理解,那么随着时间的推移这些代码将会使得项目越来越难已维护和升级,这相当于为一个商业项目埋下了一颗巨大的定时炸弹~。
,如果一个组件的易用性和可扩展性非常差,那么即便是这个组件功能再强大,开发人员也不愿意使用。因为一个难用的类库不仅给开发人员带来额外的负担,而且还使得项目开发成本几何式的增加。无论是VC数据库开发新手,还是一个拥有多年VC数据库开发经验的人都能够在10分钟内掌握Xproer.OleDb类库的使用。Xproer.OleDb类库为开发人员带来的不仅是开发工作效率的提升,更是为解决更复杂的业务需求提供了最佳的解决方案。以下示例演示如何从数据表中删除一条数据#include "stdafx.h"
#include "XproerDataDef.h"
#include "OleDb/OleDbCommand.h"
#include "OleDb/OleDbConnection.h"
#include "OleDb/OleDbDataReader.h"
#include "OleDb/DataTable.h"
#include "OleDb/DataRow.h"
#include "OleDb/DataValue.h"using namespace Xproer::OleDb;int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
OleDbConnection con;
//设置Access数据库,兼容Access 97,Access 2000,Access 2003,Access 2007,Access 2010
con.SetAccessConStr(L"F:\\vc9\\adoDemo\\Debug\\db.mdb");
con.Open(); OleDbCommand cmd(&con);
//设置SQL命令
cmd.SetCommandText(L"delete from xdb_news where id=1");
cmd.ExecuteNonQuery();
con.Close();//关闭数据库连接 ::CoUninitialize();
system("pause");
return 0;
}
以下示例演示对数据库的多种操作:#include "stdafx.h"
#include "XproerDataDef.h"
#include "OleDb/OleDbCommand.h"
#include "OleDb/OleDbConnection.h"
#include "OleDb/OleDbDataReader.h"
#include "OleDb/DataTable.h"
#include "OleDb/DataRow.h"
#include "OleDb/DataValue.h"using namespace Xproer::OleDb;//获取DataTable的示例
void ADODataTable(OleDbCommand& cmd)
{
int count = 0;
cmd.ExecuteScalar(L"select count(*) from xdb_news",count);
auto_ptr<DataTable> table;
table.reset(cmd.ExecuteDataTable(L"select top 10 IsTop from xdb_news")); size_t rowCount = table->GetRowsCount();
for (int i = 0 ; i < rowCount ; ++i)
{
DataRow* row = table->GetRow(i);
DataValue* val = row->GetCel(0);
printf("时间:%d \r\n", val->ToBoolean() );
}
}//使用OleDbDataReader快速读取数据的示例
void ADORead(OleDbCommand& cmd)
{
OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news");
USES_CONVERSION;
wstring title;
while(r->Read())
{
//r->GetString(0,title);
//printf("标题:%s \r\n",W2A(title.c_str()));
printf("ID:%f \r\n", r->GetFloat(0) );
}
r->Close();
}//通过变量向数据库安全添加数据的示例
void ADOAdd(OleDbCommand& cmd)
{
cmd.SetCommandText(L"insert into xdb_about(VDouble) values(@VDouble)");
cmd.AddDoubleParam(L"@VDouble",125022.3180); cmd.ExecuteNonQuery();
}//高性能向数据库插入数据的示例
void ADOParam(OleDbCommand& cmd)
{
cmd.SetCommandText(L"delete from xdb_news where ID=@ID;");
cmd.AddInt32Param(L"@ID",886);
cmd.SetPrepared(true); _variant_t index = (short)0;
_ParameterPtr param = cmd.GetCommand()->Parameters->GetItem(index);
param->Value = 887;
cmd.ExecuteNonQuery();
param->Value = 888;
cmd.ExecuteNonQuery();
param->Value = 889;
cmd.ExecuteNonQuery();
param->Value = 890;
cmd.ExecuteNonQuery();
param->Value = 891;
cmd.ExecuteNonQuery();
}//向数据库添加实数的示例
void NumericScaleX(OleDbCommand& cmd)
{
OleDbDataReader* r = cmd.ExecuteReader(L"select ProductPrice from xdb_news");
_RecordsetPtr& rs = r->GetRecordsetPtr();
rs->MoveFirst(); _variant_t vi = (short)0;
FieldPtr fd = rs->Fields->GetItem(vi);
unsigned char numeri = fd->GetNumericScale();
unsigned char precision = fd->GetPrecision(); printf("GetNumericScale:%d\r\n", fd->GetNumericScale() );
printf("GetPrecision:%d\r\n", fd->GetPrecision() );
printf("Value:%f\r\n", (float)fd->Value );
r->Close();
}int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
OleDbConnection con;
con.SetAccessConStr(L"F:\\vc9\\adoDemo\\Debug\\db.mdb");
con.Open(); OleDbCommand cmd(&con); ADORead(cmd);
con.Close(); ::CoUninitialize();
//printf("总数:%d",count);
system("pause");
return 0;
}