View Single Post
Author Message
claudiuhks
Yam Inside®™℠
Join Date: Jan 2010
Location: Living Randomly
Old 09-28-2013 , 09:06   [SQL] SQLite Connector :: Local Database (+Natives)
Reply With Quote #1


- SQLite Connector :: Local Database -



Download
View C++ Source Code
Visit SQLite Page
This extension's purpose is to make the SQLite scripting more easier for anyone. Just look at the INC file which is listed below.


PHP Code:
/** Does a query.
 *
 * @param Query                The query to execute.
 * @param Select            Set it true whether the query contains "SELECT" word.
 *
 * @return                    The number of rows selected, if any.
 */
native /* unsigned int */    Database_Query(Query[], bool:Select false);

/** Retrieves a result.
 *
 * @param Row                The row to pick result from.
 * @param Column            The column to pick result from.
 * @param Buffer            The variable to store result in.
 * @param Size                The variable that represents the buffer size.
 *
 * @return                    The result converted as integer.
 */
native /* signed int */        Database_Get(RowColumnBuffer[], Size);

/** Makes a string safe.
 *
 * @param String            The string to make safe.
 * @param Character            The character to replace bad characters as '\\', '`', '"' or '\''.
 *
 * @return                    True if success or false if error.
 */
native /* bool */            bool:Database_Safe(String[], Character '*'); 


An example of plugin may be the one listed below.

PHP Code:
#include amxmodx
#include amxmisc
#include database

public plugin_init()
{
  
register_plugin("Last Played Maps""1.0""Hattrick (Claudiu HKS)");

  
Database_Query("CREATE TABLE IF NOT EXISTS Maps (Name TEXT, UnixTimeStamp NUMERIC)");

  new 
Map[32], Buffer[256];
  
get_mapname(Mapsizeof(Map) - 1);

  
formatex(Buffersizeof(Buffer) - 1"INSERT INTO Maps VALUES ('%s', %d)"Mapget_systime());

  
Database_Query(Buffer);

  
register_concmd("amx_lastmaps""CmdLastMaps"ADMIN_MAP"- displays the last played maps");
}

public 
CmdLastMaps(ClientLevelCommand)
{
  if (!
cmd_access(ClientLevelCommand1))
  {
    return 
PLUGIN_HANDLED;
  }

  
console_print(Client"^nThe last played maps were:^n");

  static 
Count 0Iterator 0Map[32];

  
Count Database_Query("SELECT Name FROM Maps ORDER BY UnixTimeStamp DESC LIMIT 15"true);

  if (
Count)
  {
    for (
Iterator 0Iterator CountIterator++)
    {
      if (
Iterator == 0)
      {
        
RemDatabase_Get(Iterator0Mapsizeof(Map) - 1);

        
console_print(Client"%s (current)"Map);
      }

      else
      {
        
RemDatabase_Get(Iterator0Mapsizeof(Map) - 1);

        
console_print(ClientMap);
      }
    }
  }

  else
  {
    
/* I can't believe I reached here... */
    
console_print(Client"Unfortunately, there were no maps played yet.");
  }

  return 
PLUGIN_HANDLED;




How to use Database_Get native?

For example, if you execute the next query while having 5,000 rows into your table: SELECT Apples, Oranges FROM Fruits LIMIT 2

There will be two rows selected, because LIMIT is 2.
There will be two columns selected, because you select both Apples and Oranges.

So, you will use Database_Get with Row parameter 0 and then with Row parameter 1.
Also, with Column parameter 0 and then with Column parameter 1.

__________________

Last edited by claudiuhks; 03-16-2014 at 12:59.
claudiuhks is offline
Send a message via MSN to claudiuhks Send a message via Yahoo to claudiuhks Send a message via Skype™ to claudiuhks