源代码调用OB问题

rayrix 2009-05-20 02:09:11
#define _SASQL_C_

#include "version.h"

#ifdef _SASQL//新添加

#include "main.h"
#include "sasql.h"

#include <mysql/mysql.h>

MYSQL mysql;
MYSQL_RES *mysql_result;
MYSQL_ROW mysql_row;

typedef struct tagConfig
{
char sql_IP[16];
int sql_Port;
char sql_ID[16];
char sql_PS[16];
char sql_DataBase[16];
char sql_Table[16];
char sql_LOCK[16];
char sql_NAME[16];
char sql_PASS[16];
}Config;

Config config;
int AutoReg;

BOOL sasql_init( void )
{
printf("\n数据库地址: %s",getsql_IP());
printf("\n数据库端口: %d",getsql_Port());
printf("\n数据库用户: %s",getsql_ID());
printf("\n数据库密码: %s",getsql_PS());
printf("\n登陆数据库名:%s",getsql_DataBase());
printf("\n用户信息表名: %s",getsql_Table());
printf("\n用户锁定表名: %s",getsql_LOCK());
printf("\n账号字段名称: %s",getsql_NAME());
printf("\n密码字段名称: %s",getsql_PASS());

if( !mysql_real_connect( &mysql,
getsql_IP(),
getsql_ID(),//帐号
getsql_PS(),//密码
getsql_DataBase(),//选择的资料库
getsql_Port(),
NULL,
0 ) )
{
printf("\n数据库连接失败!\n");
return FALSE;
}

printf("\n数据库连接成功\!\n");
return TRUE;
}


void sasql_close( void )
{
mysql_close( &mysql );
}


int sasql_query(char *nm, char *pas){
char sqlstr[256];
sprintf(sqlstr,"select * from %s where %s=BINARY'%s'",config.sql_Table,config.sql_NAME,nm);

if(!mysql_query(&mysql,sqlstr)){
int num_row=0;
mysql_result=mysql_store_result(&mysql);
num_row=mysql_num_rows(mysql_result);
mysql_free_result(mysql_result);
if(num_row>0){
mysql_row=mysql_fetch_row(mysql_result);
if(strcmp(pas,mysql_row[1]) == 0){
return 1;
}else{
printf("用户%s密码错误!\n",nm);
return 2;
}
}else{
printf("用户%s未注册!\n",nm);
return 3;
}
}else{
printf("\n数据库查找失败!\n");
printf("重新连接数据库...");
sasql_close();
sasql_init();
printf("完成\n");
return 0;
}
}

#ifdef _SQL_REGISTER
BOOL sasql_register(char *id, char *ps)
{
char sqlstr[256];
// if(AutoReg!=1)return FALSE;
sprintf(sqlstr,"INSERT INTO %s (%s,%s,RegTime,Path) VALUES (BINARY'%s','%s',NOW(),'char/0x%x')",config.sql_Table, config.sql_NAME, config.sql_PASS, id, ps, getHash(id) & 0xff);
if(!mysql_query(&mysql,sqlstr)){
printf("\n新用户注册成功!\n");
return TRUE;
}
printf("\n新用户注册失败!\n");
return FALSE;
}
#endif


BOOL sasql_chehk_lock( char *idip )
{
char sqlstr[256];
sprintf(sqlstr,"select * from %s where %s=BINARY'%s'", config.sql_LOCK, config.sql_NAME, idip);
if(!mysql_query(&mysql,sqlstr)){
return TRUE;
}
return FALSE;
}

BOOL sasql_add_lock( char *idip )
{
char sqlstr[256];
sprintf(sqlstr,"INSERT INTO %s (%s) VALUES (BINARY'%s')", config.sql_LOCK, config.sql_NAME, idip);
if(!mysql_query(&mysql,sqlstr)){
printf("\n添加锁定%s成功!\n",idip);
return TRUE;
}
return FALSE;
}

BOOL sasql_del_lock( char *idip )
{
char sqlstr[256];
sprintf(sqlstr,"delete from config.SQL_LOCK where %s=BINARY'%s'", config.sql_LOCK, config.sql_NAME, idip);
if(!mysql_query(&mysql,sqlstr)){
printf("\n解除锁定%s成功!\n",idip);
return TRUE;
}
return FALSE;
}

BOOL sasql_craete_lock( void )
{

}

BOOL sasql_craete_userinfo( void )
{

}

#endif







不懂啊。 想调用OB数据源。 不用MYSQL。 可以帮忙改改么??
...全文
38 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-05-21
  • 打赏
  • 举报
回复
帮顶了!!!
* * MODBUS协议 * * * 介绍: * 此modbus上位机 协议类 具有较强的通用性 * 本协议类最主要的思想是 把所有向下位机发送的指令 先存放在缓冲区中(命名为管道) * 再将管道中的指令逐个发送出去。 * 管道遵守FIFO的模式。管道中所存放指令的个数 在全局变量中定义。 * 管道内主要分为两部分:1,定时循环发送指令。2,一次性发送指令。 * 定时循环发送指令:周期性间隔时间发送指令,一般针对“输入寄存器”或“输入线圈”等实时更新的变量。 * 这两部分的长度由用户所添加指令个数决定(所以自由性强)。 * 指令的最大发送次数,及管道中最大存放指令的个数在常量定义中 可进行设定。 * * 使用说明: * 1,首先对所定义的寄存器或线圈进行分组定义,并定义首地址。 * 2,在MBDataTable数组中添加寄存器或线圈所对应的地址。 注意 寄存器:ob = new UInt16()。线圈:ob = new byte()。 * 3,对所定义的地址 用属性进行定义 以方便在类外进行访问及了解所对应地址的含义。 * 4,GetAddressValueLength函数中 对使用说明的"第一步"分组 的元素个数进行指定。 * 5,在主程序中调用MBConfig进行协议初始化(初始化内容参考函数)。 * 6,在串口中断函数中调用MBDataReceive()。 * 7,定时器调用MBRefresh()。(10ms以下) * 指令发送间隔时间等于实时器乘以10。 例:定时器5ms调用一次 指令发送间隔为50ms。 * 8,在主程序初始化中添加固定实时发送的指令操作 用MBAddRepeatCmd函数。 * 9,在主程序运行过程中 根据需要添加 单个的指令操作(非固定重复发送的指令)用MBAddCmd函数。

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