请推荐最简单的转换,从整数开始,整数只有0和1到char*,用C语言编写.
我有函数返回0或1作为整数.
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton));
Run Code Online (Sandbox Code Playgroud)
在其他模块中,它是功能和第三个声明.
int set_locals(char* s_setting, char* s_value);
Run Code Online (Sandbox Code Playgroud)
我试着用:
set_locals("my_prop", (char*)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)));
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
我知道如何使用sprintf,但是当这里只有0和1时,也许有人知道更短的方式?
我在Windows上通过VB.NET /ODBC使用PostgreSQL数据服务器,这对于存储/操作数据来说似乎是非常可靠和高度可用的解决方案.
作为初学者,我对何时打开/关闭数据库连接存有疑虑.
例如,我可以在程序启动时打开连接,并在程序执行期间保持打开状态,这可能是几天甚至几个月的持续时间.在这种情况下,我传输连接参考以用于程序中的所有读/写功能.
或者,在其他情况下,我可以打开/关闭每个函数调用或数据库操作的连接,这不需要很长时间,但会带来许多打开/关闭的情况.
现在我想从有经验的用户那里得到更好的推荐方式.
1)在程序执行的所有时间保持打开的连接.
2)每次需要读取/保存数据时连接/关闭.
第二个但相关的问题是当我打开这样的数据库连接时:
Dim conn As New OdbcConnection
conn.ConnectionString = "Dsn=" + dbDsn + _
";database=" + mydatabase + _
";server=" + dbServer + _
";port=" + dbPort + _
";uid=" + dbUser + _
";pwd=" + dbPass
conn.Open()
... etc...
Run Code Online (Sandbox Code Playgroud)
这是一种在程序中稍后找到使用"conn"引用的连接打开确切数据库的方法吗?
我无法在程序启动时可靠地检查 NET/Npgsql 中数据库是否存在。
这是代码:
Public Function dbExists(ByVal _dbName As String) As Boolean
Dim retval As Boolean = False
Using mCon As New NpgsqlConnection(String.Format( _
"Server={0};Port={1};User Id={2};Password={3};", _
dbserver, dbport, "postgres", dbpass))
Try
mCon.Open()
Using nCom = New NpgsqlCommand("SELECT 1 FROM pg_database WHERE datname='" + _dbName + "'", mCon)
retval = CBool(nCom.ExecuteScalar())
End Using
Catch ex As Exception
retval = False
End Try
End Using
Return retval
End Function
Run Code Online (Sandbox Code Playgroud)
无论数据库存在与否,该函数都返回True。我还尝试对 ExecuteScalar 进行 null 检查,获取 Count(*) 以及所有我能做的,但没有更好的结果。
该怎么做才能让它发挥作用?
我有这样的查询列出当前数据库中的表:
SELECT c.relname
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind
IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
pg_catalog.pg_table_is_visible(c.oid)
Run Code Online (Sandbox Code Playgroud)
我试图使用上部SELECT像子查询删除所有这些表:
DROP TABLE IF EXISTS (SELECT c.relname
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind
IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
pg_catalog.pg_table_is_visible(c.oid)) as tname
Run Code Online (Sandbox Code Playgroud)
但那不起作用.
如何编写一个查询将删除显示SELECT查询列出的所有表?
现在我使用DataReader循环查询结果并将表删除一个.
但我认为这可能会"立刻"发生.
我有3个文件my_main.c,my_func.c带有函数,my_func.h带有声明.
在my_main中:
#include "my_func.h"
char* database = "mydatabase";
char* dtable = "mytable";
sql_user(mysql_user_name, mysql_password);
sql_table_length(database, dtable, mysql_user_name, mysql_password);
Run Code Online (Sandbox Code Playgroud)
在my_func.c中
#include "my_func.h"
int sql_user(char* mysql_user_name, char* mysql_password)
{
mysql_user_name = "root";
mysql_password = "1234";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在my_func.h中
#include <my_global.h>
#include <mysql.h>
#include <string.h>
char* mysql_user_name;
char* mysql_password;
int sql_user(char* mysql_user_name, char* mysql_password);
int sql_table_length(char* database, char* dtable, char* mysql_user_name, char* mysql_password);
Run Code Online (Sandbox Code Playgroud)
使用此代码progem编译没有错误,我想从my_func.c文件中的函数获取用户名和密码.但是我得到值0x0,而在主模块中声明的变量是可达和可读的.如何在此配置中获取主要用户名和密码?
在下列情况下,我无法摆脱编译器警告"赋值从整数中生成指针"
int sql_user(char** mysql_user_name, char** mysql_password, char** mysql_server, char **mysql_serverport, char** mysql_socket)
{
int retval = -1;
char **sub;
char *contents;
if(g_file_get_contents("mysqlsrv.def", &contents, NULL, NULL))
{
sub = g_strsplit(contents, "\n", -1);
//here compiler warning: assignment makes pointer from integer without a cast
*mysql_user_name = sub[0];
*mysql_password = sub[1];
*mysql_server = sub[2];
*mysql_serverport = sub[3];
*mysql_socket = sub[4];
if (!strlen(sub[4])) *mysql_socket = NULL;
retval = 0;
}
return retval;
}
Run Code Online (Sandbox Code Playgroud)
另外,在sub [4]中是空字符串("").这里有一种方法可以将NULL保存到文本文件中,以便以后可以将其作为NULL而不使用If(!strlen ... condition?
任何帮助,将不胜感激.