web项目之BBS发布至新浪云配置修改以及sql语句修改问题小结

将在myeclipse写好的web项目发布到新浪云服务器上,需要修改一些文件以及代码,我们是以tomcat为服务器的,数据库选用的是oracle,但是新浪云采用的是 mySQL,很显然,使用JNDI配置Tomcat的数据连接池是用不了的,基于oracle的简单sql语句,mySQL也可以运行,但是分页、伪列、序列、都是不被支持的,将oracle语句转为mySQL语句,请看链接:   <a target=_blank href="http://http//user.qzone.qq.com/377513462?ptlang=2052" target="_blank" style="font-family: Arial, Helvetica, sans-serif;">oracle语句转mysql语句所遇到的问题</a>
第一期项目看来没让我受够教训,这次居然直接在源码上改的,忘了备份,导致每次需要看页面都要上传新浪云,没豆子了呀~~~希望大家谨记。
这个是基于oracle数据库的查询语句,将mySQL转换回来的时候,只记得改语句,忘了参数的位置和值的计算,报出错误,无效的列索引。看了好一会才注意到是这里的问题。
<pre name="code" class="java">int max=pagesize*pageno;
		int min=0;
		if(pageno!=1){
			min=max-1;
		}
		String sql="select topicid,title,content,publishtime,modifytime,tbl_topic.userid,boardid,uname from tbl_topic join tbl_user on tbl_user.userid=tbl_topic.userid where boardid=? limit ?,?";
		List<Object> params=new ArrayList<Object>();
		params.add(bid);
		params.add(min);
		params.add(max);

mySQL的语句简单明了一些,特别是分页,limit 就解决了需要依靠伪列来解决同样问题的oracle 。

 
//分页查询   topic 信息
	public List<Topic> findlist(Integer bid,  Integer pageno,Integer pagesize) {
		//注意这里的max 和 min 与 mySQL 不一致
		List<Topic> list=null;
		int max=pagesize;
		int min=(pageno-1)*pagesize+1;
		
		String sql="select * from (select A.*,ROWNUM RN from (select topicid,title,content,publishtime,modifytime,tbl_topic.userid,boardid,uname from tbl_topic join tbl_user on tbl_user.userid=tbl_topic.userid where boardid=?) A  where ROWNUM <=? ) where RN >=?";
		List<Object> params=new ArrayList<Object>();
		params.add(bid);
		params.add(max);
		params.add(min);
		
		
		
		try {
			list=db.findMutiObject(Topic.class, sql, params);
			
			if(list!=null){
				for(Topic c:list){
					String topicid=c.getTopicid();
					sql="select count(*) from tbl_reply where topicid=? ";
					params.clear();
					params.add(topicid);
					int replycount=(int)db.findDouble(sql, params);
					c.setReplycont(replycount);
				}
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	
		return list;
	}


 --分页查询bid 对应的  所有topic 和topic对应的发帖人
select * from (
	select A.*,ROWNUM RN from (
 		select topicid,title,content,publishtime,modifytime,tbl_topic.userid,boardid,uname from
 			tbl_topic join tbl_user on tbl_user.userid=tbl_topic.userid 
 			where boardid=7
 	) A  where ROWNUM <=3 
 ) where RN >=1;

好了,上面是从新浪云转为 tomcat的小问题解决。下面我们看如何将tomcat服务器上的应用发布到云端。新浪云 文档中心:

SAE的MySQL数据库提供了主从数据库,我们可以向主数据库写数据,同时从从库里面读取数据。你可以使用原生态的JDBC来操作数据库,同样你也可以使用hibernate这种持久层框架来操作数据库。 下面给出两个JDBC操作数据库的例子

// 使用主库写数据 使用SaeUserInfo提供的静态方法获取应用的AccessKey和SecretKey
String username=SaeUserInfo.getAccessKey();
String password=SaeUserInfo.getSecretKey();
String driver="com.mysql.jdbc.Driver";
Class.forName(driver).newInstance();
Connection con=DriverManager.getConnection(url,username,password);

// 使用从库读数据
String URL="jdbc:mysql://r.rdc.sae.sina.com.cn:3307/app_myappname";
String sql = "SELECT * FROM app_table";
// 通过SaeUserInfo提供的静态方法获取应用的access_key和secret_key
String Username=SaeUserInfo.getAccessKey();
String Password=SaeUserInfo.getSecretKey();
String Driver="com.mysql.jdbc.Driver";
Class.forName(Driver).newInstance();
Connection con=DriverManager.getConnection(URL,Username,Password);
<img src="https://img-blog.csdn.net/20150412001326383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZW1pbHlSUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
点击服务管理==》管理mySQL,进入网页版、操作你的数据库啦~~~

好啦~~~今天就到这里,记住,每一次的错误都是在为你的成功铺路,最重要是学会自己分析问题、解决问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值