mfc中CString转换成SQL中char(17)
我在MFC编辑框中创建值型变量,分别为ISBN1(CString类型),BookName(CString类型),BookPrice(float类型),在SQLServer...
我在MFC编辑框中创建值型变量,分别为ISBN1(CString类型),BookName(CString类型),BookPrice(float类型),
在SQL Server中建立了表book, 属性分别为ISBN(char(17)),Bname(varchar(255)), Bprice(float)。
怎样把MFC中的上述三个变量插入到表book中?
数据库我已经连接成功了 展开
在SQL Server中建立了表book, 属性分别为ISBN(char(17)),Bname(varchar(255)), Bprice(float)。
怎样把MFC中的上述三个变量插入到表book中?
数据库我已经连接成功了 展开
1个回答
展开全部
如果bname里面有中文,推荐数据库使用NVARCHAR类型,这样即兼容中文,也方便兼容程序的unicode。
如果是ADO的数据库连接方式,数据库操作中其实都是使用的_variant_t这样的多类型兼容的变量类型,在写入CString的时候,直接写入BookName.GetBuffer()就可以了,这个是TCHAR类型的数据,_variant_t兼容。
注意在写入前,通过UpdateData更新变量的值,写入后通过BookName.ReleaseBuffer()释放CString缓冲区。
追问
我把Bname改成nvarchar(255)执行以下语句,显示列名无效
m_db.ExecuteSQL
(
_T("INSERT INTO BOOK VALUES")
_T("(ISBN,BookTitle,BookPrice)")
);
是数据类型的问题吗?类型该怎样转换
追答
这是啥语句。。。两个_T是啥关系?没这么弄的吧,字符串必须拼接才行。
CString str = _T("INSERT INTO BOOK VALUES ");
CString fstr;
fstr.Format(_T("(%d,%s,%f)",ISBN,BookTitle,BookPrice);
str += fstr;
AfxMessageBox(str);//看拼接效果
m_db.ExecuteSql(str.GetBuffer());
前提是表Book只有三个字段,如果多字段,需要拼接更合理的sql语句。
示例代码中假设了前面两个变量是int和char *类型,如果都是CString类型,自己调整一下拼接方式即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询