⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db_func.cpp

📁 一个简单的公交查询管理系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_infor.Bus_Route),0,bus_infor.Bus_Route,strlen(bus_infor.Bus_Route),&cbBus_Route);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_infor.Bus_Type_Name),0,bus_infor.Bus_Type_Name,strlen(bus_infor.Bus_Type_Name),&cbBus_Type_Name);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_infor.Bus_Remark),0,bus_infor.Bus_Remark,strlen(bus_infor.Bus_Remark),&cbBus_Remark);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,5,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(bus_infor.Bus_Ticket),0,&bus_infor.Bus_Ticket,sizeof(bus_infor.Bus_Ticket),&cbBus_Ticket);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,6,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(bus_number),0,&bus_number,sizeof(bus_number),&cbbus_number);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}

	retcode = SQLBindParameter(g_hstmt,7,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_type_name),0,bus_type_name,strlen(bus_type_name),&cbbus_type_name);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
    //执行查询
	retcode = SQLExecute(g_hstmt);
	if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
		
	}
	
	
    //关闭当前
	retcode = SQLFreeStmt(g_hstmt,SQL_CLOSE);
	if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
	{
		AfxMessageBox("SQLFreeStmt error!");
		return -1;
	} 	
	
	//
	return 0;
}

int DB_BUS_INFOR_Query_IsTrue(SQLHSTMT g_hstmt, int bus_number, char *bus_type_name)
{
	SQLCHAR *SqlStatement;
	//  
	SQLINTEGER cbbus_number    = 0;
	SQLINTEGER cbbus_type_name = SQL_NTS;
    //Sql Statement
	SqlStatement =(unsigned char *) "SELECT bus_type_name FROM bus_infor WHERE bus_number=? AND bus_type_name=?";
	
	//Prepare
	retcode = SQLPrepare(g_hstmt,SqlStatement,SQL_NTS);
	if ((retcode!= SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("prepare error!");
		return -1;
	}
	
	///
	retcode = SQLBindCol(g_hstmt,1,SQL_C_CHAR,bus_type_name,sizeof(bus_type_name),&cbbus_type_name);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindCol error!");
		return -1;
	}
	//绑定插入参数
	retcode = SQLBindParameter(g_hstmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(bus_number),0,&bus_number,sizeof(bus_number),&cbbus_number);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_type_name),0,bus_type_name,strlen(bus_type_name),&cbbus_type_name);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}


	
	//执行查询
	retcode = SQLExecute(g_hstmt);
	if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
		
	}
	//获取数据
    retcode = SQLFetch(g_hstmt);
    if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
	}
	
    //关闭当前
	retcode = SQLFreeStmt(g_hstmt,SQL_CLOSE);
	if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
	{
		AfxMessageBox("SQLFreeStmt error!");
		return -1;
	} 	
	
	//
	return 0;
}


int DB_BUS_INFOR_Delete(SQLHSTMT g_hstmt, int bus_number, char *bus_type_name)
{
	SQLCHAR *SqlStatement;
	//  
	SQLINTEGER cbbus_number    = SQL_NTS;
	SQLINTEGER cbbus_type_name = SQL_NTS;
    //Sql Statement
	SqlStatement =(unsigned char *) "DELETE FROM bus_infor WHERE bus_number=? AND bus_type_name=?";
	
	//Prepare
	retcode = SQLPrepare(g_hstmt,SqlStatement,SQL_NTS);
	if ((retcode!= SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("prepare error!");
		return -1;
	}
	
	//绑定插入参数
	retcode = SQLBindParameter(g_hstmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(bus_number),0,&bus_number,sizeof(bus_number),&cbbus_number);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_type_name),0,bus_type_name,strlen(bus_type_name),&cbbus_type_name);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	//执行查询
	retcode = SQLExecute(g_hstmt);
	if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
		
	}
	
	
    //关闭当前
	retcode = SQLFreeStmt(g_hstmt,SQL_CLOSE);
	if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
	{
		AfxMessageBox("SQLFreeStmt error!");
		return -1;
	} 	
	
	//
	return 0;
}


