Exemple #1
0
int main(int argc, char *argv[])
{
  attachsql_connect_t *con= NULL;
  attachsql_error_st *error= NULL;
  const char *query= "SELECT * FROM t1 WHERE name='fred'";
  attachsql_return_t ret= ATTACHSQL_RETURN_NONE;
  attachsql_query_row_st *row;
  uint16_t columns, current_column;

  con= attachsql_connect_create("localhost", 3306, "test", "test", "testdb", NULL);
  error= attachsql_query(con, strlen(query), query, 0, NULL);

  while ((ret != ATTACHSQL_RETURN_EOF) && (error == NULL))
  {
    ret= attachsql_connect_poll(con, &error);
    if (ret != ATTACHSQL_RETURN_ROW_READY)
    {
      continue;
    }
    row= attachsql_query_row_get(con, &error);
    columns= attachsql_query_column_count(con);
    for (current_column= 0; current_column < columns; current_column++)
    {
      printf("%.*s ", (int)row[current_column].length, row[current_column].data);
    }
    printf("\n");
    attachsql_query_row_next(con);
  }
  if (error != NULL)
  {
    printf("Error occurred: %s", error->msg);
  }
  attachsql_query_close(con);
  attachsql_connect_destroy(con);
}
Exemple #2
0
PyObject *_attachsql_QueryObject_buffer_row_get(_attachsql_QueryObject *self, PyObject *unused)
{
  attachsql_query_row_st *row;
  uint16_t column_count;
  uint16_t column;
  PyObject *py_row= NULL;
  PyObject *data= NULL;

  column_count= attachsql_query_column_count(self->pycon->conn);
  if (!column_count)
  {
    Py_RETURN_NONE;
  }
  row= attachsql_query_buffer_row_get(self->pycon->conn);
  if (!row)
  {
    Py_RETURN_NONE;
  }
  py_row= PyTuple_New(column_count);
  if (!py_row)
  {
    return NULL;
  }

  for (column= 0; column < column_count; column++)
  {
    data= PyString_FromStringAndSize(row[column].data, row[column].length);
    PyTuple_SET_ITEM(py_row, column, data);
  }
  return py_row;
}
int attachsql_drv_fetch(db_result_set_t *rs)
{
  /* NYI */
  attachsql_connect_t *con = rs->connection->ptr;
  size_t tmp_len;
  uint16_t columns, col;
  attachsql_return_t aret= ATTACHSQL_RETURN_NONE;
  attachsql_error_t *error= NULL;

  while((aret != ATTACHSQL_RETURN_EOF) && (aret != ATTACHSQL_RETURN_ROW_READY))
  {
    aret= attachsql_connect_poll(con, &error);

    if (error)
    {
      log_text(LOG_ALERT, "libAttachSQL Query Failed: %u:%s", attachsql_error_code(error), attachsql_error_message(error));
      attachsql_error_free(error);
      return 1;
    }
  }
  if (aret == ATTACHSQL_RETURN_EOF)
  {
    return 1;
  }
  attachsql_statement_row_get(con, NULL);
  columns= attachsql_query_column_count(con);
  for (col= 0; col < columns; col++)
  {
    switch (attachsql_statement_get_column_type(con, col))
    {
      case ATTACHSQL_COLUMN_TYPE_TINY:
      case ATTACHSQL_COLUMN_TYPE_SHORT:
      case ATTACHSQL_COLUMN_TYPE_LONG:
      case ATTACHSQL_COLUMN_TYPE_YEAR:
      case ATTACHSQL_COLUMN_TYPE_INT24:
        attachsql_statement_get_int(con, col, &error);
        break;
      case ATTACHSQL_COLUMN_TYPE_LONGLONG:
        attachsql_statement_get_bigint(con, col, &error);
        break;
      case ATTACHSQL_COLUMN_TYPE_FLOAT:
        attachsql_statement_get_float(con, col, &error);
        break;
      case ATTACHSQL_COLUMN_TYPE_DOUBLE:
        attachsql_statement_get_double(con, col, &error);
        break;
      default:
        attachsql_statement_get_char(con, col, &tmp_len, &error);
        break;
    }
  }
  attachsql_query_row_next(con);

  return 0;
}
int main(void)
{
  attachsql_connect_t *con= NULL;
  attachsql_error_t *error= NULL;
  const char *query= "SELECT * FROM t1 WHERE name = ? AND age > ?";
  attachsql_return_t ret= ATTACHSQL_RETURN_NONE;
  attachsql_query_row_st *row;
  uint16_t columns, current_column;
  attachsql_query_parameter_st param[2];

  con= attachsql_connect_create("localhost", 3306, "test", "test", "testdb", NULL);
  const char *name= "fred";
  uint32_t age= 30;
  param[0].type= ATTACHSQL_ESCAPE_TYPE_CHAR;
  param[0].data= (char*)name;
  param[0].length= strlen(name);
  param[1].type= ATTACHSQL_ESCAPE_TYPE_INT;
  param[1].data= &age;
  param[1].is_unsigned= true;
  attachsql_query(con, strlen(query), query, 2, param, &error);

  while ((ret != ATTACHSQL_RETURN_EOF) && (error == NULL))
  {
    ret= attachsql_connect_poll(con, &error);
    if (ret != ATTACHSQL_RETURN_ROW_READY)
    {
      continue;
    }
    row= attachsql_query_row_get(con, &error);
    columns= attachsql_query_column_count(con);
    for (current_column= 0; current_column < columns; current_column++)
    {
      printf("%.*s ", (int)row[current_column].length, row[current_column].data);
    }
    printf("\n");
    attachsql_query_row_next(con);
  }
  if (error != NULL)
  {
    printf("Error occurred: %s", attachsql_error_message(error));
    attachsql_error_free(error);
  }
  attachsql_query_close(con);
  attachsql_connect_destroy(con);
}
Exemple #5
0
PyObject *_attachsql_QueryObject_row_get_offset(_attachsql_QueryObject *self, PyObject *args)
{
  attachsql_query_row_st *row;
  uint16_t column_count;
  uint16_t column;
  uint64_t row_no;
  PyObject *py_row= NULL;
  PyObject *data= NULL;
  PyObject *tuple= NULL;

  if (!PyArg_ParseTuple(args, "K", &row_no))
  {
    return NULL;
  }

  column_count= attachsql_query_column_count(self->pycon->conn);
  if (!column_count)
  {
    Py_RETURN_NONE;
  }
  row= attachsql_query_row_get_offset(self->pycon->conn, row_no);
  if (!row)
  {
    PyTuple_SET_ITEM(tuple, 0, PyInt_FromLong(-1L));
    PyTuple_SET_ITEM(tuple, 1, PyString_FromString("Row not found"));
    PyErr_SetObject(_attachsql_ClientError, tuple);
    Py_DECREF(tuple);
    return NULL;
  }
  py_row= PyTuple_New(column_count);
  if (!py_row)
  {
    return NULL;
  }

  for (column= 0; column < column_count; column++)
  {
    data= PyString_FromStringAndSize(row[column].data, row[column].length);
    PyTuple_SET_ITEM(py_row, column, data);
  }
  return py_row;
}
Exemple #6
0
PyObject *_attachsql_QueryObject_column_count(_attachsql_QueryObject *self, PyObject *unused)
{
  uint16_t count;
  count= attachsql_query_column_count(self->pycon->conn);
  return PyInt_FromLong((long) count);
}