MFC中如何读取编辑框中的字符串,转换为CTime类型,然后插入到Access数据库中的CTime类型? 20

环境为VS2010,Access数据库中有一个CTime类型的字段,在MFC中读取一个编辑框(格式为“YYYY-MM-DD”)中的内容,然后插入到该数据库中,代码如下:/... 环境为VS2010,Access数据库中有一个CTime类型的字段,在MFC中读取一个编辑框(格式为“YYYY-MM-DD”)中的内容,然后插入到该数据库中,代码如下:

//首先将编辑框中的内容转换为CTime类型
CString sql;

int nYear, nMonth, nDay;

sscanf(m_normalDate, "%d-%d-%d", &nYear, &nMonth, nDay);
//m_normalDate为编辑框中的日期,CString类型
CTime time(nYear, nMonth, nDay);

//执行SQL语句
sql.Format(L"insert into 表 values('%①')", time);

m_db.ExecuteSQL(sql);

问题1:编辑框中CString类型转换为CTime类型的方法是否正确?
编译时报错:无法将sscanf函数中第一个参数从“CString”转换为“const char *”
我上网搜过了,试过const char * str = m_normalDate.GetBuffer(sizeof(m_normalDate));,还是不行

问题2:Access中为CTime类型,sql.Format(L"insert into 表 values('%①')", time);这句话中①处应该填入什么?或者有没有其他方式插入到数据库中。

多谢各位大神!
展开
 我来答
匿名用户
推荐于2017-07-01
展开全部
1.Access数据库字段没有CTime类型,CTime是和MFC的日期时间控件对应的类型,Access数据库字段类型和时间相关的是DateTime,其入库insert语句和查询select结果都是字符串类型,也就是说如果你MFC程序界面上没有MFC的日期时间控件,你的程序中没必要出现CTime对象;

如果你的程序界面只有一个编辑框,即一个CString类型m_normalDate,那么char* std:string CString之间的转换遵循如下方式:

CString转char *
CString cstr;
char *p = (LPSTR)(LPCTSTR)cstr;
string 转 CString CString.Format(”%s”, string.c_str());//用string.c_str()要比string.data()好.
//c_str(),返回有”/0“的字符串数组,data(),返回没有”/0“的字符串数组
char 转 CString CString.format(”%s”, char*);
char 转 string string s(char *); //这是初始化,在不是初始化的地先要string.assign().
string 转 char* char *p = string.c_str();
CString 转 string string s(CString.GetBuffer());//GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

那么解决第一个报错:

sscanf((LPSTR)(LPCTSTR)m_normalDate, "%d-%d-%d", &nYear, &nMonth, nDay);
或者
sscanf(m_normalDate.GetBuffer().c_str(), "%d-%d-%d", &nYear, &nMonth, nDay);

2.Access入库语句在DateTime类型时就是一个前后添加‘#’号的字符串,所以%①肯定是%s。

CTime time(nYear, nMonth, nDay);
CString dateTime("#");
dateTime+=time.Format("YYYY-mm-dd"));
dateTime+="#";
sql.Format(L"insert into tbl_Table values(%s)",(LPSTR)(LPCTSTR)dateTime);

insert into tbl_Table values(#2013-04-15 23:01#)"
"select date(field_name) from tbl_Table"
"select time(field_name) from tbl_Table"
"select Format(field_name, "yyyy-mm-dd") from tbl_Table"
"select Format(field_name, "hh:ss") from tbl_Table"
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式