Ejemplo n.º 1
0
BOOL Sqlite3DB::TableExists( LPCTSTR tableName )
{
	if (NULL == m_pDB) return FALSE;

	BOOL bExists = FALSE;

	SQLTRY();

	CStringA sql;
	sql.Format("select name from sqlite_master where type='table' and name='%s'", CStringA(tableName));

	char** dbresult = NULL;
	char* errmsg = NULL;
	int nrow = 0;
	int ncolumn = 0; 
	int ret = sqlite3_get_table(m_pDB, sql, &dbresult, &nrow, &ncolumn, &errmsg);
	if(ret == SQLITE_OK && nrow > 0)
	{
		bExists = TRUE;
	}

	sqlite3_free_table(dbresult);

	SQLCACHE_RETFALSE(_T("table exists"));

	return bExists;
}
Ejemplo n.º 2
0
// -------------------------------------------------
// ODBCConnect()
//
BOOL ODBCConnect(CHAR *lpServerName,CHAR *lpUserName,CHAR *lpPassword)
{
	win_open(EHWP_SCREENCENTER,50,300,59,-1,3,ON,"Connessione a ...");
	dispfm(10,27,1,-1,STYLE_BOLD,"#Arial",25,lpServerName);
	
	// --------------------------------------------------------------------
	// Mi connetto al server
	//
	EhOdbc.sqlLastError=SQLConnect(EhOdbc.hConn,    // Handle della connessione
								   lpServerName,    // Nome del server
								   SQL_NTS, // Nome del file / Driver da usare
								   lpUserName,SQL_NTS, // UserName
								   lpPassword,SQL_NTS); // Password
	if (EhOdbc.sqlLastError!=SQL_SUCCESS&&EhOdbc.sqlLastError!=SQL_SUCCESS_WITH_INFO) 
		{if (!EhOdbc.fNoErrorView) ODBCError("Connect"); 
		 win_close();
	     return TRUE;
		}

	// --------------------------------------------------------------------
	// Alloca memoria per comandi (ritorna puntatore in hStmt)
	//
	// sqlReturn=SQLAllocStmt(EhOdbc.hConn, &EhOdbc.hStmt);
	//
	EhOdbc.sqlLastError=SQLAllocHandle(SQL_HANDLE_STMT, EhOdbc.hConn, &EhOdbc.hStmt);
	if (EhOdbc.sqlLastError!=SQL_SUCCESS) {ODBCError("SQLAllocHandle/Env");  PRG_end("Ambiente stantment:?");}

	SQLSetStmtAttr(EhOdbc.hStmt, SQL_ATTR_CONCURRENCY, (SQLPOINTER) SQL_CONCUR_READ_ONLY, 0);
	SQLSetStmtAttr(EhOdbc.hStmt, SQL_ATTR_CURSOR_SCROLLABLE, (SQLPOINTER) SQL_SCROLLABLE , 0);
	SQLSetCursorName(EhOdbc.hStmt, "SQL_CURSOR", SQL_NTS);

	SQLTRY(SQL_HANDLE_STMT,"SET1",EhOdbc.hStmt,SQLSetStmtAttr(EhOdbc.hStmt, SQL_ATTR_ROW_BIND_TYPE, SQL_BIND_BY_COLUMN, 0));
	SQLTRY(SQL_HANDLE_STMT,"SET2",EhOdbc.hStmt,SQLSetStmtAttr(EhOdbc.hStmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER) 1, 0));
	SQLTRY(SQL_HANDLE_STMT,"SET3",EhOdbc.hStmt,SQLSetStmtAttr(EhOdbc.hStmt, SQL_ATTR_ROW_STATUS_PTR, NULL, 0));
	SQLTRY(SQL_HANDLE_STMT,"SET4",EhOdbc.hStmt,SQLSetStmtAttr(EhOdbc.hStmt, SQL_ATTR_ROWS_FETCHED_PTR, NULL, 0));

	win_close();
	return FALSE;
}
Ejemplo n.º 3
0
BOOL Sqlite3DB::QuerySQL( LPCSTR sql, Sqlite3QueryResult& result )
{
	if (NULL == m_pDB) return FALSE;
	BOOL bRet = FALSE;

	SQLTRY();

	char** dbresult = NULL;
	char* errmsg = NULL;
	int nrow = 0;
	int ncolumn = 0; 
	int ret = sqlite3_get_table(m_pDB, sql, &dbresult, &nrow, &ncolumn, &errmsg);
	if(ret == SQLITE_OK)
	{
		bRet = TRUE;
		result.Init(dbresult, nrow, ncolumn);
	}

	SQLCACHE_RETFALSE(_T("querysql"));
	
	return bRet;
}
Ejemplo n.º 4
0
BOOL Sqlite3DB::Open( LPCTSTR filepath )
{
	Close();

	SQLTRY();

	std::string utf8Filepath;
	if (! Unicode2Utf8(filepath, utf8Filepath))
	{
		errorLog(_T("can not transfer [%s] to utf8"), filepath);
		return FALSE;
	}
	int iRet = sqlite3_open(utf8Filepath.c_str(), &m_pDB);
	if(iRet != SQLITE_OK)
	{
		errorLogE(_T("Cannot open db[%s]: %s."), filepath, CString(sqlite3_errmsg(m_pDB)));
		return FALSE;
	}

	SQLCACHE_RETFALSE(_T("open db"));

	return TRUE;
}
Ejemplo n.º 5
0
BOOL Sqlite3DB::ExecuteSQL( LPCSTR sql, int* pAffectedRows )
{
	if (NULL == m_pDB) return FALSE;
	BOOL bRet = FALSE;

	SQLTRY();

	char* errmsg = NULL;
	int ret = sqlite3_exec(m_pDB, sql, NULL, NULL, &errmsg);
	if(ret == SQLITE_OK)
	{
		if (NULL != pAffectedRows) *pAffectedRows = sqlite3_changes(m_pDB);
		bRet = TRUE;
	}
	else
	{
		errorLog(_T("execute sql [%s] failed: %s"), CString(sql), CString(errmsg));
	}
	sqlite3_free(errmsg);

	SQLCACHE_RETFALSE(_T("ExecuteSQL"));

	return bRet;
}