#include "Sql_qjh.h"
int Sql_qjh::SQL_basic(information& date) {
cout << "SQL_basic运行" << endl;
char nam[100], nam0[100],nam1[100];
cout << date.judge << endl;
switch (date.judge)
{
case 0: {
strcpy(nam0, "QQ");
strcpy(nam, "select name , QQ_ID , remark from qq_");
strcat(nam, date.name);
strcat(nam, "_friend;");
break;
}
case 10: {
strcpy(nam0, "微信");
strcpy(nam, "select name , WX_ID , remark from wx_");
strcat(nam, date.name);
strcat(nam, "_friend;");
break;
}
case 20: {
strcpy(nam0, "微博");
strcpy(nam, "select name , WB_ID , remark from wb_");
strcat(nam, date.name);
strcat(nam, "_friend;");
break;
}
default:
break;
}
cout << nam << endl;
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)nam, SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
//绑定数据
int num = 0;
SQLBindCol(serverhstmt, 1, SQL_C_CHAR, &lie_1, sizeof(lie_1), &length);
SQLBindCol(serverhstmt, 2, SQL_C_CHAR, &lie_2, sizeof(lie_2), &length);
SQLBindCol(serverhstmt, 3, SQL_C_CHAR, &lie_3, sizeof(lie_3), &length);
//将光标移动到下行,即获得下行数据
while (SQL_NO_DATA != SQLFetch(serverhstmt)) {
strcpy(date.name_friends[num], (char*)lie_1);
strcpy(date.id_friends[num], (char*)lie_2);
strcpy(date.beizhu_friends[num], (char*)lie_3);
num++;
}
return 0;
}
}
int Sql_qjh::SQL_creat(information& date, SOCKET sock)
{
cout << "SQL_creat运行" << endl;
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
char pan_name1[20],pan_name2[20];
switch (pan_W_X)
{
case 1: {
strcpy(pan_name1,"qq");
strcpy(pan_name2, "QQ");
break;
}
case 2: {
strcpy(pan_name1, "wx");
strcpy(pan_name2, "WX");
break;
}
case 3: {
strcpy(pan_name1, "wb");
strcpy(pan_name2, "WB");
break;
}
default:
break;
}
char nanshou[200];
strcpy(nanshou,"select * from ");
strcat(nanshou, pan_name1);
strcat(nanshou, "_information where kind= '");
strcat(nanshou, pan_name2);
strcat(nanshou, "_ID';");
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)nanshou, SQL_NTS);
SQLBindCol(serverhstmt, 1, SQL_C_CHAR, &lie_1, sizeof(lie_1), &length);
SQLBindCol(serverhstmt, 2, SQL_C_CHAR, &lie_2, sizeof(lie_2), &length);
SQLFetch(serverhstmt);
strcpy(date.QQ_ID, (char*)lie_2);
int number = atoi((char*)lie_2);
char num[20];
string a;
number++;
a = to_string(number);
strcpy(num, a.data());
char name00[100];
strcpy(name00, "update qq_information set number = '");
strcat(name00, num);
strcat(name00, "' where kind= 'QQ_ID';");
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)name00, SQL_NTS);
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)"select * from qq_information where kind= 'person_ID';", SQL_NTS);
SQLBindCol(serverhstmt, 1, SQL_C_CHAR, &lie_1, sizeof(lie_1), &length);
SQLBindCol(serverhstmt, 2, SQL_C_CHAR, &lie_2, sizeof(lie_2), &length);
SQLFetch(serverhstmt);
//strcpy(date.ID, (char*)lie_2);
int number0 = atoi((char*)lie_2);
char num0[20];
string a0;
number0++;
a0 = to_string(number0);
strcpy(num0, a0.data());
char name10[100];
strcpy(name10, "update qq_information set number = '");
strcat(name10, num0);
strcat(name10, "' where kind= 'person_ID';");
strcpy(date.ID, a0.data());
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)name10, SQL_NTS);
char name0[300];
date.judge = -1;
strcpy(name0, "insert into all_qq_users(name , QQ_ID , ID , birth_day , place , Join_day , pass_word) values ('");
strcat(name0, date.name);
strcat(name0, "' , '");
strcat(name0, num);
strcat(name0, "' , '");
strcat(name0, num0);
strcat(name0, "' , '");
strcat(name0, date.birth_time);
strcat(name0, "' , '");
strcat(name0, date.birth_place);
strcat(name0, "' , '");
strcat(name0, date.load_time);
strcat(name0, "' , '");
strcat(name0, date.pass_word);
strcat(name0, "');");
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)name0, SQL_NTS);
char nam1[200];
strcpy(nam1, "create table qq_");
strcat(nam1, date.name);
strcat(nam1, "_friend(name char(255) NOT NULL , QQ_ID char(255) NOT NULL , remark char(255) NULL);");
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)nam1, SQL_NTS);
send(sock, (char*)&date, sizeof(date), 0);
return 0;
}
int Sql_qjh::SQL_log_in(information& date, SOCKET sock)
{
cout << "SQL_log_in运行" << endl;
char name[150],name0[20],name1[150];
start:
int ret = recv(sock, (char*)&date, sizeof(date), 0);
pan_W_X = date.w_x;
switch (date.judge)
{
case 0: {
strcpy(name0, "QQ");
strcpy(name, "select name ,QQ_ID , ID , birth_day , place , Join_day , pass_word from all_qq_users where QQ_ID = '");
strcat(name, date.QQ_ID);
strcat(name, "' and pass_word = '");
strcat(name, date.pass_word);
strcat(name, "'");
strcpy(name1, "select log_in from all_users where QQ_ID = '");
strcat(name1, date.QQ_ID);
strcat(name1, "';");
break;
}
case 10: {
strcpy(name0, "微信");
strcpy(name, "select name ,WX_ID , ID , birth_day , place , Join_day , pass_word from all_wx_users where WX_ID = '");
strcat(name, date.WX_ID);
strcat(name, "' and pass_word = '");
strcat(name, date.pass_word);
strcat(name, "'");
strcpy(name1, "select log_in from all_users where QQ_ID = '");
strcat(name1, date.QQ_ID);
strcat(name1, "';");
break;
}
case 20: {
strcpy(name0, "微博");
strcpy(name, "select name ,WB_ID , ID , birth_day , place , Join_day , pass_word from all_wx_users where WB_ID = '");
strcat(name, date.WB_ID);
strcat(name, "' and pass_word = '");
strcat(name, date.pass_word);
strcat(name, "';");
strcpy(name1, "select log_in from all_users where QQ_ID = '");
strcat(name1, date.QQ_ID);
strcat(name1, "';");
break;
}
default: {
if (date.judge % 10 == -1) {
SQL_creat(date, sock);
date.judge = -2;
send(sock, (char*)&date, sizeof(date), 0);
goto start;
}
else if(date.judge % 10 == -2) {
SQL_creat(date, sock);
date.judge = -2;
send(sock, (char*)&date, sizeof(date), 0);
goto start;
}
else if (date.judge % 10 == -3) {
SQL_creat(date, sock);
date.judge = -2;
send(sock, (char*)&date, sizeof(date), 0);
goto start;
}
return 0;
}
break;
}
//cout << name << endl;
//ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)name1, SQL_NTS);
SQLBindCol(serverhstmt, 1, SQL_C_CHAR, &lie_1, sizeof(lie_1), &length);
SQLFetch(serverhstmt);
if (strcmp((char*)lie_1, "1") == 0) {
date.judge = 1001;//表示登录失败
cout << sock << " 号用户尝试再次登录,失败 " << name0 << endl;
send(sock, (char*)&date, sizeof(date), 0);
goto start;
}
ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, &serverhstmt);
ret = SQLExecDirect(serverhstmt, (SQLCHAR*)name, SQL_NTS);
SQLBindCol(serverhstmt, 1, SQL_C_CHAR, &lie_1, sizeof(lie_1), &length);
SQLBindCol(serverhstmt, 2, SQL_C_CHAR, &lie_2, sizeof(lie_2), &length);
SQLBindCol(serverhstmt, 3, SQL_C_CHAR, &lie_3, sizeof(lie_3), &length);
SQLBindCol(serverhstmt, 4, SQL_C_CHAR, &lie_4, sizeof(lie_4), &length);
SQLBindCol(serverhstmt, 5, SQL_C_CHAR, &lie_5, sizeof(lie_5), &length);
SQLBindCol(serverhstmt, 6, SQL_C_CHAR, &lie_6, sizeof(lie_6), &length);
SQLBindCol(serverhstmt, 7, SQL_C_CHAR, &lie_7, sizeof(lie_7), &length);
if (SQL_NO_DATA != SQLFetch(serverhstmt)) {
strcpy(date.name, (char*)lie_1);
strcpy(date.QQ_ID, (char*)lie_2);
st