如何将listcontrol控件中的数据读取到SQL数据库中?
易芒客 2017-11-24 09:52:37 目前我在数据库操作的时候遇到一个问题,我在Listcontrol中打开来自Excel的数据源,但是现在想把listcontrol控件中的数据读取到SQL数据库中(采用ODBC)。一直么没有实现,求大神能够给予指点,谢谢。下面我贴上导入的代码,如何在已完成代码的基础上添加listcontrol控件中的数据读取到SQL数据库部分。(我的数据库:score)
void CMy4Dlg::OnImportexcel()
{
// TODO: Add your control notification handler code here
if(MessageBox("请确保已经将要导入的excel的工作表命名为: 信息统计\n否则,无法导入数据","帮助",MB_ICONEXCLAMATION|MB_OKCANCEL)==IDCANCEL)return;
_TCHAR strFileFilter[] = "Microsoft Excel 97-2003 工作表(*.xls)|*.xls|"
"Microsoft Excel 2007 工作表(*.xlsx)|*.xlsx|";
//"所有文件(*.*)|*.*||";
CFileDialog Dlg(TRUE,NULL ,NULL, OFN_HIDEREADONLY,strFileFilter);
if(Dlg.DoModal()==IDOK)
{
CString strFileName = Dlg.GetFileName(); //获取文件名
CString strFilePath = Dlg.GetPathName(); //获取文件路径
GetDlgItem(IDC_FILEPATH)->SetWindowText(strFilePath); //显示文件路径
// GetDlgItem(IDC_FILENAME)->SetWindowText(strFileName); //显示文件名
//////////////////////////////////////////////////////////////////////////////////
CDatabase database;
CString sSql;
CString sItem1[10000], sItem2[10000],sItem3[10000],sItem4[10000];
CString sDriver;
CString sDsn;
// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox("没有安装Excel驱动!");
return;
}
// 创建进行存取的字符串
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, strFilePath);
int count1=0; //计数,以显示增加成功的记录数目
int count2=0; //计数,以显示增加失败的记录数目
TRY
{
// 打开数据库(既Excel文件)
database.Open(NULL, false, false, sDsn);
CRecordset recset(&database);
// 设置读取的查询语句.
sSql = "SELECT * " //sSql = "SELECT [姓名], [年龄], [大学], [工资] "
"FROM [信息统计$] " ; //此处是关键之处,需要加[$],否则,提示找不到数据引擎
// "ORDER BY [姓名] ";
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
m_list.DeleteAllItems(); //此句用于清除表格的全部记录
int i=0;
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue("姓名", sItem1[i]);
recset.GetFieldValue("年龄", sItem2[i]);
recset.GetFieldValue("大学", sItem3[i]);
recset.GetFieldValue("工资", sItem4[i]);
//显示记取的内容
m_list.InsertItem(0, " "); //**************加入此语才能显示************************
m_list.SetItemText(0,0, sItem1[i]);
m_list.SetItemText(0,1, sItem2[i]);
m_list.SetItemText(0,2, sItem3[i]);
m_list.SetItemText(0,3, sItem4[i]);
count1=count1+1; //记录数+1
// 移到excel的下一行
recset.MoveNext();
i=i+1;
}
// 关闭数据库
database.Close();
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
AfxMessageBox("数据库错误: " + e->m_strError);
}
END_CATCH;
//////////////////////////////////////////////////////////////////////////////////
CString string1;
string1.Format("%d",count1); //将变量组装到字符串中
CString string2;
string2.Format("%d",count2); //将变量组装到字符串中
if(count1!=0&&count2!=0)
MessageBox("共增加记录成功"+string1+"条!!!\n共增加记录失败"+string2+"条!!!","提示",MB_ICONASTERISK);
if(count1==0&&count2!=0)
MessageBox("增加记录失败,记录已经存在或者数据文件格式不对!!!","提示",16);
if(count1!=0&&count2==0)
MessageBox("共增加记录成功"+string1+"条!!!","提示",MB_ICONASTERISK);
}
//以下代码是将listcontrol中的信息写入到数据库中
。。。。。。。。。?????????
}