觉得今天有三件事值得写一下,第一件:
使用C API 连接MySQL数据库,我将连接数据库的过程封装到一个自己的函数 mysqlinit(MYSQL* mysql,char* IPAddress,char* UserName,char* Password,unsigned short Port,char* DBName)看起来很烦,不过的确能成功连上,呵呵。然后我就直接定义了一个MySQL* 类型的指针当做实参带进函数,并使用 mysql_real_query函数建表。
编译和连接都通过了,在运行的时候就报内存错误,设断点跟一下,发现数据库能连上,到mysql_real_query函数的时候报了访问冲突的错误(Access violation)。然后就开始想是哪里的问题,调了半天,上网查了一下都没搞出来,没办法了去问师兄,人家看了看说,MySQL*类型的指针作实参,带入函数里面操作,不能将更改的地址带出函数,所以是这个指针出了问题,总共没用五分钟。中午好好看了看书,明白了,当用指针作形参时,只能改变指针指向变量的值,但不能够改变指针的地址。这就是所谓的指针的值传递,想将改变的地址也带出来,要使用指针的传引用mysqlinit(MYSQL* &mysql,char* IPAddress,char* UserName,char* Password,unsigned short Port,char* DBName)
指针啊!
第二件:
还是MySQL数据库,用SQL语句建表,有个字段只能取1-99之间的整数,我查手册里面可以使用check约束,结果试了半天,结果那个字段的值根本就没有限制住,上网查了查,原来MySQL里面的check约束是装样子的,会直接被忽略掉(真是坑爹啊),没办法,最后用触发器实现的。
第三件:
其实是昨天的,写串口通信的时候,上面的明明是用异步模式写的,下面的程序却是用的同步模式,结果运行的时候出现莫名其妙的错误,查了半天才查出来。以后一定要小心啊!