如何在特定字符串中保存Mysql查询

时间:2014-02-03 11:59:25

标签: mysql smartfoxserver

我正在使用smart fox server.where我将此服务器连接到My sql数据库。

此查询在My sql命令行中正常运行但是当我在服务器端写入此查询时获取error.i知道错误在%emp_id%.Here emp_id是常量。 我正在尝试这种方式,但仍然会出错。

String sql="
SELECT emp_first_name
     , emp_last_name
     , msg_title
     , msg_body 
  FROM message_master 
  JOIN emp_master 
    ON emp_master.emp_id = message_master.empmsgsender_id 
   AND message_master.emp_id IN(SELECT emp_id 
                                  FROM message_master 
                                 WHERE emp_id LIKE %'"+emp_id+"'%)";

   @Override
public void handleClientRequest(User user, ISFSObject isfso) 
{
try
{
    trace("within request for message");
    String emp_id=isfso.getUtfString("uid");
    trace( "Employee_id:"+emp_id);

//    String sql="SELECT emp_first_name,emp_last_name,msg_title,msg_body from message_master inner join emp_master ON emp_master.emp_id=message_master.empmsgsender_id AND message_master.emp_id='"+emp_id+ "' LIMIT 10";
    String sql="SELECT emp_first_name,emp_last_name,msg_title,msg_body from message_master inner join emp_master ON emp_master.emp_id=message_master.empmsgsender_id AND message_master.emp_id IN(SELECT emp_id from message_master where emp_id LIKE %emp_id%)";
    trace("After sql query");
    sfsdb=getParentExtension().getParentZone().getDBManager();
    conn=sfsdb.getConnection();
    trace("connection established");
    ps=conn.prepareStatement(sql);
    rs=ps.executeQuery();

    trace("After resultset");

1 个答案:

答案 0 :(得分:0)

我很困惑。该查询与此有何不同......

String sql="
SELECT emp_first_name
     , emp_last_name
     , msg_title
     , msg_body 
  FROM message_master m
  JOIN emp_master e
    ON e.emp_id = m.empmsgsender_id 
 WHERE m.empid LIKE '%emp_id%'; -- and why are you using `LIKE`???
 "; 

(这不是答案,但我想利用格式化选项)