SQL语句在Access里面运行正确,在pDb->ExecuteSQL(strSql)运行不正确,为啥?
SELECT DISTINCT 学号, 姓名 INTO newtable FROM sce2007 WHERE 班级 like '231010* '
在access里面运行正确
但是在应用程序里面,只生成表,无记录.....
如果去掉WHERE 子句则可以.............
CString zhuan= "Table "+zhuanye;
CString slike=zhuanye+ "** ";
CDatabase *pDb=new CDatabase;
pDb-> Open( "Appraisement ");
CString strSql= "SELECT DISTINCT 学号, 姓名 INTO "+zhuan+ " FROM sce2007 WHERE 班级 like '231010* ' ";
pDb-> ExecuteSQL(strSql);
UpdateData(false);
pDb-> Close();
还有我在这里添加try catch 语句老是出错,哪位哥哥能给个demo?谢谢
同时请教:
try
{
CString strSql= "SELECT DISTINCT 学号, 姓名 INTO "+zhuan+ " FROM sce2007 ";
pDb-> ExecuteSQL(strSql);
}
catch(CDBException,e)
{
CString strMsg;
strMsg.LoadString(IDS_EXECUTE_SQL_FAILED);
strMsg+=strSql;
}
pDb-> Close();
输出如下:
------ 已启动生成: 项目: Appraisement, 配置: Debug Win32 ------
正在编译...
sNew.cpp
d:\VC work\Appraisement\sNew.cpp(89) : error C2061: 语法错误 : 标识符“e”
d:\VC work\Appraisement\sNew.cpp(89) : error C2316: “CDBException” : 无法作为析构函数捕获,或者复制构造函数不可访问,或同时出现这两种情况
d:\VC work\Appraisement\sNew.cpp(92) : error C2065: “IDS_EXECUTE_SQL_FAILED” : 未声明的标识符
d:\VC work\Appraisement\sNew.cpp(93) : error C2065: “strSql” : 未声明的标识符
d:\VC work\Appraisement\sNew.cpp(93) : error C2593: “operator +=”不明确
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1082): 可能是“ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(const VARIANT &)”
with
[
BaseType=char,
StringTraits=StrTraitMFC_DLL <char>
]
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1075): 或 “ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(wchar_t)”
with
[
BaseType=char,
StringTraits=StrTraitMFC_DLL <char>
]
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1068): 或 “ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(unsigned char)”
with
[
BaseType=char,
StringTraits=StrTraitMFC_DLL <char>
]
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1061): 或 “ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(char)”
with
[
BaseType=char,
StringTraits=StrTraitMFC_DLL <char>
]
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1054): 或 “ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(ATL::CSimpleStringT <BaseType,t_bMFCDLL> ::PCYSTR)”
with
[
BaseType=char,
StringTraits=StrTraitMFC_DLL <char> ,
t_bMFCDLL=true
]
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1041): 或 “ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(ATL::CSimpleStringT <BaseType,t_bMFCDLL> ::PCXSTR)”
with
[
BaseType=char,
StringTraits=StrTraitMFC
_DLL <char> ,
t_bMFCDLL=true
]
d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\cstringt.h(1027): 或 “ATL::CStringT <BaseType,StringTraits> &ATL::CStringT <BaseType,StringTraits> ::operator +=(const ATL::CStringT <BaseType,StringTraits> ::CThisSimpleString &)”
with
[
BaseType=char,
StringTraits=StrTraitMFC_DLL <char>
]
试图匹配参数列表“(CString, 'unknown-type ')”时
生成日志保存在“file://d:\VC work\Appraisement\Debug\BuildLog.htm”中
Appraisement - 5 错误,0 警告
// sNew.cpp : 实现文件
//
#include "stdafx.h "
#include "Appraisement.h "
#include "sNew.h "
#include ".\snew.h "
#include "afxdb.h "
#include "AppraisementSet.h "
多谢!!
[解决办法]
1,select不到东西,那应该是like的问题,具体的原因就不知道了,我不熟悉access。只知道sql server的like是百分号作为通配符。
2,把try改成:
try
{
}
catch(...)
{
}
如果要精细,可以先catch com错误。
[解决办法]
catch(CDBException,e)//逗号改成空格
{
}
[解决办法]
建议楼主使用CString.Format,字符串那样加很难看的。呵呵