使用CloudFoundry连接Mysql数据库出现问题

三国vip 发布于 2013/01/09 22:06
阅读 1K+
收藏 0

我在jsp页面中插入以下语句,为什么会出错呢?

错误如下:

javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

<%
String str = "";
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:10100/dabc98d7befac43df8d0bc7d69577718e" +
  "?useUnicode=true&characterEncoding=gb2312&autoReconnect=true&failOverReadOnly=false";
Connection con= DriverManager.getConnection(url,"u7T3cy8R52Xun","pWJpeuwrSiChH");
Statement smt=con.createStatement();
String sql = "select * from admins";
ResultSet rs = smt.executeQuery(sql);
while(rs.next())
{
 str = rs.getString(1);

out.print(str);
}

%>


但是在java文件中直接执行下列语句没问题啊.


String str = "";
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:10100/dabc98d7befac43df8d0bc7d69577718e" +
  "?useUnicode=true&characterEncoding=gb2312&autoReconnect=true&failOverReadOnly=false";
Connection con= DriverManager.getConnection(url,"u7T3cy8R52Xun","pWJpeuwrSiChH");
Statement smt=con.createStatement();
String sql = "select * from admins";
ResultSet rs = smt.executeQuery(sql);
while(rs.next())
{
 str = rs.getString(1);

System.out,print(str);

}

这是为什么呢?是CloudFoundry的问题,还是我这边的问题啊?求高手赐教,感激不尽。

加载中
0
恺哥
恺哥

请参见我的cf学习笔记,看看能不能对你有所帮助

http://my.oschina.net/kzhou/blog/99134

恺哥
恺哥
回复 @曹波 : 多交流、相互学习
三国vip
三国vip
嗯,很有帮助啊,原来我通过service通道获取的那个mysql的用户名跟密码不对啊,那个应该是用于连接数据库建表所用到的用户名跟密码吧?跟程序中用的不一样,用你的那个jsp页面获取的那个才是正确的,谢谢了,问题解决了。
0
xwz
xwz
贴的代码无法确定...
三国vip
三国vip
工程里就这些代码啊?前者是放在jsp页面中的,后者是直接在一个java类中执行的。但是在jsp页面中的那个出现问题。
0
xmqywx
xmqywx

因为你的url pwd name写死了……是要获取动态的,虽然你创建service复制下来的是这些数据。

JSONObject credentials = new JSONObject(VCAP_SERVICES)

 .getJSONArray("mysql-5.1").getJSONObject(0).getJSONObject("credentials");

三国vip
三国vip
原来CF给的mysql可以有两个用户名跟密码啊。问题解决了,谢谢
三国vip
三国vip
你的意思是用户名跟密码是动态分配的?我试了好几次都是一样的啊。而且为什么直接在java代码中执行没问题呢。但是在jsp页面中执行就不行呢。你上面写得那个JSONObject是获取什么的?VCAP_SERVICES这个变量又是哪儿来的啊?
0
sunyh
sunyh
要获取他们的DS
三国vip
三国vip
怎么获取啊?能举个例子吗?
0
sunyh
sunyh
RdbmsServiceInfo mysql = new CloudEnvironment().getServiceInfo("lewole", RdbmsServiceInfo.class);
RdbmsServiceCreator ds = new RdbmsServiceCreator();
dataSource = ds.createService(mysql);
三国vip
三国vip
谢谢
0
Smile月光
Smile月光
用VCAP_SERVICES参数得到的连接信息用Navicat for mysql连接不上,当open Tunnel mysql时得到的信息能连接还能操作数据库。数据源要选择哪个?是用用VCAP_SERVICES参数得到的吗?
三国vip
三国vip
嗯,另一个只是方便让你操作数据库。
返回顶部
顶部