sqlite插入记录值为纯数字的字符串的问题以及sqlite语句中字符串的拼接

当向sqlite数据库中插入某条记录,而这条记录中的某个字段为纯数字的字符串时,在这条记录插入到数据库中时,这个字段的值就有一定几率会被转成数字Y_Y!!

例如下面的代码:

  1. String phone = "18801774974";
  2. String psw = "704430";
  3. String captcha = "025";
  4. ContentValues cv = new ContentValues();
  5. cv.put("phone",phone);
  6. cv.put("psw", psw);
  7. cv.put("captcha", captcha);
  8. getContentResolver().insert(uri, cv);

复制代码

插入到数据库之后,有一定几率会变成下图这样:



本来captcha字段是TEXT,而我传入的也是一个String,但是在实际插入到数据库中时,有一定几率,它会被当做数字来处理,然后前面的“0”就莫名其妙的丢失了#V_V#


遇到这样的情况,推荐的写法是下面这样,可以有效的避免数字字符串被当成数字处理:

  1. String phone = "18801774974";
  2. String psw = "704430";
  3. String captcha = "012";
  4. ContentValues cv = new ContentValues();
  5. cv.put("phone",phone);
  6. cv.put("psw", psw);
  7. cv.put("captcha", ""+captcha);
  8. getContentResolver().insert(uri, cv);

复制代码


顺便记录一条sqlite语句中涉及到字符串拼接的问题。

比如我的数据库里,现在已经被插入了上面描述的这样的“脏数据”

我想要修改一下这些记录,该怎么操作呢?

这时候就用到了字符串连接符——“||”

  1. update order_account set captcha=('0'||captcha) where length(captcha)=2;

复制代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于查询字符串使用SQL列值作为关键字的情况,您可以使用以下方法之一: 1. 使用拼接字符串的方式:您可以将SQL列值与查询字符串拼接在一起,形成完整的查询语句。例如,如果您想要在列名为"username"的表查找包含特定用户名的记录,可以使用类似于以下的代码: ```sql SELECT * FROM your_table_name WHERE username = '要查询的用户名'; ``` 这里的 `'要查询的用户名'` 可以是您从其他地方获取到的值。 2. 使用参数化查询:如果您使用的是编程语言来执行SQL查询,强烈建议使用参数化查询,以避免SQL注入攻击。具体实现方式取决于您使用的编程语言和数据库驱动程序。以下是一个使用参数化查询的示例(使用Python和SQLite): ```python import sqlite3 # 连接到数据库 conn = sqlite3.connect('your_database.db') cursor = conn.cursor() # 准备SQL查询语句 query = "SELECT * FROM your_table_name WHERE username = ?" # 执行查询 username = '要查询的用户名' cursor.execute(query, (username,)) # 获取查询结果 result = cursor.fetchall() # 处理结果 for row in result: print(row) # 关闭连接 cursor.close() conn.close() ``` 这里的 `?` 是参数占位符,通过在 `execute()` 方法的第二个参数传递参数值来填充。这样可以确保输入的值被正确地转义,从而防止SQL注入攻击。 请注意,无论您选择哪种方法,请务必对用户输入进行验证和过滤,以确保安全性和防止潜在的攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值