关于mysql查询语句的问题

ps.setInt(2,value) 2表示第二个问号,value是一个数字类型
关于mysql查询语句的问题
这个不是sql语法的要求,而是你的编程语言的要求:
在程序里,整个sql语句就是一字符串,字符串是用“”双引号括起来的,value、mtype都是程序字符串变量,多个字符串衔接时就用加号。
而在sql语法中,字符串使用 ' 单引号括起来的,如'abc',假如value="asd",我们要用value的值(是value的值,而不是“value”这几个字符)'abc'换成就应该是'" value "',但在程序中字符串连接时用+,于是应该写成'"+ value +"',所以单引号+双引号,不是谁在前在后的问题,而应该是看起来“双引号在单引号内”
希望对你理解有帮助2011-11-13
用+号拼接,是为了在加号中间可以放入变量
你说的那种也是可以的

但是在数据库里如果值是字符串或 是日期 要用单引号包围,所以才这样用
如果你用的是preparedstatement会简单很多
按你的问题可以这样写:
PreparedStatement ps=conn.prepareStatement("select * from tb_message where filedname = ? and sort = ?);
再根据你的字段类型选用合适的填值方法就可以了
如果你的filename是字符串类型,sor 是数字类型可以这样写:
ps.setString(1, value) 1表示填充第一个问号 value参数值是一个字符串
ps.setInt(2,value) 2表示第二个问号,value是一个数字类型2011-11-22
fieldName、value、mtype 这些是你定义的String类型变量,他们的值是你传入的。假设fieldName=”myfname“;value="jack";mtype="1"。那么你的语句就等价于:
PreparedStatement ps=conn.prepareStatement("select * from tb_message where myfname='jack' and sort='1'");
如果你直接使用"select * from tb_message where fieldName=value and sort=mtype"的话,你的sql中就无法获取fieldName的值"myfname",你的值就传不进来了。这是为了将fieldName、value、mtype 这些是你定义的String类型变量的值动态的拼入sql语句中。另外字符串类型的的值在sql中要使用单引号包围起来所以你看到的是'"++"'。外面的是单引号,里面是双引号。
(两个字符串拼接是使用+的,例如:
String s = "kac";
String b = ”_aaa";
String d1="hello sb!“;
String d2="hello "+s+b;
那么d1的值就是"hello sb",d2的值就是"hello kac_aaa")。
你可以把你的sql语句打印出来,然后查看sql语句有什么不同就清楚了。2011-11-15
PreparedStatement ps=conn.prepareStatement("select * from tb_message where "+fieldName+" ='"+value+"' and sort='"+mtype+"'");
表达的是 此SQL语句的where后面紧跟的字段、值是可以输入的,而后面的sort字段是不可以改变了的,只能输入它的值
“select * from tb_message where ” ,“=”,“and sort=‘ ”,“ ’ ”是固定的,之间的字段是可以变的了
比如:
select * from tb_message where messageId=2 and sort='1';
select * from tb_message where messageType=3 and sort='1';

应该懂了吧,呵呵2011-11-17
conn.prepareStatement(“”)是一个方法,它的参数是一个字符串;
fieldName,value,mtype都是程序的变量啊;
假设:
fieldName="aa";
value="bb";
mtype="cc";
那么"select * from tb_message where "+fieldName+" ='"+value+"' and sort='"+mtype+"'"这个字符串其实就是"select * from tb_message where aa ='bb' and sort='cc' "
最后就是conn.prepareStatement(" select * from tb_message where aa ='bb' and sort='cc' ")2011-11-17
语句里接收变量的写法。不同编程语言不一样。2011-11-13
mengvlog 阅读 710 次 更新于 2025-10-29 06:00:01 我来答关注问题0
  •  阿暄生活 mysql查询语句select count(id)太慢

    MySQL查询语句SELECT COUNT(id)执行速度慢的问题可以通过多种方式进行优化。首先,表数据量大是导致查询慢的一个重要原因。当表中记录数非常多时,COUNT(id)需要扫描整个表或索引来计算满足条件的记录数,导致耗时较长。针对这种情况,可以考虑使用分区表,将大表的数据分散到多个存储区,从而提高查询效率。

  •  翡希信息咨询 Mysql模糊查询LIKE语句结合CONCAT函数导致索引失效问题

    Mysql模糊查询LIKE语句结合CONCAT函数导致索引失效问题解析 答案:在MySQL中,当使用LIKE语句结合CONCAT函数进行模糊查询时,通常会导致索引失效。这是因为LIKE和CONCAT的组合生成了一个新的字符串,使得MySQL无法直接利用原有的索引进行匹配。详细解析:索引失效的原因:索引无法直接匹配:索引是基于整个值的匹配...

  • 司马铸剑 关于MYSQL语句查询排序的问题

    1、升序排序:使用ORDER BY子句时,默认情况下数据是按升序排列的,故可以用ASC关键字指点升序排列,或者不指定,默认就是升序,显示效果是一样的,如下图:2、降序排序:当需要查询结果降序排列时,必须在排序后指定DESC关键字。如下图是查看职员薪水的降序排列:

  •  武汉誉祥科技 mysql里面 ibatis的like模糊查询问题, 谢谢,请问我的sql语句是否有错,问题是 查询条件可输入可不输入

    在MySQL中使用iBatis进行like模糊查询时,正确的写法应该是:a.LOGIN_NAME LIKE '%$loginName$%'这里,$loginName$代表用户输入的查询条件。如果查询条件为空,则$loginName$为空字符串,此时查询结果为空。如果需要在查询条件可输入可不输入的情况下使用like语句,可以在拼接SQL语句时添加相应的逻辑判断...

  •  阿暄生活 mysql 关联查询 子查询order by子表无效

    MySQL关联查询中子查询的ORDER BY可能会失效。在MySQL中,当进行关联查询时,子查询中的ORDER BY子句可能会不被执行或失效。这主要是因为MySQL标准将子查询视为一个未排序的数据集。以下是关于此问题的详细解释和解决方案:子查询的ORDER BY可能被忽略:根据SQL标准的定义,子查询中的ORDER BY通常会被...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部