ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法

有些情况下,SQL SERVER 2008r2中需要保存float,int类型的数据,当C++中的变量为double类型时,先格式化为Cstring格式,再组合成SQL语句。

对应的C++ 插入语句写法如下:

 m_pConnection->Execute(_bstr_t("INSERT INTO Gps(GPSTIME,S1XZWZ,S1X,S1Y,S1HZJD,S1DW,S1FX)\
			VALUES ('"+timegps+"','"+s1_distancestr+"','"+s1xstr+"','"+s1ystr+"','"+s1hzjdstr+"','"+sdw1+"','"+s1fangxiang+"')"),NULL,adCmdText); 


其中表Gps的结构如下:

ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法_第1张图片

其中timegps,s1_distancestr,s1xstr等变量均为CString 类型变量

timegps为格式化后的时间字符串,

s1_distancestr为double类型变量s1_distance格式化后的字符串

如:s1_distancestr.Format("%.2lf",s1_distance);

执行插入后,结果如下图所示:

ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法_第2张图片

可以看到虽然插入时的SQL语句中变量为Cstring类型,但是不影响它在数据库中的存储类型,应该是内部已经帮忙转化过了

当把表Gps的结构除了datetime列以外全部改为varchar(50)类型时,也能全部存储。

另外数据库中float int类型插入的时候,如果变量数据为空,则默认插入0

varchar 默认插入为空

必要的时候可以通过判断这些状态,从而看出数据异常~

你可能感兴趣的:(visual,C++,数据库)