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="http://img.blog.csdn.net/20150412001326383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZW1pbHlSUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
点击服务管理==》管理mySQL,进入网页版、操作你的数据库啦~~~

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

时间: 2024-10-26 22:37:36

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

.NET WEB项目的调试发布相关

最近接触了.NET WEB项目,调试的时候因为没配置好文件浪费了些时间,特此记录一下相关配置,以后备用 如果IIS的基目录指向了别处,在build以后必须要发布,其实就是把最新的程序更新到IIS的基目录里. 大概有这几个要注意的地方,还有一点有时候JS文件在发布以后,IIS基目录虽然反映了,但还是要手动加载一遍才可以.

使用Nginx+Lua实现Web项目的灰度发布

使用Nginx+Lua实现Web项目的灰度发布 Nginx编译安装Lua模块 一.安装LUA环境及相关库 官方网站:https://github.com/openresty/lua-nginx-module 1.LuaJIT wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz make && make install PREFIX=/usr/local/LuaJIT # vim /etc/profile export LUAJIT_LIB

Mac下Intellij IDea发布Java Web项目详解四 为所有Module配置Tomcat Deployment

准备工作1:新建第一个JavaWeb项目 准备工作2:新建Module step5 为所有项目配置Deployment 5.1 如图 5.2 [+][Artifact] 5.3 将这里列出的所有内容选中后,点[OK] 5.4 选完是这样,表示,这三个java ee 项目会在tomcat启动后,自动发布到Application context路径下. 5.5 为每个web项目设置Application context [WebWorkSpace1]-[/]=== [http:localhost:p

Web项目或WCF发布IIS后,如何通过VS2010调试

在做项目的时候,例如WCF服务一般都会将WCF服务承载于控制台应用程序,或者WinForm窗体应用程序,因为这样可以直接在服务代码上打断点,然后就可以调试了.但是项目已经发布了,当然这里我用的本机进行测试的,比如Web项目,或者WCF服务都发布于IIS后,有时候代码中会有意想不到的错误,有时候又必需通过调试才能解决问题,那么如何进行调试呢. 我这里是Win7+VS2010+IIS7.0. 首先通过IIS进行浏览Web网站的时候,在VS2010相应文件上已F9做好断点处理的操作,然后可以通过 这样

web项目脱离Eclipse在Tomcat部署并配置Eclipse调试

简单来说,把WEB项目打成war包后放到webapps目录下启动tomcat便部署成功了,但是因为与Eclipse没有关联,故而无法Debug调试代码.这时在Tomcat的catalina.sh脚本里面配置如下代码: JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=10096,server=y,suspend=n" 这样就Tomcat就对外提供了一个可以连接的端口10096,在

安卓开发学习历程1——《第一行代码》coolweather项目setOnItemClickListener函数,Sql语句修改对模拟app程序机影响

今天,将<第一行代码>最后实战的coolweather项目,认真做了一遍. 今晚,在书中第一阶段开发代码认眞在Android studio敲完,发现setOnItemClickListener函数按照书中报错,原书如下所示: 但这样,报错,gradel提示该类不存在,现在还不清楚是不是因为作者版本太旧的原因,有待查证,后面,我用了下面方法,就编译通过,如下: 其实,我就是调用了AdapterView里面的OnItemClickListener方法而已. 此外,还发现一个问题,那就是我在grad

ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^ 工具/原料 Visual Studio 2010  ( 其他 VS 开发环境类似 ) 完成的项目程序 方法/步骤 在要发布的项目上右击,选择[发布]   在发布Web对话框中,选择发布方法为文件系统   选择要发布的路径,点击[发布]   在发布路径下,已经生成了发布的文件系统 然后就可以在IIS上发布网站啦  #^_^# END 注意事项 发布好的程序,

eclipse中的web项目路径和发布好的项目路径

现在企业开发中,我们都会创建一个javaWeb工程,在eclipse中指的是新建一个dynamic web project,创建完工程之后,我们在IDE中大体看到如下的工程目录: 我们主要关心的文件夹有src.WebContent.WEB-INF.test等. src:存放我们写的java文件,以包来区分相同的文件 WebContent:发布的文件夹 WEB-INF:被设计为安全的文件夹,如果一些内容必须通过后台才能被访问,则存放在此文件夹下 test:用户创建的用户目录,可以来存放具体的前台文

web项目之BBS流程解析(无servlet、filter)

最近课程穿插了微信开发,bbs的项目也是断断续续地,难得地趁着自习时间写点博客记录.这个bbs版本比较简单,主要是显示版块.版块下的话题,发表话题.针对话题发表回复等等.主要的就是理解整个的流程. 我们按照最初进入bbs的顺序来讲解. 1.进入reg.jsp. 一个简单的注册页面,表单提交用户名和密码,页面加入验证码,这个是借鉴网上的js验证码,有纯数字.中文.混合的验证码,具体不介绍. 将用户名和密码传给doReg.jsp,调用封装好的 RequestUtil工具包,将request 的参数转