VS2010+SQL Server2008 R2 学习中遇到的问题

1.SQL Server 2008 R2 安装教程

链接

2.  SQL Server 2008 R2登录时出现错误:provider命名管道提供程序,error40,无法连接SQL Server,错误2.

解决方法:链接

3.  VS 连接SQL Server 2008 R2 测试

链接

//

4. SQL Server 2008 建立表格

建立表的名称为 Emp

三列  Id Name Memo

 

 

 

5.  VS 连接SQL Server 2008 R2 测试 (ADO类)

获取SQL Server 2008的字符串地址了,在这补上:在桌面新建txt文件,更改后缀为.udl的文件,文件名随便,然后双击打开会跳转到“数据链接属性”在上面填好你的服务器名、用户名称和密码,并选择你要连接的数据库 

       

ADO类文件下载:链接

对话框头文件中:

ADOConn m_adoConn;//ADOConn对象
_RecordsetPtr m_recordset;

初始化 OnInitDialog()中,添加

m_adoConn.OnInitDBConnect();//ADOConn对象初始化

6. VS2010中 MFC  SQL Server 2008 R2 

(a)查询数据

添加 list control 控件,右键-> 类向导->成员变量->对控件添加变量

         

 在初始化 OnInitDialog() 中,先对表头初始化

m_listData.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_FLATSB );//设置风格
m_listData.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 100);//创建列
m_listData.InsertColumn(1,_T("Name"),LVCFMT_LEFT,100);
m_listData.InsertColumn(2,_T("Memo"),LVCFMT_LEFT,100);

查询按钮代码

	//设置表头信息
	CHeaderCtrl *pHead = m_listData.GetHeaderCtrl();   
	if(pHead && pHead->GetSafeHwnd() )
	{
		TCHAR szBuf[129] = {0};    
		HDITEM hdItem ={0};    
		hdItem.mask = HDI_TEXT; //取字符掩码     
		hdItem.pszText = szBuf; //字符缓冲区     
		hdItem.cchTextMax = 128; //缓冲区大小     
		//pHead->GetItem(i, &hdItem); //读取信息     
		hdItem.pszText = _T("Name"); //设置新字符     
		pHead->SetItem(1, &hdItem); //设置题头   
		hdItem.pszText = _T("Memo"); 
		pHead->SetItem(2, &hdItem); 
	}
	int n =m_listData.GetHeaderCtrl()->GetItemCount();   
	// TODO: 在此添加控件通知处理程序代码
	m_listData.DeleteAllItems();
	m_adoConn.OnInitDBConnect();//ADOConn对象初始化
	int k=0;
	int count=0;
	sqlstr.Format(_T("select * from Emp"));
	//获取记录集
	m_recordset=m_adoConn.GetRecordSet ((_bstr_t)sqlstr);
	while(!m_recordset->adoEOF )//遍历记录集
	{
		count++;  //,,,,,,,
		//读取各字段值
        int i = m_listData.GetItemCount(); //List control 控件确保是正序插入
		m_1=m_recordset->GetCollect(_T("Id"));
		m_2=m_recordset->GetCollect(_T("Name"));
		m_3=m_recordset->GetCollect(_T("Memo"));

		//转换为CString类型
		CString str1=(LPCTSTR)(_bstr_t)m_1;
		CString str2=(LPCTSTR)(_bstr_t)m_2;
		CString str3=(LPCTSTR)(_bstr_t)m_3;


		//添加到列表框相关字段
		m_listData.InsertItem(i,str1);
		m_listData.SetItemText(i,1,str2);  
		m_listData.SetItemText(i,2,str3);

		m_recordset->MoveNext();
		k++;
	}
	m_adoConn.m_pRecordset->Close();
	if(count>0)
	{
		//CString str;
		//str.Format (_T("找到'%d'条记录!"),count);
		//MessageBox(str);//提示对话框
	}
	else
	{
		MessageBox(_T("没有找到相关记录!"));
	}

(b)增加数据

	CString sql;
	sql.Format(_T("select* from Emp"));//Emp 数据表的名称
	m_recordset=m_adoConn.GetRecordSet((_bstr_t)sql);
	UpdateData(TRUE);
	try{
	
	m_recordset->AddNew();

	m_recordset->PutCollect("Id",_bstr_t(m_Id));
	m_recordset->PutCollect("Name",_bstr_t(m_Name));
	m_recordset->PutCollect("Memo",_bstr_t(m_Memo));
	m_recordset->Update();
	m_adoConn.ExitConnect();//断开与数据库的连接

	MessageBox(_T("插入成功!"));
	}
	catch(_com_error e)
	{
		CString str;
		str.Format(_T("数据库插入失败的原因:%s"),e.ErrorMessage());
		MessageBox(str);
	}

(c)删除数据

	//删除
	CString sql;
	sql.Format(_T("select* from Emp"));//Emp 数据表的名称
	m_recordset=m_adoConn.GetRecordSet((_bstr_t)sql);
	UpdateData(TRUE);
	POSITION pos;
	pos = m_listData.GetFirstSelectedItemPosition();
	int Index = m_listData.GetNextSelectedItem(pos);
	m_listData.DeleteItem(Index);
	try{
		m_recordset->Move((long)pos,vtMissing);
		m_recordset->Delete(adAffectCurrent);
		m_recordset->Update();
		m_adoConn.ExitConnect();
	}
	catch(_com_error e)
	{
		CString str;
		str.Format(_T("数据库删除失败的原因:%s"),e.ErrorMessage());
		MessageBox(str);
	}

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值