int DB_BUS_INFOR_Delete_All(SQLHSTMT g_hstmt)
{
	SQLCHAR *SqlStatement;
	//  
    //Sql Statement
	SqlStatement =(unsigned char *) "DELETE FROM bus_infor";
	
	//Prepare
	retcode = SQLPrepare(g_hstmt,SqlStatement,SQL_NTS);
	if ((retcode!= SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("prepare error!");
		return -1;
	}
	
	//执行查询
	retcode = SQLExecute(g_hstmt);
	if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
		
	}
	
	
    //关闭当前
	retcode = SQLFreeStmt(g_hstmt,SQL_CLOSE);
	if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
	{
		AfxMessageBox("SQLFreeStmt error!");
		return -1;
	} 	
	
	//
	return 0;
}

int DB_BUS_INFOR_Insert(SQLHSTMT g_hstmt, BUS_INFOR bus_infor)
{
	SQLCHAR *SqlStatement;
	//    
	SQLINTEGER cbBus_Number = 0;
	SQLINTEGER cbBus_Ticket = 0;
	SQLINTEGER cbBus_Route     = SQL_NTS;
	SQLINTEGER cbBus_Type_Name = SQL_NTS;
	SQLINTEGER cbBus_Remark    = SQL_NTS;
    //Sql Statement
	SqlStatement =(unsigned char *) "INSERT INTO bus_infor (bus_number,bus_route,bus_type_name,bus_remark,bus_ticket) VALUES (?,?,?,?,?)";

	
	//Prepare
	retcode = SQLPrepare(g_hstmt,SqlStatement,SQL_NTS);
	if ((retcode!= SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("prepare error!");
		return -1;
	}
	
	//绑定插入参数
	retcode = SQLBindParameter(g_hstmt,1,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(bus_infor.Bus_Number),0,&bus_infor.Bus_Number,sizeof(bus_infor.Bus_Number),&cbBus_Number);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_infor.Bus_Route),0,bus_infor.Bus_Route,strlen(bus_infor.Bus_Route),&cbBus_Route);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}

	retcode = SQLBindParameter(g_hstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_infor.Bus_Type_Name),0,bus_infor.Bus_Type_Name,strlen(bus_infor.Bus_Type_Name),&cbBus_Type_Name);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}
	
	retcode = SQLBindParameter(g_hstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(bus_infor.Bus_Remark),0,bus_infor.Bus_Remark,strlen(bus_infor.Bus_Remark),&cbBus_Remark);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}

	retcode = SQLBindParameter(g_hstmt,5,SQL_PARAM_INPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(bus_infor.Bus_Ticket),0,&bus_infor.Bus_Ticket,sizeof(bus_infor.Bus_Ticket),&cbBus_Ticket);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindParameter error!");
		return -1;
	}

	//执行查询
	retcode = SQLExecute(g_hstmt);
	if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
		
	}
	
	
    //关闭当前
	retcode = SQLFreeStmt(g_hstmt,SQL_CLOSE);
	if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
	{
		AfxMessageBox("SQLFreeStmt error!");
		return -1;
	} 	
	
	//
	return 0;
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
int DB_SYSTEM_INFOR_Query(SQLHSTMT g_hstmt, char *year, char *month, char *day, char *address)
{
	SQLCHAR *SqlStatement;
	//    
	SQLINTEGER cbyear    = SQL_NTS;
	SQLINTEGER cbmonth   = SQL_NTS;
	SQLINTEGER cbday     = SQL_NTS;
	SQLINTEGER cbaddress = SQL_NTS;

    //Sql Statement
	
	SqlStatement = (unsigned char *) " SELECT year,month,day,address FROM system "; 
	
	//Prepare
	retcode = SQLPrepare(g_hstmt,SqlStatement,SQL_NTS);
	if ((retcode!= SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("prepare error!");
		return -1;
	}
	
	//绑定列参数
	retcode = SQLBindCol(g_hstmt,1,SQL_C_CHAR,year,5,&cbyear);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindCol error!");
		return -1;
	}
	
	retcode = SQLBindCol(g_hstmt,2,SQL_C_CHAR,month,sizeof(month),&cbmonth);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindCol error!");
		return -1;
	}

	retcode = SQLBindCol(g_hstmt,3,SQL_C_CHAR,day,sizeof(day),&cbday);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindCol error!");
		return -1;
	}
	
	retcode = SQLBindCol(g_hstmt,4,SQL_C_CHAR,address,32,&cbaddress);
	if ((retcode!=SQL_SUCCESS) && (retcode!=SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLBindCol error!");
		return -1;
	}

	
	//执行查询
	retcode = SQLExecute(g_hstmt);
	if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		AfxMessageBox("SQLExecute error!");
		return -1;
	}
	
	//获取数据
    retcode = SQLFetch(g_hstmt);
    if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
	{
		//关闭
		retcode = SQLFreeStmt(hstmt,SQL_CLOSE);
		if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
		{
			AfxMessageBox("SQLCloseCursor!");
			return -1;
		} 
		return -1;
	}
	
		
    //关闭当前
	retcode = SQLFreeStmt(g_hstmt,SQL_CLOSE);
	if( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) )
	{
		AfxMessageBox("SQLFreeStmt error!");
		return -1;
	} 	
	//
	return 0;
}

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
/***************************************/
/* 函数名:BusNumAddStation
/* 作用:  将车次号加入到车站中(即设置二进制位1)           
/* 输入:  nBusNumber-车次号,ldOldNumber-原站点信息变量
/* 输出:  
/* 返回值:
/***************************************/
long double BusNumAddStation(int nBusNumber, long double ldOldNumber)   
{
	long double ldNewNumber;
	
	ldNewNumber = ldOldNumber+pow(2, nBusNumber);
    return ldNewNumber;
}

