服务器(绑定数据库)和客户端建立连接及传输需要建立的注意点!
1、如果要发送结构体中的数据,那么struct中不能使用char*或者string类,因为char*本质上是指针,而指针是通过操作地址来查找数据的,所以服务器接收到的数据只有4个字节长(因为在32为系统中指针大小为4);而string类,服务器会不知道接收的数据大小为多少,会报错!
2、char*转为string : stringstr;
str ="hello";
char s[10];
strcpy(s,str.c_str());//str.c_str() 是string转换成char*类型
string转为char*: string str;
str.c_str;
3、将读取到的sql_row放到string字符串中,因为string有自动拼接的特性
result = mysql_store_result(&myCont);//获取结果集
sql_row =mysql_fetch_row(result);//获取本行数据
string str;
for (int i = 0; i< 7; i++)
{
str +=sql_row[i];//将读取到的数据全部放入string字符串
}
4、要记得适当对字符串进行清零!否则容易信息读取错误或者直接段错误!
4、服务器和客户端之间收发数据追求效率,如果是发送多次数据,和一次发送一个很长的字符串(字符串当中有分隔符,可以用来在客户端端进行解封,根据分隔符将一个一个的单词送给结构体,在进行集中处理)
怎么加分隔符?while (sql_row =mysql_fetch_row(result));//获取本行数据
{
stringstr;
for(int i = 0; i < 7; i++)
{
str+= sql_row[i];//将读取到的数据全部放入string字符串
str +=” ”;
}
str+= "\n";
}
5、全局变量:一般来讲,除了1、类(eg:Books book)这种需要在很多函数中需要调用的,如果传的不是引用和指针,一般不会修改其值,而如果想要修改其值,则传引用,一旦传了引用,说明自己有意识地要修改,不会发生随意修改,即在自己还没有意识的情况下修改他的值!2、数据库指定变量,不需要修改的,可以直接放在.h文件内,和main文件关联,那么都可引用。而如果只是返回值,只是局部的需要调用,则使用局部变量,即每次需要用的时候都在函数内再次定义,他会自动释放,不存在随意被修改的情况!
总的来说:不能随意的使用全局变量!
6、形参和实参!
7、如果在1.h中定义了结构体Info,然后在对应的1.c文件中定义了Infodata,如果在main.c文件中也定义了Info data,则很有可能会发生重定义!
8、string、const char*、 char* 、char[]四者类型转化。
http://blog.csdn.net/rongrongyaofeiqi/article/details/52442169