小编Win*_*Too的帖子

C基础知识,将整数0和1转换为char*

请推荐最简单的转换,从整数开始,整数只有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时,也许有人知道更短的方式?

c

1
推荐指数
1
解决办法
149
查看次数

何时打开/关闭数据库连接?

我在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"引用的连接打开确切数据库的方法吗?

postgresql odbc

1
推荐指数
1
解决办法
5382
查看次数

PostgreSQL,使用 Npgsql 获取数据库存在

我无法在程序启动时可靠地检查 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(*) 以及所有我能做的,但没有更好的结果。

该怎么做才能让它发挥作用?

postgresql npgsql

1
推荐指数
1
解决办法
4648
查看次数

PostgreSQL,带查询的删除表

我有这样的查询列出当前数据库中的表:

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循环查询结果并将表删除一个.
但我认为这可能会"立刻"发生.

postgresql

1
推荐指数
1
解决办法
1435
查看次数

C基础知识,传输字符串或指针

我有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,而在主模块中声明的变量是可达和可读的.如何在此配置中获取主要用户名和密码?

c

0
推荐指数
1
解决办法
95
查看次数

C,使用文本文件保存/读取NULL

在下列情况下,我无法摆脱编译器警告"赋值从整数中生成指针"

    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?

任何帮助,将不胜感激.

c

-1
推荐指数
1
解决办法
195
查看次数

标签 统计

c ×3

postgresql ×3

npgsql ×1

odbc ×1