/**********************************************************************
* Copyright Copyright (C) 2008 Newcon All Rights Reserved
* System Name Panasonic
* Source Name Mysqlport.cpp
* Version Date Editor Modification
* 1.0 2008/04/17 顾文良 新建
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <mysql/mysql.h>
#include "Mysqlport.h"
CSqlPort::CSqlPort()
{
m_mysql = NULL;
}
CSqlPort::~CSqlPort()
{
}
//******************************************************************************
// Function Name
// OpenSQL()
// Function Desc
// 连接数据库
// Return Value
// int
// = 0 连接成功
// = 1 连接失败
// Parameter
// 无
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
int CSqlPort::OpenSQL()
{
m_mysql = mysql_init(NULL);
if(mysql_real_connect(m_mysql, host, user, pass, db, 3306, NULL, 0))
{
printf("connect ok!\n");
return 0;
}
else
{
// fprintf(stderr, "Failed to connect to database: Error: %s\n",mysql_error(&mysql));
printf("ERROR\n");
return 1;
}
}
//******************************************************************************
// Function Name
// CloseSQL()
// Function Desc
// 关闭数据库
// Return Value
// 无
// Parameter
// 无
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
void CSqlPort::CloseSQL()
{
mysql_close(m_mysql);
}
//******************************************************************************
// Function Name
// SqlCmd()
// Function Desc
// 插入、更新、删除操作
// Return Value
// int
// =-1 连接数据库不成功
// = 0 操作成功
// 非0 操作失败
// Parameter
// [in]char *cmds SQL语句
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
int CSqlPort::SqlCmd(char *cmds)
{
if(m_mysql == NULL)
{
printf("Connect ERROR!\n");
return -1;
}
int que;
que = mysql_query(m_mysql,cmds);
if(que != 0)
{
printf("USE SQL failed!\n");
return que;
}
else
{
printf("USE SQL Success\n");
return que;
}
}
//******************************************************************************
// Function Name
// SqlQuery()
// Function Desc
// 查询操作
// Return Value
// 指向result的指针 操作成功
// NULL 连接失败、操作失败或没有需要查询的结果
// Parameter
// [in]char *cmds SQL语句
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
MYSQL_RES * CSqlPort::SqlQuery(char *cmds)
{
MYSQL_RES *result;
if(m_mysql == NULL)
{
printf("Connect ERROR!\n");
return NULL;
}
if(mysql_query(m_mysql,cmds) != 0)
{
printf("USE SQL failed!\n");
return NULL;
// return mysql_errno(m_mysql);
}
result = mysql_store_result(m_mysql);
if(result == NULL)
{
printf("NULL !\n");
return NULL;
// return mysql_errno(m_mysql);
}
else
{
printf("Success !\n");
return result;
}
}
//******************************************************************************
// Function Name
// Begin()
// Function Desc
// 开始事务
// Return Value
// int
// =-1 连接数据库失败
// = 0 开启事务成功
// 非0 开启事务失败
// Parameter
// 无
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
int CSqlPort::Begin()
{
int flg;
if(m_mysql == NULL)
{
printf("Connect ERROR!\n");
return -1;
}
flg = mysql_query(m_mysql, "BEGIN");//或者使用"START TRANSACTION"
if(flg == 0)
{
printf("BEGIN Success\n");
return flg;
}
else
{
printf("BEGIN Error!\n");
return flg;
}
}
//******************************************************************************
// Function Name
// RollBack()
// Function Desc
// 回滚事务
// Return Value
// int
// =-1 连接数据库失败
// = 0 回滚事务成功
// 非0 回滚事务失败
// Parameter
// 无
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
int CSqlPort::RollBack()
{
if(m_mysql == NULL)
{
printf("Connect ERROR!\n");
return -1;
}
int flg;
flg = mysql_query(m_mysql, "ROLLBACK");
if(flg == 0)
{
printf("ROLLBACK Success\n");
return flg;
}
else
{
printf("ROLLBACK Error!\n");
return flg;
}
}
//******************************************************************************
// Function Name
// Commit()
// Function Desc
// 提交事务
// Return Value
// int
// =-1 连接数据库失败
// = 0 提交事务成功
// 非0 提交事务失败
// Parameter
// 无
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
int CSqlPort::Commit()
{
if(m_mysql == NULL)
{
printf("Connect ERROR!\n");
return -1;
}
int flg;
flg = mysql_query(m_mysql, "COMMIT");
if(flg == 0)
{
printf("COMMIT Success\n");
return flg;
}
else
{
printf("COMMIT Error!\n");
return flg;
}
}
//******************************************************************************
// Function Name
// Transcation()
// Function Desc
// 完整的一个事务过程
// Return Value
// int
// =-1 连接数据库失败
// = 0 提交事务成功
// = 1 操作失败
// Parameter
// [in]char *cmds SQL语句
//
// Version Date Editor Modification
// 1.0 2008/04/17 顾文良 新建
//******************************************************************************
int CSqlPort::Transcation(char *cmds)
{
//事务处理
int Flag = 0;
if (mysql_query(m_mysql,"BEGIN "))//或者使用"START TRANSACTION"
{
printf( "error: BEGIN \n");
Flag = 1;
return(1);
}
// mysql_query(m_mysql, "set @@autocommit = 0");
//执行SQL语句
if(Flag == 0)
{
if(mysql_query(m_mysql, cmds))
{
printf( "ERROR: %S\n ",cmds);
Flag = 1;
// 出错数据回滚
mysql_query(m_mysql, "ROLLBACK ");
return(1);
}
}
// 正确就commit提交数据
if(Flag == 0)
{
if(mysql_query(m_mysql, "COMMIT "))
{
printf( "error: COMMIT \n");
return(1);
}
}
}