将32位数字写入SQLITE3数据库(C)

将32位数字写入SQLITE3数据库(C),c,tcp,sqlite,network-programming,C,Tcp,Sqlite,Network Programming,我有一个程序,当将32位无符号int值存储在SQLITE3数据库中时,它会从线路上读取这些值,然后检索它们,但是数据在线路的某个地方丢失了 // The data is captured off the wire //Stored and printed as a 32-bit number int32_t seq_num = ntohl(tcp->th_seq); // tcp->th_seq is the number printf("Seq Num: %" PRIu32 "

我有一个程序,当将32位无符号int值存储在SQLITE3数据库中时,它会从线路上读取这些值,然后检索它们,但是数据在线路的某个地方丢失了

// The data is captured off the wire

//Stored and printed as a 32-bit number 
int32_t seq_num = ntohl(tcp->th_seq); // tcp->th_seq is the number
printf("Seq Num: %" PRIu32 "\n", seq_num);

// Function delcaration (variable as 32bit int)
void addPacket(int table, char *srcIP, char *dstIP, int port, int32_t seq_num);

// Function called with 32bit sequence number
addPacket(0, result1, result2, ntohs(tcp->th_dport), seq_num);
这是SQLITE create database语句:

sql1 = "CREATE TABLE synpackets ("  \
       "id INTEGER PRIMARY KEY AUTOINCREMENT," \
       "srcIP VARCHAR(64)," \
       "dstIP VARCHAR(64)," \
       "dstPort int(4)," \
       "seq int(64)," \ // Could this be the problem?
       "timestamp DATETIME DEFAULT CURRENT_TIMESTAMP);";
sqlite3_bind_int64(stmt, 4, seq_num);
这就是我在INSERT语句中绑定参数的方式:

sql1 = "CREATE TABLE synpackets ("  \
       "id INTEGER PRIMARY KEY AUTOINCREMENT," \
       "srcIP VARCHAR(64)," \
       "dstIP VARCHAR(64)," \
       "dstPort int(4)," \
       "seq int(64)," \ // Could this be the problem?
       "timestamp DATETIME DEFAULT CURRENT_TIMESTAMP);";
sqlite3_bind_int64(stmt, 4, seq_num);
当我在执行
选择*.
时读取返回的数字时,我得到的是一些负数,而不是我想要输入的值:

这是在它进入数据库之前发生的原始捕获:

Packet number 38:
Seq Num: 1118349056

Packet number 39:
Seq Num: 768809646
id = 1
seq = 1118349056

id = 2
seq = -1752457962
这是同一个数据包,但在从数据库检索到它之后,

Packet number 38:
Seq Num: 1118349056

Packet number 39:
Seq Num: 768809646
id = 1
seq = 1118349056

id = 2
seq = -1752457962

我已经查看了数据库文件,它的负数正在写入表中,所以这不仅仅是一个打印错误。当我尝试将32位数字插入数据库时,似乎出现了一些问题,但我不确定是什么

让我们首先认识到,
int32\u t
不是无符号类型。哦,我从中复制的想法是,是什么导致了问题?那就是
uint32\u t
。哈,哇,这似乎已经解决了问题,我没有得到任何负数,thanks@TheParamagneticCroissant,你应该写下来作为答案,这样才能被接受。