You can find this sample and instructions for compiling it in the %SQLANYSAMP12%\SQLAnywhere\DBTools directory. The sample program itself is in main.cpp. The sample illustrates how to use the DBTools library to perform a backup of a database.
#define WIN32 #include <stdio.h> #include <string.h> #include "windows.h" #include "sqldef.h" #include "dbtools.h" extern short _callback ConfirmCallBack( char * str ) { if( MessageBox( NULL, str, "Backup", MB_YESNO|MB_ICONQUESTION ) == IDYES ) { return 1; } return 0; } extern short _callback MessageCallBack( char * str ) { if( str != NULL ) { fprintf( stdout, "%s\n", str ); } return 0; } extern short _callback StatusCallBack( char * str ) { if( str != NULL ) { fprintf( stdout, "%s\n", str ); } return 0; } extern short _callback ErrorCallBack( char * str ) { if( str != NULL ) { fprintf( stdout, "%s\n", str ); } return 0; } typedef void (CALLBACK *DBTOOLSPROC)( void * ); typedef short (CALLBACK *DBTOOLSFUNC)( void * ); // Main entry point into the program. int main( int argc, char * argv[] ) { a_dbtools_info dbt_info; a_backup_db backup_info; char dir_name[ _MAX_PATH + 1]; char connect[ 256 ]; HINSTANCE hinst; DBTOOLSFUNC dbbackup; DBTOOLSFUNC dbtoolsinit; DBTOOLSPROC dbtoolsfini; short ret_code; // Always initialize to 0 so new versions // of the structure will be compatible. memset( &dbt_info, 0, sizeof( a_dbtools_info ) ); dbt_info.errorrtn = (MSG_CALLBACK)MessageCallBack;; memset( &backup_info, 0, sizeof( a_backup_db ) ); backup_info.version = DB_TOOLS_VERSION_NUMBER; backup_info.quiet = 0; backup_info.no_confirm = 0; backup_info.confirmrtn = (MSG_CALLBACK)ConfirmCallBack; backup_info.errorrtn = (MSG_CALLBACK)ErrorCallBack; backup_info.msgrtn = (MSG_CALLBACK)MessageCallBack; backup_info.statusrtn = (MSG_CALLBACK)StatusCallBack; if( argc > 1 ) { strncpy( dir_name, argv[1], _MAX_PATH ); } else { // DBTools does not expect (or like) a trailing slash strcpy( dir_name, "c:\\temp" ); } backup_info.output_dir = dir_name; if( argc > 2 ) { strncpy( connect, argv[2], 255 ); } else { strcpy( connect, "DSN=SQL Anywhere 12 Demo" ); } backup_info.connectparms = connect; backup_info.quiet = 0; backup_info.no_confirm = 0; backup_info.backup_database = 1; backup_info.backup_logfile = 1; backup_info.rename_log = 0; backup_info.truncate_log = 0; hinst = LoadLibrary( "dbtool12.dll" ); if( hinst == NULL ) { // Failed return EXIT_FAIL; } dbbackup = (DBTOOLSFUNC) GetProcAddress( (HMODULE)hinst, "_DBBackup@4" ); dbtoolsinit = (DBTOOLSFUNC) GetProcAddress( (HMODULE)hinst, "_DBToolsInit@4" ); dbtoolsfini = (DBTOOLSPROC) GetProcAddress( (HMODULE)hinst, "_DBToolsFini@4" ); ret_code = (*dbtoolsinit)( &dbt_info ); if( ret_code != EXIT_OKAY ) { return ret_code; } ret_code = (*dbbackup)( &backup_info ); (*dbtoolsfini)( &dbt_info ); FreeLibrary( hinst ); return ret_code; } |
Discuss this page in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |