コード例 #1
0
ファイル: FmncAMToolChar.cpp プロジェクト: epsitech/fabmaniac
void MyTblFmncAMToolChar::updateRec(
			FmncAMToolChar* rec
		) {
	unsigned long l[5]; my_bool n[5]; my_bool e[5];

	l[1] = rec->x1OsrefFmncKToolchar.length();
	l[2] = rec->Val.length();
	l[3] = rec->Comment.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->refFmncMTool,&(l[0]),&(n[0]),&(e[0])), 
		bindCstring((char*) (rec->x1OsrefFmncKToolchar.c_str()),&(l[1]),&(n[1]),&(e[1])), 
		bindCstring((char*) (rec->Val.c_str()),&(l[2]),&(n[2]),&(e[2])), 
		bindCstring((char*) (rec->Comment.c_str()),&(l[3]),&(n[3]),&(e[3])), 
		bindUbigint(&rec->ref,&(l[4]),&(n[4]),&(e[4]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblFmncAMToolChar / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblFmncAMToolChar / stmtUpdateRec)\n");
};
コード例 #2
0
static void execute_prepare_query(const char *query, ulonglong exp_count)
{
 MYSQL_STMT *stmt;
 ulonglong  affected_rows;
 int        rc;

 stmt= mysql_simple_prepare(mysql, query);
 check_stmt(stmt);

 rc= mysql_stmt_execute(stmt);
 myquery(rc);

 affected_rows= mysql_stmt_affected_rows(stmt);
 if (!opt_silent)
 fprintf(stdout, "\n total affected rows: `%ld` (expected: `%ld`)",
 (long) affected_rows, (long) exp_count);

 DIE_UNLESS(affected_rows == exp_count);
 mysql_stmt_close(stmt);
}
コード例 #3
0
ファイル: PlnrRMFaceMVertex.cpp プロジェクト: epsitech/planar
void MyTblPlnrRMFaceMVertex::insertRec(
			PlnrRMFaceMVertex* rec
		) {
	unsigned long l[6]; my_bool n[6]; my_bool e[6];

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->fceRefPlnrMFace,&(l[0]),&(n[0]),&(e[0])),
		bindUint(&rec->fceNum,&(l[1]),&(n[1]),&(e[1])),
		bindUbigint(&rec->refPlnrMVertex,&(l[2]),&(n[2]),&(e[2])),
		bindUint(&rec->rteIxVTbl,&(l[3]),&(n[3]),&(e[3])),
		bindUbigint(&rec->rteUref,&(l[4]),&(n[4]),&(e[4])),
		bindUint(&rec->ixVDir,&(l[5]),&(n[5]),&(e[5]))
	};

	if (mysql_stmt_bind_param(stmtInsertRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrRMFaceMVertex / stmtInsertRec)\n");
// IP myInsertRec.execNounq --- BEGIN
	if (mysql_stmt_execute(stmtInsertRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrRMFaceMVertex / stmtInsertRec)\n");
	rec->ref = mysql_stmt_insert_id(stmtInsertRec);
// IP myInsertRec.execNounq --- END
};
コード例 #4
0
void MyTblFmncHistRMUserUniversal::updateRec(
			FmncHistRMUserUniversal* rec
		) {
	unsigned long l[9]; my_bool n[9]; my_bool e[9];

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->refFmncMUser,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->unvIxFmncVMaintable,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->unvUref,&(l[2]),&(n[2]),&(e[2])), 
		bindUint(&rec->ixFmncVCard,&(l[3]),&(n[3]),&(e[3])), 
		bindUint(&rec->ixFmncVPreset,&(l[4]),&(n[4]),&(e[4])), 
		bindUint(&rec->preIxFmncVMaintable,&(l[5]),&(n[5]),&(e[5])), 
		bindUbigint(&rec->preUref,&(l[6]),&(n[6]),&(e[6])), 
		bindUint(&rec->start,&(l[7]),&(n[7]),&(e[7])), 
		bindUbigint(&rec->ref,&(l[8]),&(n[8]),&(e[8]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblFmncHistRMUserUniversal / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblFmncHistRMUserUniversal / stmtUpdateRec)\n");
};
コード例 #5
0
ファイル: FmncQFusMNTool.cpp プロジェクト: epsitech/fabmaniac
void MyTblFmncQFusMNTool::updateRec(
			FmncQFusMNTool* rec
		) {
	unsigned long l[7]; my_bool n[7]; my_bool e[7];

	l[5] = rec->srefKLvl.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->mref,&(l[2]),&(n[2]),&(e[2])), 
		bindUbigint(&rec->ref,&(l[3]),&(n[3]),&(e[3])), 
		bindUbigint(&rec->trnRefFmncMPerson,&(l[4]),&(n[4]),&(e[4])), 
		bindCstring((char*) (rec->srefKLvl.c_str()),&(l[5]),&(n[5]),&(e[5])), 
		bindUbigint(&rec->qref,&(l[6]),&(n[6]),&(e[6]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblFmncQFusMNTool / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblFmncQFusMNTool / stmtUpdateRec)\n");
};
コード例 #6
0
ファイル: view.c プロジェクト: hp-sam/mariadb-connector-c
static int test_left_join_view(MYSQL *mysql)
{
  MYSQL_STMT *stmt;
  int rc, i;
  const char *query=
    "select t1.a, v1.x from t1 left join v1 on (t1.a= v1.x);";

  rc = mysql_query(mysql, "DROP TABLE IF EXISTS t1,v1");
  check_mysql_rc(rc, mysql);

  rc = mysql_query(mysql, "DROP VIEW IF EXISTS v1,t1");
  check_mysql_rc(rc, mysql);
  rc= mysql_query(mysql,"CREATE TABLE t1 (a int)");
  check_mysql_rc(rc, mysql);
  rc= mysql_query(mysql,"insert into t1 values (1), (2), (3)");
  check_mysql_rc(rc, mysql);
  rc= mysql_query(mysql,"create view v1 (x) as select a from t1 where a > 1");
  check_mysql_rc(rc, mysql);
  stmt= mysql_stmt_init(mysql);
  rc= mysql_stmt_prepare(stmt, query, strlen(query));
  check_stmt_rc(rc, stmt);

  for (i= 0; i < 3; i++)
  {
    int rowcount= 0;

    rc= mysql_stmt_execute(stmt);
    check_stmt_rc(rc, stmt);
    while (mysql_stmt_fetch(stmt) != MYSQL_NO_DATA)
      rowcount++;
    FAIL_UNLESS(3 == rowcount, "Expected 3 rows");
  }
  mysql_stmt_close(stmt);

  rc= mysql_query(mysql, "DROP VIEW v1");
  check_mysql_rc(rc, mysql);
  rc= mysql_query(mysql, "DROP TABLE t1");
  check_mysql_rc(rc, mysql);

  return OK;
}
コード例 #7
0
ファイル: PlnrMStructure.cpp プロジェクト: epsitech/planar
void MyTblPlnrMStructure::updateRec(
			PlnrMStructure* rec
		) {
	unsigned long l[8]; my_bool n[8]; my_bool e[8];

	l[2] = rec->sref.length();

	MYSQL_BIND bind[] = {
		bindUint(&rec->hkIxVTbl,&(l[0]),&(n[0]),&(e[0])), 
		bindUbigint(&rec->hkUref,&(l[1]),&(n[1]),&(e[1])), 
		bindCstring((char*) (rec->sref.c_str()),&(l[2]),&(n[2]),&(e[2])), 
		bindDouble(&rec->x0,&(l[3]),&(n[3]),&(e[3])), 
		bindDouble(&rec->x1,&(l[4]),&(n[4]),&(e[4])), 
		bindDouble(&rec->y0,&(l[5]),&(n[5]),&(e[5])), 
		bindDouble(&rec->y1,&(l[6]),&(n[6]),&(e[6])), 
		bindUbigint(&rec->ref,&(l[7]),&(n[7]),&(e[7]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrMStructure / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrMStructure / stmtUpdateRec)\n");
};
コード例 #8
0
ファイル: sql.c プロジェクト: itaka/hurricane
/// Executes the prepared statement.
int SqlStmt_Execute(SqlStmt* self)
{
	if( self == NULL )
		return SQL_ERROR;

	SqlStmt_FreeResult(self);
	if( (self->bind_params && mysql_stmt_bind_param(self->stmt, self->params)) ||
		mysql_stmt_execute(self->stmt) )
	{
		ShowSQL("DB error - %s\n", mysql_stmt_error(self->stmt));
		return SQL_ERROR;
	}
	self->bind_columns = false;
	if( mysql_stmt_store_result(self->stmt) )// store all the data
	{
		ShowSQL("DB error - %s\n", mysql_stmt_error(self->stmt));
		return SQL_ERROR;
	}

	return SQL_SUCCESS;
}
コード例 #9
0
ファイル: FmncMUsergroup.cpp プロジェクト: epsitech/fabmaniac
void MyTblFmncMUsergroup::insertRec(
			FmncMUsergroup* rec
		) {
	unsigned long l[4]; my_bool n[4]; my_bool e[4];

	l[2] = rec->sref.length();
	l[3] = rec->Comment.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->grp,&(l[0]),&(n[0]),&(e[0])),
		bindUbigint(&rec->own,&(l[1]),&(n[1]),&(e[1])),
		bindCstring((char*) (rec->sref.c_str()),&(l[2]),&(n[2]),&(e[2])),
		bindCstring((char*) (rec->Comment.c_str()),&(l[3]),&(n[3]),&(e[3]))
	};

	if (mysql_stmt_bind_param(stmtInsertRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblFmncMUsergroup / stmtInsertRec)\n");
// IP myInsertRec.execNounq --- BEGIN
	if (mysql_stmt_execute(stmtInsertRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblFmncMUsergroup / stmtInsertRec)\n");
	rec->ref = mysql_stmt_insert_id(stmtInsertRec);
// IP myInsertRec.execNounq --- END
};
コード例 #10
0
ファイル: m_mysql_command.cpp プロジェクト: mzxdream/bak
std::pair<unsigned, MError> MMysqlCommand::DoExecuteNonQuery()
{
    int param_count = mysql_stmt_param_count(p_stmt_);
    if (static_cast<size_t>(param_count) != in_params_.size())
    {
        MLOG(MGetLibLogger(), MERR, "param count is not match need:", param_count, " actual is:", in_params_.size());
        return std::pair<unsigned, MError>(0, MError::NotMatch);
    }
    if (mysql_stmt_bind_param(p_stmt_, &in_params_[0]) != 0)
    {
        MLOG(MGetLibLogger(), MERR, "bind failed errno:", mysql_stmt_errno(p_stmt_), " error:", mysql_stmt_error(p_stmt_));
        return std::pair<unsigned, MError>(0, MError::Unknown);
    }
    if (mysql_stmt_execute(p_stmt_) != 0)
    {
        MLOG(MGetLibLogger(), MERR, "execute failed errorno:", mysql_stmt_errno(p_stmt_), " error:", mysql_stmt_error(p_stmt_));
        return std::pair<unsigned, MError>(0, MError::Unknown);
    }
    unsigned affect = mysql_stmt_affected_rows(p_stmt_);
    return std::make_pair(affect, MError::No);
}
コード例 #11
0
ファイル: apr_dbd_mysql.c プロジェクト: cmjonze/apr
static int dbd_mysql_pquery_internal(apr_pool_t *pool, apr_dbd_t *sql,
                                     int *nrows, apr_dbd_prepared_t *statement,
                                     MYSQL_BIND *bind)
{
    int ret;

    ret = mysql_stmt_bind_param(statement->stmt, bind);
    if (ret != 0) {
        *nrows = 0;
        ret = mysql_stmt_errno(statement->stmt);
    }
    else {
        ret = mysql_stmt_execute(statement->stmt);
        if (ret != 0) {
            ret = mysql_stmt_errno(statement->stmt);
        }
        *nrows = (int) mysql_stmt_affected_rows(statement->stmt);
    }

    return ret;
}
コード例 #12
0
ファイル: PlnrQDtpAPar.cpp プロジェクト: epsitech/planar
void MyTblPlnrQDtpAPar::updateRec(
			PlnrQDtpAPar* rec
		) {
	unsigned long l[7]; my_bool n[7]; my_bool e[7];

	l[3] = rec->x2SrefKKey.length();
	l[5] = rec->Val.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->ref,&(l[2]),&(n[2]),&(e[2])), 
		bindCstring((char*) (rec->x2SrefKKey.c_str()),&(l[3]),&(n[3]),&(e[3])), 
		bindUbigint(&rec->refPlnrMFile,&(l[4]),&(n[4]),&(e[4])), 
		bindCstring((char*) (rec->Val.c_str()),&(l[5]),&(n[5]),&(e[5])), 
		bindUbigint(&rec->qref,&(l[6]),&(n[6]),&(e[6]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrQDtpAPar / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrQDtpAPar / stmtUpdateRec)\n");
};
コード例 #13
0
void MyTblPlnrRMStackMStructure::insertRec(
			PlnrRMStackMStructure* rec
		) {
	unsigned long l[4]; my_bool n[4]; my_bool e[4];

	l[2] = rec->fromSrefPlnrMLayer.length();
	l[3] = rec->toSrefPlnrMLayer.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->refPlnrMStack,&(l[0]),&(n[0]),&(e[0])),
		bindUbigint(&rec->refPlnrMStructure,&(l[1]),&(n[1]),&(e[1])),
		bindCstring((char*) (rec->fromSrefPlnrMLayer.c_str()),&(l[2]),&(n[2]),&(e[2])),
		bindCstring((char*) (rec->toSrefPlnrMLayer.c_str()),&(l[3]),&(n[3]),&(e[3]))
	};

	if (mysql_stmt_bind_param(stmtInsertRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrRMStackMStructure / stmtInsertRec)\n");
// IP myInsertRec.execNounq --- BEGIN
	if (mysql_stmt_execute(stmtInsertRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrRMStackMStructure / stmtInsertRec)\n");
	rec->ref = mysql_stmt_insert_id(stmtInsertRec);
// IP myInsertRec.execNounq --- END
};
コード例 #14
0
ファイル: FmncQPrsMNOrg.cpp プロジェクト: epsitech/fabmaniac
void MyTblFmncQPrsMNOrg::updateRec(
			FmncQPrsMNOrg* rec
		) {
	unsigned long l[8]; my_bool n[8]; my_bool e[8];

	l[6] = rec->srefKFunction.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->mref,&(l[2]),&(n[2]),&(e[2])), 
		bindUbigint(&rec->ref,&(l[3]),&(n[3]),&(e[3])), 
		bindUint(&rec->x1Startd,&(l[4]),&(n[4]),&(e[4])), 
		bindUint(&rec->x1Stopd,&(l[5]),&(n[5]),&(e[5])), 
		bindCstring((char*) (rec->srefKFunction.c_str()),&(l[6]),&(n[6]),&(e[6])), 
		bindUbigint(&rec->qref,&(l[7]),&(n[7]),&(e[7]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblFmncQPrsMNOrg / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblFmncQPrsMNOrg / stmtUpdateRec)\n");
};
コード例 #15
0
ファイル: gsc_mysql.cpp プロジェクト: riicchhaarrd/libcod
int gsc_mysql_stmt_execute()
{
	int mysql_stmt;
	int result;
	
	int helper = 0;
	helper += stackGetParamInt(1, &mysql_stmt);
	
	#if DEBUG_MYSQL
	printf_hide("gsc_mysql_stmt_execute(mysql_stmt=%d)\n", mysql_stmt);
	#endif
	
	if (helper != 1)
	{
		printf_hide("scriptengine> wrongs args for gsc_mysql_stmt_execute(mysql_stmt);\n");
		return stackReturnInt(0);
	}

	int ret = mysql_stmt_execute((MYSQL_STMT*)mysql_stmt);
	return stackReturnInt(ret);
}
コード例 #16
0
ファイル: main.cpp プロジェクト: evugar/dbupdate
void message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message)
{
//	char buffer[255];
//	uint8_t payload;


	MYSQL_BIND bind[3];

	memset(bind, 0, sizeof(bind));

	bind[0].buffer_type = MYSQL_TYPE_STRING;
	bind[0].buffer = message->topic;
	bind[0].buffer_length = strlen(message->topic);

	bind[1].buffer_type = MYSQL_TYPE_LONG;
	bind[1].buffer = (void *)&message->payloadlen;
	bind[1].buffer_length = sizeof(int);


//	payload = *(uint8_t *)message->payload;
//	sprintf(buffer, "%d", payload);

	printf("Topic: %s, " , message->topic );
	printf("Payload len: %d\n" , message->payloadlen );
//	printf("Payload:");
	for (int i=0; i < message->payloadlen;i++) {
		printf("%0#x ", *((uint8_t *)message->payload+i) );
	}
	printf("\n");


	bind[2].buffer_type = MYSQL_TYPE_BLOB;
	bind[2].buffer = message->payload;
	bind[2].buffer_length = message->payloadlen;

	if (mysql_stmt_bind_param(stmt, bind)) {
		printf("Binding error\n");
	}
	mysql_stmt_execute(stmt);
}
コード例 #17
0
ファイル: mysqlerl.c プロジェクト: bjc/mysqlerl
void
handle_query(ETERM *cmd)
{
  ETERM *query, *resp;
  MYSQL_STMT *handle;
  char *q;

  query = erl_element(2, cmd);
  q = erl_iolist_to_string(query);
  erl_free_term(query);

  logmsg("INFO: got query: %s", q);

  handle = mysql_stmt_init(&dbh);
  if (mysql_stmt_prepare(handle, q, strlen(q))) {
    resp = erl_format("{error, {mysql_error, ~i, ~s}}",
                      mysql_stmt_errno(handle), mysql_stmt_error(handle));
  } else if (mysql_stmt_execute(handle)) {
    resp = erl_format("{error, {mysql_error, ~i, ~s}}",
                      mysql_stmt_errno(handle), mysql_stmt_error(handle));
  } else {
    set_mysql_results(handle);
    if (results) {
      resp = handle_mysql_result();
    } else {
      if (mysql_stmt_field_count(handle) == 0) {
        resp = erl_format("{updated, ~i}", numrows);
      } else {
        resp = erl_format("{error, {mysql_error, ~i, ~s}}",
                          mysql_stmt_errno(handle), mysql_stmt_error(handle));
      }
    }
  }

  erl_free(q);
  mysql_stmt_close(handle);

  write_msg(resp);
  erl_free_term(resp);
}
コード例 #18
0
ファイル: PlnrQRtcList.cpp プロジェクト: epsitech/planar
void MyTblPlnrQRtcList::updateRec(
			PlnrQRtcList* rec
		) {
	unsigned long l[9]; my_bool n[9]; my_bool e[9];

	l[3] = rec->sref.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->ref,&(l[2]),&(n[2]),&(e[2])), 
		bindCstring((char*) (rec->sref.c_str()),&(l[3]),&(n[3]),&(e[3])), 
		bindUint(&rec->hkIxVTbl,&(l[4]),&(n[4]),&(e[4])), 
		bindUbigint(&rec->hkUref,&(l[5]),&(n[5]),&(e[5])), 
		bindUbigint(&rec->refPlnrMDesign,&(l[6]),&(n[6]),&(e[6])), 
		bindUbigint(&rec->refPlnrMLayer,&(l[7]),&(n[7]),&(e[7])), 
		bindUbigint(&rec->qref,&(l[8]),&(n[8]),&(e[8]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrQRtcList / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrQRtcList / stmtUpdateRec)\n");
};
コード例 #19
0
int sql_exec(struct subdbinfo *info,
	     struct stralloc *q,
	     unsigned int nparams,
	     struct stralloc *params)
{
  int rows;
  MYSQL_STMT *stmt;

  stmt = _prepbind(info,q,nparams,params);
  switch (rows = mysql_stmt_execute(stmt)) {
  case 0:
    rows = mysql_stmt_affected_rows(stmt);
    break;
  default:
    if (mysql_stmt_errno(stmt) == ER_DUP_ENTRY)
      rows = 0;
    else
      die_sqlerror(info);
  }
  sql_free_result(info,stmt);
  return rows;
}
コード例 #20
0
void _MySQLCallProc(char* ProcName, MYSQL_BIND Parameters[])
{
	MYSQL_STMT*	stmt;
	int status;

	if (!ProcName || !Parameters)
		return;

	// init statement
	stmt = mysql_stmt_init(mysql);
	
	if (!stmt)	
	  return;
	
	// execute stored procedure
	status = mysql_stmt_prepare(stmt, ProcName, strlen(ProcName));	
	status = mysql_stmt_bind_param(stmt, Parameters);
	status = mysql_stmt_execute(stmt);

	// close statement
	mysql_stmt_close(stmt);
};
コード例 #21
0
ファイル: apr_dbd_mysql.c プロジェクト: MaoPU/ossdl-overlay
static int dbd_mysql_pvquery(apr_pool_t *pool, apr_dbd_t *sql, int *nrows,
                             apr_dbd_prepared_t *statement, va_list args)
{
    MYSQL_BIND *bind;
    char *arg;
    int ret;
    int nargs = 0;
    int i;
    my_bool is_null = FALSE;

    if (sql->trans && sql->trans->errnum) {
        return sql->trans->errnum;
    }
    nargs = mysql_stmt_param_count(statement->stmt);

    bind = apr_palloc(pool, nargs*sizeof(MYSQL_BIND));
    for (i=0; i < nargs; ++i) {
        arg = va_arg(args, char*);
        bind[i].buffer_type = MYSQL_TYPE_VAR_STRING;
        bind[i].buffer = arg;
        bind[i].buffer_length = strlen(arg);
        bind[i].length = &bind[i].buffer_length;
        bind[i].is_null = &is_null;
        bind[i].is_unsigned = 0;
    }

    ret = mysql_stmt_bind_param(statement->stmt, bind);
    if (ret != 0) {
        *nrows = 0;
    }
    else {
        ret = mysql_stmt_execute(statement->stmt);
        *nrows = mysql_stmt_affected_rows(statement->stmt);
    }
    if (sql->trans) {
        sql->trans->errnum = ret;
    }
    return ret;
}
コード例 #22
0
ファイル: errors.c プロジェクト: 0x-ff/libmysql-android
static int test_ps_client_warnings(MYSQL *mysql)
{
  int        rc;
  MYSQL_STMT *stmt;
  char       *query= "DROP TABLE IF EXISTS test_non_exists";

  rc= mysql_query(mysql, "DROP TABLE if exists test_non_exists");
  check_mysql_rc(rc, mysql); 

  stmt= mysql_stmt_init(mysql);
  rc= mysql_stmt_prepare(stmt, query, strlen(query));
  FAIL_IF(rc, mysql_stmt_error(stmt));

  rc= mysql_stmt_execute(stmt);
  FAIL_IF(rc, mysql_stmt_error(stmt));

  FAIL_IF(!mysql_warning_count(mysql), "Warning expected");

  mysql_stmt_close(stmt);

  return OK;
}
コード例 #23
0
ファイル: m_mysql_command.cpp プロジェクト: mzxdream/bak
MError MMysqlCommand::DoExecuteReader()
{
    int param_count = mysql_stmt_param_count(p_stmt_);
    if (static_cast<size_t>(param_count) != in_params_.size())
    {
        MLOG(MGetLibLogger(), MERR, "param count is not match need:", param_count, " actual is :", in_params_.size());
        return MError::NotMatch;
    }
    if (mysql_stmt_bind_param(p_stmt_, &in_params_[0]) != 0)
    {
        MLOG(MGetLibLogger(), MERR, "bind failed errno:", mysql_stmt_errno(p_stmt_), " error:", mysql_stmt_error(p_stmt_));
        return MError::Unknown;
    }
    my_bool update_max_length = 1;
    mysql_stmt_attr_set(p_stmt_, STMT_ATTR_UPDATE_MAX_LENGTH, static_cast<void*>(&update_max_length));
    if (mysql_stmt_execute(p_stmt_) != 0)
    {
        MLOG(MGetLibLogger(), MERR, "execute failed errno:", mysql_stmt_errno(p_stmt_), " error:", mysql_stmt_error(p_stmt_));
        return MError::Unknown;
    }
    return BindResult();
}
コード例 #24
0
ファイル: SqlStatement.cpp プロジェクト: saeschdivara/x0
bool SqlStatement::run()
{
	TRACE("run: %s", query_);
	if (bindOffset_ != mysql_stmt_param_count(stmt_)) {
		error_ = "Invalid parameter count";
		fprintf(stderr, "Cannot run argument with invalid parameter count.\n");
		return false;
	}

	if (paramCount_ != 0 && mysql_stmt_bind_param(stmt_, params_) != 0) {
		error_ = mysql_stmt_error(stmt_);
		return false;
	}

	unsigned i = 0;
	for (bool done = false; !done; i = 1 + i % 10) {
		switch (mysql_stmt_execute(stmt_)) {
			case CR_SERVER_GONE_ERROR:
			case CR_SERVER_LOST_EXTENDED:
			case CR_SERVER_LOST:
				if (i)
					sleep(i); 

				break;
			case 0:
				done = true;
				break;
			default:
				error_ = mysql_stmt_error(stmt_);
				fprintf(stderr, "sql: statement execution error: %s\n", error_);
				return false;
		}
	}

	mysql_stmt_store_result(stmt_);
	error_ = nullptr;
	return true;
}
コード例 #25
0
ファイル: PlnrQStkList.cpp プロジェクト: epsitech/planar
void MyTblPlnrQStkList::insertRec(
			PlnrQStkList* rec
		) {
	unsigned long l[9]; my_bool n[9]; my_bool e[9];

	l[3] = rec->sref.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])),
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])),
		bindUbigint(&rec->ref,&(l[2]),&(n[2]),&(e[2])),
		bindCstring((char*) (rec->sref.c_str()),&(l[3]),&(n[3]),&(e[3])),
		bindUint(&rec->ixVBasetype,&(l[4]),&(n[4]),&(e[4])),
		bindUbigint(&rec->dsnRefPlnrMDesign,&(l[5]),&(n[5]),&(e[5])),
		bindUint(&rec->ixVModtype,&(l[6]),&(n[6]),&(e[6])),
		bindUint(&rec->ixVFlrAligntype,&(l[7]),&(n[7]),&(e[7])),
		bindUint(&rec->ixVCeilAligntype,&(l[8]),&(n[8]),&(e[8]))
	};

	if (mysql_stmt_bind_param(stmtInsertRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrQStkList / stmtInsertRec)\n");
	if (mysql_stmt_execute(stmtInsertRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrQStkList / stmtInsertRec)\n");
	rec->qref = mysql_stmt_insert_id(stmtInsertRec);
};
コード例 #26
0
ファイル: MysqlConnection.c プロジェクト: HunterChen/libzdb
ResultSet_T MysqlConnection_executeQuery(T C, const char *sql, va_list ap) {
        va_list ap_copy;
        MYSQL_STMT *stmt = NULL;
	assert(C);
        StringBuffer_clear(C->sb);
        va_copy(ap_copy, ap);
        StringBuffer_vappend(C->sb, sql, ap_copy);
        va_end(ap_copy);
        if (prepare(C, StringBuffer_toString(C->sb), StringBuffer_length(C->sb), &stmt)) {
#if MYSQL_VERSION_ID >= 50002
                unsigned long cursor = CURSOR_TYPE_READ_ONLY;
                mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, &cursor);
#endif
                if ((C->lastError = mysql_stmt_execute(stmt))) {
                        StringBuffer_clear(C->sb);
                        StringBuffer_append(C->sb, "%s", mysql_stmt_error(stmt));
                        mysql_stmt_close(stmt);
                }
                else
                        return ResultSet_new(MysqlResultSet_new(stmt, C->maxRows, false), (Rop_T)&mysqlrops);
        }
        return NULL;
}
コード例 #27
0
ファイル: FmncQSmpList.cpp プロジェクト: epsitech/fabmaniac
void MyTblFmncQSmpList::updateRec(
			FmncQSmpList* rec
		) {
	unsigned long l[9]; my_bool n[9]; my_bool e[9];

	l[3] = rec->sref.length();
	l[6] = rec->Material.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->ref,&(l[2]),&(n[2]),&(e[2])), 
		bindCstring((char*) (rec->sref.c_str()),&(l[3]),&(n[3]),&(e[3])), 
		bindUbigint(&rec->supRefFmncMSample,&(l[4]),&(n[4]),&(e[4])), 
		bindUbigint(&rec->refFmncMArticle,&(l[5]),&(n[5]),&(e[5])), 
		bindCstring((char*) (rec->Material.c_str()),&(l[6]),&(n[6]),&(e[6])), 
		bindUint(&rec->ixVState,&(l[7]),&(n[7]),&(e[7])), 
		bindUbigint(&rec->qref,&(l[8]),&(n[8]),&(e[8]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblFmncQSmpList / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblFmncQSmpList / stmtUpdateRec)\n");
};
コード例 #28
0
ファイル: PlnrQUsrList.cpp プロジェクト: epsitech/planar
void MyTblPlnrQUsrList::updateRec(
			PlnrQUsrList* rec
		) {
	unsigned long l[10]; my_bool n[10]; my_bool e[10];

	l[4] = rec->sref.length();

	MYSQL_BIND bind[] = {
		bindUbigint(&rec->jref,&(l[0]),&(n[0]),&(e[0])), 
		bindUint(&rec->jnum,&(l[1]),&(n[1]),&(e[1])), 
		bindUbigint(&rec->ref,&(l[2]),&(n[2]),&(e[2])), 
		bindUbigint(&rec->refPlnrMPerson,&(l[3]),&(n[3]),&(e[3])), 
		bindCstring((char*) (rec->sref.c_str()),&(l[4]),&(n[4]),&(e[4])), 
		bindUbigint(&rec->refPlnrMUsergroup,&(l[5]),&(n[5]),&(e[5])), 
		bindUint(&rec->ixVState,&(l[6]),&(n[6]),&(e[6])), 
		bindUint(&rec->ixPlnrVLocale,&(l[7]),&(n[7]),&(e[7])), 
		bindUint(&rec->ixPlnrVUserlevel,&(l[8]),&(n[8]),&(e[8])), 
		bindUbigint(&rec->qref,&(l[9]),&(n[9]),&(e[9]))
	};

	if (mysql_stmt_bind_param(stmtUpdateRec, bind)) throw DbsException("DbsException / MySQL: error binding to statement! (TblPlnrQUsrList / stmtUpdateRec)\n");
	if (mysql_stmt_execute(stmtUpdateRec)) throw DbsException("DbsException / MySQL: error executing statement! (TblPlnrQUsrList / stmtUpdateRec)\n");
};
コード例 #29
0
    int exec() {

      id = rand()%10000;

      // reset statement for reuse
      if(mysql_stmt_reset(stmt)) throw runtime_error(mysql_stmt_error(stmt));

      // create and use input parameter
      memset(param, 0, sizeof(param));
      param[0].buffer_type = MYSQL_TYPE_LONG;
      param[0].buffer = (char *)&id;
      param[0].buffer_length = sizeof(id);
      param[0].is_null = 0;
      param[0].length = NULL;
      if(mysql_stmt_bind_param(stmt,param)) throw runtime_error(mysql_stmt_error(stmt));

      // create and fill result buffer
      memset(results, 0, sizeof(results));
      results[0].buffer_type= MYSQL_TYPE_LONG;
      results[0].buffer = &randomNumber;
      results[0].buffer_length = sizeof(randomNumber);
      results[0].is_null = 0;
      results[0].length = &len1;
      if(mysql_stmt_bind_result(stmt, results)) throw runtime_error(mysql_stmt_error(stmt));

      // execute statement
      if(mysql_stmt_execute(stmt)) throw runtime_error(mysql_stmt_error(stmt));
      if(mysql_stmt_fetch(stmt)) randomNumber = 0;

      // output json
      JsonObj obj;
      obj.add("id",id);
      obj.add("randomNumber",randomNumber);
      res << obj.to_s();

      return res.end();
    }
コード例 #30
0
	DatabaseResultSPtr CDatabaseConnectionMySql::ExecuteSelect( MYSQL_STMT * statement, DatabaseValuedObjectInfosPtrArray & infos )
	{
		DatabaseResultSPtr result;

		try
		{
			if ( statement )
			{
				MySQLCheck( mysql_stmt_execute( statement ), INFO_MYSQL_STATEMENT_EXECUTION, EDatabaseExceptionCodes_StatementError, _connection );
				DatabaseConnectionMySqlSPtr connection = std::static_pointer_cast< CDatabaseConnectionMySql >( shared_from_this() );
				MySqlStoreResult( statement, connection );

				if ( infos.empty() )
				{
					infos = MySqlGetColumns( statement, connection );
				}

				result = MySqlFetchResult( statement, infos, connection );
			}
		}
		COMMON_CATCH( ERROR_MYSQL_EXECUTION )

		return result;
	}