int DatabaseOperation::InsertData 这里的 error = conn->Prepare(pds, (MYSQLCHAR*)SQL_COMMAND_INSERTTRAFFIC, SQL_NTS);
}执行了一个存储过程,这个存储过程决定了插入 vehicle表数据的结果。也就是说你要修改插入vehicleinfo的数据,就要修改inserttrafficdata.sql 这个的存储过程和表结构。
而且并不是一个简简单单的插入操作,这个问题在于,第一次线圈触发的时候包含图片数据,它是有效的,这时候就应该执行这个存储过程,这个存储过程把数据插入到数据库,因为这时候我们捕捉到的车身长度=0xff,所以我们就在数据中预留了这个数据(比如以-1来替代)。同时把这个trafficID放入到一个队列中(注意,仅仅当traffic的长度不是0切车身长度==0xff的时候才能加进来,这个队列的大小应该为20?) 后面汽车离开线圈的时候又触发了操作了这个操作,我们通过判断图片的length=0来确认这一离开操作。当有这种数据的时候,我们就需要取出traffic id然后与队列中的值进行比较,如果比较到位的情况下,我们就执行数据库的插入操作,把车身长度的数据插入到数据库中。
在这种情况下,用户服务器的上传策略显然不可能是实时的,也就要求他们必须选择非实时的获取-----我们把实时数据先插入到uploadqueue当中。之后再整合提取给用户。-----这个时间是多长,会不会存在一种情况,我们的终端服务器还还没来得及把数据写入到 数据库中。线程已经把数据发送到用户服务器那边了,对于这种情况如何是好?---显然是一个很麻烦的问题。。。。。
对于最简单的版本,我们仅仅考虑一个车经过的时候的情况。对于其他情况需要等项目实际动手的时候再进行整合。不然实在有难度。
原来数据库中的 size就是车长。需要把它改成小数----这个也是不需要的,因为我们数据库中可以将车长保存为分米,所以这个值肯定是整数,如果是这种情况下,终端服务器就不需要对数据格式上进行调整。
int DatabaseOperation::UpdateModel( 这个函数后面可能需要使用到