mfc如何远程连接sql数据库

mfc如何远程连接sql数据库,第1张

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,1433DATABASE=mydatabaseUID=namePWD=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,1433Database=carcomUID=saPWD=abc123456","","",adModeUnknown)

初始化引入相关的库+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.0Data 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数据库相关联的主要是两个类:CDatabase类与CRecordeset类。

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

[cpp] view plain copy

m_gl.Open(CRecordset::dynaset)//打开ODBC连接的数据库  

    short nfilecount=m_gl.GetODBCFieldCount()//获取表中的字段数  

    CODBCFieldInfo fieldinfo//用于存储字段信息  

    for(int n=0n<nfilecountn++)  

    {  

        m_gl.GetODBCFieldInfo(n,fieldinfo)//返回某一字段索引的字段信息 m_strName保存的是字段名  

        int nWidth=m_list.GetStringWidth(fieldinfo.m_strName)+15//确定列头的显示长度  

        m_list.InsertColumn(n,fieldinfo.m_strName,LVCFMT_LEFT,nWidth)//在Clistctrl控件中插入列  

    }  

  

  

    CString strvalue  

    m_gl.MoveFirst()  

    int ncount=0  

    while(!m_gl.IsEOF())  

    {  

  

        m_list.InsertItem(ncount,strvalue)  

        //for(short j=0j<nfilecountj++)  

        //{  

        //  m_gl.GetFieldValue(j,strvalue)//获取某个字段的信息  

        //  m_list.SetItemText(ncount,j,strvalue)//在Clistctrl控件中写入数据  

        //}  

        CString m_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] view plain copy

int nIdxingdb=nIdx1+1  

    m_gl.Open (CRecordset::dynaset)//打开数据库  

    m_gl.SetAbsolutePosition(nIdxingdb)//设置数据库的记录位置  

    m_gl.Delete()//删除记录  

    m_gl.Close()

3.增加到记录中一行:

[cpp] view plain copy

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()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9884964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存