/***************************************/
/* 函数名:LDoubleToStr
/* 作用:  将一实型变量以二进制的形式转化位字符串          
/* 输入:  ldNumber-实型变量
/* 输出:  strTemp-字符串
/* 返回值:0(正常), -1(出错)
/***************************************/
void LDoubleToStr(long double ldNumber, unsigned char strTemp[128])   
{
	int i,nBit;
	long double lgTemp;
	memset(strTemp, '0', 128);  
	for(i=127; i>=0; i--)
	{
		lgTemp = pow(2, i);
		nBit = ldNumber/lgTemp;
		if(nBit == 1)
		{
			strTemp[i] = '1';
			ldNumber = ldNumber-pow(2, i);
		}      
	}
}


/***************************************/
/* 函数名:StrToLDouble
/* 作用:  将字符串转化为实型变量          
/* 输入:  strTemp-字符串
/* 输出:  
/* 返回值:实型变量
/***************************************/
long double StrToLDouble(unsigned char strTemp[128])   
{
	int i;
	long double ldNumber=0.0;
	for(i=0; i<128; i++)
	{
		if(strTemp[i] == '1')
		{
			ldNumber = ldNumber+pow(2, i);
		}      
	}

	return ldNumber;
}
/***************************************/
/* 函数名:LDoubleToStr
/* 作用:  在二进制的形式比较两个实型每位的异同,记录每个相同的位数         
/* 输入:  ldNumberFirst:变量一, ldNumberSecond:变量二
/* 输出:  ldResult:记录每个相同的位数的实型变量 
/* 返回值: 相同的位数的个数
/***************************************/
void CompareLNumber(long double ldNumberFirst, long double ldNumberSecond, long double *ldResult)
{
	int i,num;
	unsigned char strTempFisrt[128],strTempSecond[128];
	
	num = 0;
    *ldResult = 0.0;
	
    LDoubleToStr(ldNumberFirst, strTempFisrt);     // 转化为二进制字符串
    LDoubleToStr(ldNumberSecond, strTempSecond);
	
    for(i=0; i<128; i++)
	{
		if( (strTempFisrt[i] == 1) && (strTempSecond[i] == 1) )
		{
			num++;
            *ldResult = *ldResult+pow(2, i);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -