【我真的没有很花心要写这么多语言,但是我们老师总是有杂七杂八的项目要交给我们做】之前已经做到了使用DS18B20温度传感器,通过keil u version4把程序烧到板子里,在串口调试助手里面已经看到了串口的温度数据。然后我使用Taltech这个软件,将串口数据转为socket发送到远程电脑上,里面只需要填写 Remote Host IP Address和Remote Port,IP使用20013。只需要填写IP地址和端口号就行了。在服务器端。使用USR_TCP232_Test这个软件来查看数据是否接收到。选择Tcp Server,启动20013端口的监听,这个端口和刚刚TalTech上设置相同,然后看看能否收到数据。这是我所收到的数据。接着就是传到数据库里面去了。#include "ADO.h"
BOOL CMySocketRecvDlg::SaveDataToDB(CString strRecv)
{
CString m_strConnectionString="";
CString strDbType="MySQL";
CString m_strDBUser="ylx",m_strDBPassword="ylx",m_strServerName="ylx";
CAdoConnection* m_pConnection=NULL;
CAdoRecordSet* m_pRecordSet=NULL;
BOOL bOk=FALSE,m_bConnected=FALSE;
if(strDbType =="MySQL")
{
m_strConnectionString="DSN=ADOLinkMySQL;User ID="+ m_strDBUser+";password="+ m_strDBPassword+";Data Source="+m_strServerName+";";
}
try
{
m_pConnection=new CAdoConnection();
if(m_pConnection->Open(m_strConnectionString)){
bOk=TRUE;
m_bConnected=TRUE;
}else{
ShowMsg("打开连接不成功!");
}
//保存数据
CString strDeviceId,strDeviceName,strTemperature,strHumidity;
GetInfoFromReceiveData(strRecv,strDeviceId,strDeviceName,strTemperature,strHumidity);
CString strSql;
strSql="insert into video_record(device_id,device_name,temperature,humidity,register,register_time) values('"+strDeviceId+"','"+strDeviceName+"','"+strTemperature+"','"+strHumidity+"','admin','"+CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")+"')";
ShowMsg(strSql);
m_pConnection->Execute(strSql);
ShowMsg("保存进了数据库");
//然后释放连接
m_pConnection->Close();
delete m_pConnection;
}
catch(...)
{
ShowMsg("打开数据库出错");
bOk=FALSE;
}
return 0;
}做到这里的时候,程序运行的时候显示“打开连接不成功!”然后“保存进了数据库”。然后打开MySQL发现表还是没有新的数据记录。猜测是没有连上数据库,但是程序还是继续运行了所导致的。连不上数据库的可能是没有配置ODBC数据源。明天希望能解决这个问题。【标签里面没有C语言好难过】
添加回答
举报
0/150
提交
取消