mfcsql数据库
教你个连接数据库的方法。首先新建一个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";然后再连接试试。
如果还不行,把你的邮箱发给我,我给你发个连接数据库的类。挺好用的
‘贰’ MFC中如何判断sql数据库中的是否存在表A
法(一):
select * From master.dbo.sysdatabases where name='数据库名'
法(二纤弯):
if db_id('数据库名') is not null
drop database 。。。
go
create 。。。
SQL Server中判断表对毁梁闷象是否渣扰存在:
select count(*) from sysobjects where id = object_id('数据库名.Owner.表名')
‘叁’ 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如何将编辑框内容插入sql数据库,编辑框成员m_name,数据库名link,表Table,列name,CDatabase db
1、先连接数据库,并打答好凳开数据库
2、将m_name编辑框内的内容清旅如果是字符串的话,直接插入如果不是,要转换袜孙成字符串:
3、然后些SQl语句:insert into Table (name)values(m_name);
4、执行SQL语句,并更新数据库即可。
大概过程是这样的,具体的语句你应该可以写出来的
‘伍’ [转载]MFC 如何连接数据库(c++ 连接sql server )老
1.首先,你的机器上要保证有sql server,并能正确进入并创建数据库,表等。2.建议把那个SA的密码自己重新设定一下,设定方法:打开sql server 2005 SQL Server Management Studio,进去后在那个安全性--登录名--右键点击SA属性,设置密码,状态里面改成,授予 启用。3.将ADO代码库引入到工程中,需要在stdafx.h或TEST.h(这个MFC项目的头文件)中添加如下代码,注意不同的操作系统在安装时这个路径可能不一样,所以必须先在系统中找到msado15.dll文件的路径:加入代码:#import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF","adoEOF")?(通过以上代码就可以将ADO代码库引入到当前工程中)?4.在TEST工程中的TEST.h中加入如下代码:(蓝色为所加入的) class CSQL_TESTApp : public CWinApp{public:?_ConnectionPtr m_pAppConn;?//连接对象指针
CString m_AppConnString;?//连接字符串的声明
bool m_bConnected; //连接标志 public:
CSQL_TESTApp();// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSQL_TESTApp)public:virtual BOOL InitInstance();
。。。。};?5.在TEST工程的TEST.CPP文件中加入如下代码:(蓝色为所加入的)BOOL CSQL_TESTApp::InitInstance(){AfxEnableControlContainer();?HRESULT hRes;try{hRes=m_pAppConn.CreateInstance(_T("ADODB.Connection"));
m_pAppConn->Open(_bstr_t((LPCTSTR) m_AppConnString) , _T("") , _T("") , adModeUnknown);
if(SUCCEEDED(hRes)){m_bConnected = TRUE; //连接成功设置标志位}}catch(_com_error e){CString errormessage;
errormessage.FormatMessage(_T("连接数据库失败 %s"),e.ErrorMessage());
AfxMessageBox(errormessage); //显示错误信息
return FALSE;?}
‘陆’ 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查询数据库时无结果
strSQL.Format("SELECT * from BookInfo where %s = '%s'",name,temp); // BID 不需要 ' ' 进行包含
‘捌’ 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;
}
‘玖’ SQL数据库与MFC
:("insert into tab_data(gps_jd) values('"+str_gps_jd+"')");
‘拾’ mfc如何远程连接sql数据库
1. 配置SQL Server外围应用服务器,开启SQL Server 2005远程连接功能:
“配置工具”->“SQL Server外围应用配置器”-> 选择“服务和连接的外围应用配置器”->选择Database Engine节点下的 “远程连接”-> 选择“本地连接和远程连接”-> 选择“同时使用TCP/IP和named pipes”-> 点击确定,重新启动
数据库
服务。
2. 把登陆设置改为SQL Server 和 Windows 身份验证模式:
打开SQL Server Management Studio管理器,点击服务器上面右键然后查看属性,在安全性选项里面对服务身份验证选择“SQL Server 和 Windows 身份验证模式”。
3.修改SQL Server sa的密码:
在SQL Server Management Studio管理器中,展开服务器上的“安全性”->登陆名->在sa帐号上点右键属性,这样在“常规”的选择页中更改sa登陆帐号的密码。注意SQL Server2005中,不允许密码设置简单,否则会通不过。然后在选择页的“状态”的登录修改为启用。
4.设置SQL Server 的端口号
在SQL Server Configuration Manager管理器中,展开SQL Server 2005 Network Configuration项目 -> 单击下面的 Protocols for 'dbname' -> 在右侧的窗口中,右键单击"TCP/IP"项,选择"属性" -> 打开"TCP/IP properties"窗口 - > 单击"IP Address"选项卡 -> 将所有IP地址下面的 "TCP Port" 值设置成1433
5.确保开启SQL Server服务
在SQL Server Configuration Manager管理器中, 选中SQL Server 2005 Services,在右侧的窗口中启动SQL Server ('YourInstance'),
6. 修改连接字符串,在字符串中加入SQl Server 服务的端口号.
strConnection.Format("driver={SQL Server};Server=xx.xx.xx.xx,1433;DATABASE=mydatabase;UID=name;PWD=pwd");
7.连接coder:
stdafx.h中引用:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
8. 连接SQL SERVER服务器,并连接数据库
if(!AfxOleInit()) //这就是初始化COM库
{
AfxMessageBox("数据库初始化出错!");
}
_ConnectionPtr pCn("ADODB.Connection");
pCn->Open((_bstr_t)"Driver=
{SQL Server};Server=127.0.0.1,1433;Database=carcom;UID=sa;PWD=abc123456","","",adModeUnknown);