- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要在插入前将 INET_ATON 添加到 ip 字段
INSERT INTO (`id`,`ip`) VALUES (NULL,'127.0.0.1');
我需要数据库在插入之前透明地转换ip。并在选择中使用 INET_NTOA() 将其转换回来
我无法更改查询以使用
INSERT INTO (`id`,`ip`) VALUES (NULL,INET_ATON('127.0.0.1'));
因为我无法控制执行这些查询的软件
最佳答案
对于插入部分,您可以设置一个 TRIGGER BEFORE INSERT
在数据库中:
DELIMITER |
DROP TRIGGER IF EXISTS `before_insert_ip`|
CREATE TRIGGER `before_insert_ip` BEFORE INSERT ON `table_name`
FOR EACH ROW
BEGIN
SET NEW.`ip` = INET_ATON(NEW.`ip`);
END;
|
delimiter;
SELECT 部分有点棘手。 mysql 中没有 AFTER SELECT
触发器,您可以使用它在途中将 IP 转换回应用程序代码。
相反,您可以重命名真实表并将其隐藏在 VIEW
后面:
RENAME TABLE `table_name` TO `table_name_real`;
CREATE OR REPLACE VIEW `table_name` (`id`, `ip`) AS
SELECT `id`, INET_NTOA(`ip`) AS `ip` FROM `table_name_real`;
注意:使用此VIEW
时,需要修改INSERT
部分的TRIGGER
为使用 table_name_real
而不是 table_name
关于MySQL 触发器 - 插入前的 INET_ATON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428165/
//变量 $stat_ip 位于表 Hasoffers 中,要检查它是否位于列值 network_start_ip 和 network_end_ip 之间,后者位于另一个名为 Blacklisted
当我尝试使用 INET_ATON 函数将 IP 作为整数插入数据库时: insert into network (NwID,IP,Subnetz) values ('1','INET_ATON(1
在我的数据库中,我使用 INET_ATON 存储 IP (ipv4)
我有这个运行良好的代码: #include #include #include int main(int argc, char *argv[]) { struct in_addr add
我正在尝试根据给定的命令行参数初始化套接字,argv1 是 ip,argv2 是端口。端口可以根据需要工作,但创建 IP 地址是问题。预期输入为 ./client.out 10.5.10.20 8
我的脚本是: foreach (@missing) { my $ipdone = $_; $sth = $dbh->prepare("UPDATE tbl_ips SET search
在 Mysql 数据库中,我有一个表,我试图在其中存储 IPv4 地址。该表由两列组成:“_id”(主键)和一个整数列,我想在其中使用 INET_ATON 存储 ip 地址。我使用以下命令将记录插入到
我正在向日志表中插入数据,包括 IP 地址。由于某种原因,IP 列有时为 NULL。在大多数情况下(所有记录的 99.9%)IP 被正确记录。 IP 使用 inet_aton() 函数存储在一个无符号
我应该是瞎了,因为我在 ubuntu 和 debian 的发行版中找不到这些命令,也没有包含它们的包。 我应该自己用 C 编写代码和编译它们(或者用 perl 或其他任何语言编写或查找此代码)还是它(
我想将一串IP地址转换成对应的十六进制数。下面是这样做的程序,但我得到了倒数。例如,如果字符串为 128.2.194.242,则结果为 f2c20280。当我尝试使用 inet_ntoa 从十六进制字
我需要在插入前将 INET_ATON 添加到 ip 字段 INSERT INTO (`id`,`ip`) VALUES (NULL,'127.0.0.1'); 我需要数据库在插入之前透明地转换ip。并
我正在将一些为 linux 系统编写的代码转换为 windows 系统。我正在为我的 Windows 系统使用 C++,并且想知道函数 inet_aton 的等价物。 最佳答案 Windows 支持
是 inet_aton线程安全?我知道根据 UNP POSIX 不需要很多 Sockets API 是线程安全的,所以我必须假设它们不是,但一般来说我怎么知道某些东西在 Perl 中是否是线程安全的?
我正在尝试将 IP 地址存储到我的数据库中,并且我正在使用 INET_ATON,如下所示, $sql = " INSERT INTO pin ( page_id, user_id,
我有一个 MySQL 查询 SELECT * FROM table WHERE INET_ATON("10.0.0.1") BETWEEN INET_ATON(s_ip) AND INET_ATON(
我正在使用 inet_aton 将 IPv4 IP(216.12.207.142) 转换为字符串 3624718222。为此我使用了以下代码: ip_dec = unpack('>L', inet_a
我正在寻找一些函数来验证给定的字符串是否是有效的 ipv4 地址,但 inet_aton() 似乎对“11”和“1.1”这样的字符串很满意 验证 ipv4 字符串的最佳方法是什么。 #include
inet_aton 难道不应该规范化互联网地址的点版本吗?为什么我得到以下示例的不同输出值? int main(){ char USER_IP[16] = "192.168.002.025";
是否有必要在 MySQL 中使用unsigned 整数列来存储 IP(v4) 地址(已使用 INET_ATON 转换)? 我会自发地认为这真的无关紧要,因为无论该字段如何定义,相同的数据都将用于通过
有没有办法执行 mysql select 查询,例如: select INET_ATON(ip_address), id from table ... 由于列中的 IP 无效而导致 INET_ATON
我是一名优秀的程序员,十分优秀!