Beispiel #1
0
static void _create_binary_guid()
{
	GdaParameterList *plist;
	GdaParameter *param;

	GdaDict *dict = gda_dict_new();
	gda_dict_set_connection (dict , mgd->priv->connection);

	const gchar *sql = "INSERT INTO guids_bin (guid) VALUES(##/*name:'guid' type:GdaBinary*/)";

	GdaQuery *query = gda_query_new_from_sql (dict, sql, NULL);
	if (!query)
		g_error("Failed to create new query from string");

	plist = gda_query_get_parameter_list (query);
	param = gda_parameter_list_find_param (plist, "guid");

	gchar *guid = midgard_uuid_new();

	GValue *valb = gda_value_new_from_string ( (const gchar *) guid, GDA_TYPE_BINARY);

	gda_parameter_set_value (param, valb);

	gda_connection_clear_events_list (mgd->priv->connection);

	GError *error = NULL;
	GdaObject *res_obj = gda_query_execute (query, plist, FALSE, &error);
}
Beispiel #2
0
static gboolean
update_blob (GdaConnection *cnc, gint id, const gchar *data, glong binary_length, GError **error)
{
	GdaStatement *stmt;
	GdaSet *plist;
	GdaHolder *param;
	GValue *value;
	gchar *str;
	gboolean retval;
	const gchar* SQL_UPDATE = "UPDATE blobs set name = ##/*name:'name' type:gchararray*/, data = ##/*name:'theblob' type:'GdaBlob'*/ WHERE id= ##/*name:'id' type:gint*/";

	show_header ("Update a blob");
	stmt = gda_sql_parser_parse_string (parser, SQL_UPDATE, NULL, error);
	if (!stmt)
		return FALSE;
	if (!gda_statement_get_parameters (stmt, &plist, NULL))
		return FALSE;

	/* blob id */
	param = gda_set_get_holder (plist, "id");
	str = g_strdup_printf ("%d", id);
	if (! gda_holder_set_value_str (param, NULL, str, error))
		return FALSE;
	g_free (str);

	/* blob name */
	param = gda_set_get_holder (plist, "name");
	str = g_strdup_printf ("BLOB_%d", id);
	if (! gda_holder_set_value_str (param, NULL, str, error))
		return FALSE;
	g_free (str);

	/* blob data */
	param = gda_set_get_holder (plist, "theblob");
	value = gda_value_new_blob ((guchar*) data, binary_length);
	if (! gda_holder_set_value (param, value, error))
		return FALSE;
	gda_value_free (value);

	gda_connection_clear_events_list (cnc);
	retval = exec_statement (cnc, stmt, plist, error);
	g_object_unref (stmt);
	g_object_unref (plist);

	return retval;
}
Beispiel #3
0
static void _run_binary_test()
{
	GdaParameterList *plist;
	GdaParameter *param;

	//_create_binary_guid();

	const GValue *guid_value = _select_guid_at_offset(BINARY_TABLE, 14);

	const unsigned char *bguid = (const unsigned char *)g_value_get_string(guid_value);
	gchar *b = NULL;
	guint length = strlen(bguid);
	guint i;

	gchar *_gstr, *gstr;
	gstr = _gstr = g_new(gchar , 34);
	
	for (i = 0; i < length; i++, bguid++) {
	
		unsigned char c = *bguid;
		*(gstr++) = hexdigits[(c>>4)&0xf];
		*(gstr++) = hexdigits[c&0xf];

	}
	*gstr = '\0';


	return;

	if (!guid_value) 
		g_error ("Returned NULL guid value");

	GdaDict *dict = gda_dict_new();
	gda_dict_set_connection (dict , mgd->priv->connection);

	GString *sql = g_string_new ("SELECT guid FROM ");
 	g_string_append_printf (sql, "%s WHERE guid= ##/*name:'guid' type:GdaBinary*/", BINARY_TABLE);

	GdaQuery *query = gda_query_new_from_sql (dict, sql->str, NULL);
	if (!query)
		g_error("Failed to create new query from string");

	plist = gda_query_get_parameter_list (query);

	param = gda_parameter_list_find_param (plist, "guid");

	if (!param)
		g_warning ("Failed to find guid param");

	GValue binval = {0, };
	g_value_init(&binval, GDA_TYPE_BINARY);
	g_value_transform(guid_value, &binval);

        gda_parameter_set_value (param, &binval);

	if (!gda_parameter_is_valid (param))
		g_error ("Guid parameter (with value) is invalid");

	gda_connection_clear_events_list (mgd->priv->connection);

	GError *error = NULL;
	GdaDataModel *model = GDA_DATA_MODEL(gda_query_execute (query, plist, FALSE, &error));

	if (!model)
		g_error("Query returned NULL model");

	if (error)
		g_error ("%s", error->message);

	gda_data_model_dump (model, stdout);

	const GValue *rval = gda_data_model_get_value_at_col_name (model, "guid", 0);
}