コード例 #1
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> string -> dbresult_ */
EXTERNML value db_exec(value conn, value query) 
{
  if (mysql_real_query(DBconn_val(conn), String_val(query), string_length(query)))
    failwith("db_exec query failed"); 
  else {
    MYSQL_RES *dbres = mysql_store_result(DBconn_val(conn));
    return dbresult_alloc(dbres); 
  }
}
コード例 #2
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> string option */
EXTERNML value db_errormessage(value conn) 
{
  char* msg = mysql_error(DBconn_val(conn));
  if (msg == NULL || msg[0] == '\0')
    msg = NULL;
  return Val_stringornull(msg);
}
コード例 #3
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> string */
EXTERNML value db_port(value conn) 
{
  char strport[5];
  sprintf(strport,"%i",(DBconn_val(conn))->port);
  strport[4]='\0';
  return copy_string(strport);
}
コード例 #4
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> dbresultstatus */
EXTERNML value db_resultstatus(value conn) {
  MYSQL *mysql = DBconn_val(conn);
  switch (mysql_errno(mysql)) {
  case ER_EMPTY_QUERY:  
    return Atom(Empty_query);
  case 0:                       /* No error */
    {
      /* If mysql_num_fields==0, query was a command */
      if (mysql_num_fields(mysql) == 0)
        return Atom(Command_ok);
      else
        return Atom(Tuples_ok);
    }
  default: 
    return Atom(Nonfatal_error);
  }
}
コード例 #5
0
ファイル: mmysql.c プロジェクト: Munksgaard/mosml
/* ML type : dbconn_ -> dbresultstatus */
EXTERNML value db_resultstatus(value conn) {
  MYSQL *mysql = DBconn_val(conn);
  switch (mysql_errno(mysql)) {
  case ER_EMPTY_QUERY:  
    return Atom(Empty_query);
  case 0:                       /* No error */
    {
      /* If mysql_field_count==0, query was a command */
      /* 2002-07-25: In MySQL 3.23 and later, must use mysql_field_count */
      if (mysql_field_count(mysql) == 0)
        return Atom(Command_ok);
      else
        return Atom(Tuples_ok);
    }
  default: 
    return Atom(Nonfatal_error);
  }
}
コード例 #6
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbresult_ -> int */
EXTERNML value db_cmdtuples(value conn) 
{
  /* NB: Cast from long long int to long int: */
  long cmdtuples = (long)(mysql_affected_rows(DBconn_val(conn))); 
  return Val_long(cmdtuples);
}
コード例 #7
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> unit */
EXTERNML value db_status(value conn) 
{
  mysql_ping(DBconn_val(conn));
  return Val_bool(mysql_ping(DBconn_val(conn)));
}
コード例 #8
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> unit */
EXTERNML value db_reset(value conn) 
{
  mysql_ping(DBconn_val(conn));
  return Val_unit;
}
コード例 #9
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> unit */
EXTERNML value db_finish(value conn) 
{
  mysql_close(DBconn_val(conn));
  return Val_unit;
}
コード例 #10
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> string */
EXTERNML value db_host(value conn) 
{
  return Val_stringornull((DBconn_val(conn))->host);
}
コード例 #11
0
ファイル: mmysql.c プロジェクト: vsinha/programming_languages
/* ML type : dbconn_ -> string */
EXTERNML value db_db(value conn) 
{
  return copy_string((DBconn_val(conn))->db);
}