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中?
数据库我已经连接成功了
展开
 我来答
bhtzu
推荐于2016-03-26 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4216万
展开全部
  1. 如果bname里面有中文,推荐数据库使用NVARCHAR类型,这样即兼容中文,也方便兼容程序的unicode。

  2. 如果是ADO的数据库连接方式,数据库操作中其实都是使用的_variant_t这样的多类型兼容的变量类型,在写入CString的时候,直接写入BookName.GetBuffer()就可以了,这个是TCHAR类型的数据,_variant_t兼容。

  3. 注意在写入前,通过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类型,自己调整一下拼接方式即可。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式