/*
		msql.library simple example
		©1998 Christophe Sollet (cfc@iname.com)

		This simple example list existing database and tables on
		a mSQL database engine running on the local host.
*/

#include <exec/types.h>
#include <proto/exec.h>
#include <proto/msql.h>
#include <stdio.h>

struct Library *MsqlBase;

main()
{
	struct MsqlConnection *co;
	m_result *mre, *mre2;
	m_row	mro, mro2;
	if(MsqlBase = OpenLibrary("msql.library", 3))   /* Open the library */
	{
        /* Before doing any msql operation, we need a valid MsqlConnection structure */
		if(co = MsqlAllocConnection())
		{
            /* Now we'll attempt a connection on a local mSQL database engine */
			if(MsqlConnect(co, NULL))
			{
                /* Gets current DB list */
				mre = MsqlListDBs(co);
				if(mre)
				{
					printf("DB(s):\n");
                    /* Now display DB list */
					while(mro = MsqlFetchRow(mre))
					{
						printf("%s\n", *mro);

						/* For each DB, list tables */
						if(MsqlSelectDB(co, *mro) != -1)
						{
							if(mre2 = MsqlListTables(co))
							{
								printf("\tTable(s):\n");
        		    	        // Now display table list
								while(mro2 = MsqlFetchRow(mre2))
								{
									printf("\t%s\n", *mro2);
								}
							}
							MsqlFreeResult(mre2);
						}
						else
						{
	        	            printf("SelectDB failed\n");
    	        	        printf("%s\n", MsqlGetErrMsg(co)); // Display err message
						}
					}
					MsqlFreeResult(mre);
				} else
                {
                    printf("ListDBs failed\n");
                    printf("%s\n", MsqlGetErrMsg(co)); // Display err message
                }
				MsqlClose(co);
			} else
            {
                printf("Connection failed\n");
                printf("%s\n", MsqlGetErrMsg(co));
            }
			MsqlFreeConnection(co);
		} else printf("Alloc failed\n");
		CloseLibrary(MsqlBase);
	} else printf("Open Libs failed\n");
}
