vs2010 mfc中把图片路径插入access数据库
如果我直接插入一个写好的路径,就象这样strtest.Format(_T("f:/test"));是可以插进去的,可是换成由函数得到的路径就插不进去了,这个路径也是对的,...
如果我直接插入一个写好的路径,就象这样strtest.Format(_T("f:/test"));是可以插进去的,可是换成由函数得到的路径就插不进去了,这个路径也是对的,我把它显示到编辑框里是可以的,也没什么报错,access表没什么反应,改了好多次格式也都不行,我把程序贴在下面,要崩溃了,求指点啊!!
void zhuce::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
// 设置过滤器
TCHAR szFilter[] = _T("Image files(*.bmp)|*.bmp|Image files(*.jpg)|*.jpg|Image files(*.jpeg)|*.jpeg|Image files(*.png)|*.png|Image files(*.pgm)|*.pgm|Image files(*.ppm)|*.ppm|All Files (*.*)|*.*||");
// 构造打开文件对话框
CFileDialog fileDlg(TRUE,_T("*.jpg"), NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT , szFilter, this);
CString strFilePath;
#define NAMEBUF 1024
fileDlg.m_ofn.lpstrFile =new TCHAR[NAMEBUF];
memset(fileDlg.m_ofn.lpstrFile,0,NAMEBUF);
fileDlg.m_ofn.nMaxFile = NAMEBUF;
fileDlg.DoModal();
POSITION pos = fileDlg.GetStartPosition();
CDBAdo* pDataBase3 = &(((CUserLogin1App*)AfxGetApp())->m_dbDemo);
CString strSQL;
CString strtest;
strtest.Format(_T("f:/test"));
strSQL.Format(_T("INSERT INTO [Images]([ImagePath]) values(\"%s\")"),strFilePath);
while(pos)
{
strFilePath=fileDlg.GetNextPathName(pos);
if(pDataBase3->Execute(strSQL))
{ TRACE("写入成功\n");}
else {AfxMessageBox(pDataBase3->GetLastError());}
TRACE("%S",strFilePath);
}
delete [] fileDlg.m_ofn.lpstrFile;
SetDlgItemText(IDC_EDIT3, strFilePath);
UpdateData(FALSE);
} 展开
void zhuce::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
// 设置过滤器
TCHAR szFilter[] = _T("Image files(*.bmp)|*.bmp|Image files(*.jpg)|*.jpg|Image files(*.jpeg)|*.jpeg|Image files(*.png)|*.png|Image files(*.pgm)|*.pgm|Image files(*.ppm)|*.ppm|All Files (*.*)|*.*||");
// 构造打开文件对话框
CFileDialog fileDlg(TRUE,_T("*.jpg"), NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT , szFilter, this);
CString strFilePath;
#define NAMEBUF 1024
fileDlg.m_ofn.lpstrFile =new TCHAR[NAMEBUF];
memset(fileDlg.m_ofn.lpstrFile,0,NAMEBUF);
fileDlg.m_ofn.nMaxFile = NAMEBUF;
fileDlg.DoModal();
POSITION pos = fileDlg.GetStartPosition();
CDBAdo* pDataBase3 = &(((CUserLogin1App*)AfxGetApp())->m_dbDemo);
CString strSQL;
CString strtest;
strtest.Format(_T("f:/test"));
strSQL.Format(_T("INSERT INTO [Images]([ImagePath]) values(\"%s\")"),strFilePath);
while(pos)
{
strFilePath=fileDlg.GetNextPathName(pos);
if(pDataBase3->Execute(strSQL))
{ TRACE("写入成功\n");}
else {AfxMessageBox(pDataBase3->GetLastError());}
TRACE("%S",strFilePath);
}
delete [] fileDlg.m_ofn.lpstrFile;
SetDlgItemText(IDC_EDIT3, strFilePath);
UpdateData(FALSE);
} 展开
2016-05-04
展开全部
sql字符串用单引号
strSQL.Format(_T("INSERT INTO [Images]([ImagePath]) values('%s')"),strFilePath);
而且应该在此行前检查strFilePath是否含有单引号。如果有,则要替换成两个单引号:''(不是一个双引号)
strSQL.Format(_T("INSERT INTO [Images]([ImagePath]) values('%s')"),strFilePath);
而且应该在此行前检查strFilePath是否含有单引号。如果有,则要替换成两个单引号:''(不是一个双引号)
追问
谢谢回答!我照你说的改了还是什么都没插进去,不过那个我已经用别的方法代替了,关于sql语句,我还想问一个问题,我想查找和m_findlabel相等的Label,是int类型的,像我下面那么写,运行会出现内存错误,改成Label=1,就可以实现了。
SqlString.Format(_T("select * from UserInfo where Label=%d",m_findlabel));
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询