当前位置:编程学习 > JAVA >>

百度开发者平台java链接数据库问题

我的本地项目中。都是用DB.JAVA来设置数据库的。怎么改成能在百度平台能用的啊
我的百度平台数据库名字是:XvcHUKJAEYILyQtkXebj
项目域名是:tedrenren.duapp.com
我的DB.JAVA 文件
package com.ted.wy;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DB {
public static Connection getConn()
{
Connection conn=null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/ted");
try {
conn = ds.getConnection();

catch (SQLException e) {
e.printStackTrace();
}
}
catch (NamingException e) {
e.printStackTrace();
}
return conn;
}

public static Statement createStmt(Connection conn)
{
Statement stmt=null;
try {
stmt = conn.createStatement();
} catch (SQLException e) {
  e.printStackTrace();
}

return stmt;
}

public static ResultSet executeQuery(Statement stmt,String sql)
{
ResultSet rs=null;
try {
rs= stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}

public static void close(Connection conn)
{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn=null;
}

public static void close(Statement stmt)
{
if(stmt!=null)
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt=null;
}

public static void close(ResultSet rs)
{
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs=null;
}



public static PreparedStatement prepareStmt(Connection conn, String sql) {
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pstmt;
}

}
求大神修改下啊!谢谢! --------------------编程问答-------------------- 木有人啊~~ --------------------编程问答--------------------
求大神啊 --------------------编程问答-------------------- 你的程序里用的是JDBC连接,你要连到百度的数据库上,你就需要使用百度提供的数据库开放API, 以及相应的接口。那么百度自己的数据库是按照JDBC的形式开发的么? 如果不是的话你就要重写数据库连接和操作的代码。 --------------------编程问答-------------------- 百度给的例子是这样的,貌似是JSP文件啊,我想弄成java的,就是用一个类管理数据库操作的。
不知道咋修改,请大神一定帮帮忙!

我的百度平台数据库名字是:XvcHUKJAEYILyQtkXebj
 项目域名是:tedrenren.duapp.com

<%
        //(1)指定服务地址,其中dbname需要自己修改
        //String dbUrl = "jdbc:mysql://sqld.duapp.com:4050/dbname";
        //(2)直接从请求header中获取ip、端口、用户名和密码信息
//String host = request.getHeader("BAE_ENV_ADDR_SQL_IP");
//String port = request.getHeader("BAE_ENV_ADDR_SQL_PORT");
//String username = request.getHeader("BAE_ENV_AK");
//String password = request.getHeader("BAE_ENV_SK");
       //(3)从线程变量BaeEnv接口获取ip、端口、用户名和密码信息
String host = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_ADDR_SQL_IP);
String port = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_ADDR_SQL_PORT);
String username = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_AK);
String password = BaeEnv.getBaeHeader(BaeEnv.BAE_ENV_SK);
String driverName = "com.mysql.jdbc.Driver";
String dbUrl = "jdbc:mysql://";
String serverName = host + ":" + port + "/";
 
        //从平台查询应用要使用的数据库名
String databaseName = "mCMiaZybhmnkeuAMtBSq";
String connName = dbUrl + serverName + databaseName;
String sql = "select * from mxs_test_table";
 
Connection connection = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(driverName);
                //具体的数据库操作逻辑
connection = DriverManager.getConnection(connName, username,
password);
stmt = connection.createStatement();
rs = stmt.executeQuery(sql);
String id = "", name = "", pwd = "";
while (rs.next()) {
id = rs.getString("id");
name = rs.getString("uname");
pwd = rs.getString("pwd");
}
} catch (ClassNotFoundException ex) {
// 异常处理逻辑
} catch (SQLException e) {
// 异常处理逻辑
 
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
 
}
}
 %> --------------------编程问答-------------------- 这个程序你在容器里跑过没,有没有报错? --------------------编程问答-------------------- 我是一个大三学生,做了个JSP小网站,想把它弄在百度平台上。结果卡在数据库这块了。 --------------------编程问答-------------------- 最开始我的代码能在本地的tomcat下运行。就是想把它弄在网上。。。。 --------------------编程问答-------------------- 我在本地试验一下吧,一会儿告诉你结果 --------------------编程问答-------------------- 试验了一番,貌似相当之麻烦,你需要:

1. 申请一个百度账户,并创建一个Web应用
2. 将应用托管到BAE平台(采用Java模式)
3. 选择创建一个MySQL数据库(一个月免费1G容量, 256m内存)
4. 编写Web程序,并通过SVN上传到BAE托管项目地址

相信前三步你已经搞定了,第四步需要用的SVN

由于百度BAE指明了不支持jndi, 所以你的本地程序的ctx肯定是不能用的。
关于百度给出的JSP的那个例子,其中的(2)和(3)都需要在运行时获取BAE,然后再调用,所以明显不适合你本机调试,因此(1)中的方法比较实用,直接用域名+用户名和密码

不过百度Web应用直接通过域名+用户名和密码的方式我还没有试验出来,根据百度的说明,我都不知道他们是不是关闭了散户应用的域名,这些还有待研究。

另外,百度应用主页上有个SSH的例子,说是上传了就能用,你可以试一试 --------------------编程问答--------------------
引用 9 楼 huangxiaofei 的回复:
试验了一番,貌似相当之麻烦,你需要:

1. 申请一个百度账户,并创建一个Web应用
2. 将应用托管到BAE平台(采用Java模式)
3. 选择创建一个MySQL数据库(一个月免费1G容量, 256m内存)
4. 编写Web程序,并通过SVN上传到BAE托管项目地址

相信前三步你已经搞定了,第四步需要用的SVN

由于百度BAE指明了不支持jndi, 所以你的本地程序的ctx……


先谢谢你这么认真回答我们新手的问题!
每个项目百度都分配了域名的,我的项目就是:tedrenren.duapp.com

我一会儿去主页上看看~ --------------------编程问答-------------------- 不知道 楼主解决了  没有?能否分享下,我也是这样的问题,对百度很无语,还是怪自己的能力问题。想在本地调试,不想写个jsp。 --------------------编程问答--------------------
引用 11 楼 ouzengqi2010 的回复:
不知道 楼主解决了  没有?能否分享下,我也是这样的问题,对百度很无语,还是怪自己的能力问题。想在本地调试,不想写个jsp。


来晚了。。。
不知道楼主问题解决没有?
其实不用这么麻烦,数据库的url、user、password都是不会变的。
	private static final String DRIVERNAME = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://sqld.duapp.com:4050/GUZhpiTXihEJJgYpIWHz";
private static final String USER = "t8gCcU8htrF2nErhKlggXIKt";
private static final String PWD = "VBdqaX2VYrjcaSWeLEEEfENN5X9mDzeb";

URL后面的数据库名只有你自己能看到,前面那一段相同
USER就是API Key
PWD就是Secret Key//这两个东西你在web应用管理那可以看到,那里还有个重置按钮可以重置这两个东西,看到没?
没找到的话你可以import com.baidu.bae.api.util.BaeEnv; 导入这个包,按照它提示的来。只是BaeEnv这个类你没办法导入到本地。
反正我是直接写成常量了。。。 --------------------编程问答--------------------
引用 12 楼 Left_you 的回复:
Quote: 引用 11 楼 ouzengqi2010 的回复:

不知道 楼主解决了  没有?能否分享下,我也是这样的问题,对百度很无语,还是怪自己的能力问题。想在本地调试,不想写个jsp。


来晚了。。。
不知道楼主问题解决没有?
其实不用这么麻烦,数据库的url、user、password都是不会变的。
	private static final String DRIVERNAME = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://sqld.duapp.com:4050/GUZhpiTXihEJJgYpIWHz";
private static final String USER = "t8gCcU8htrF2nErhKlggXIKt";
private static final String PWD = "VBdqaX2VYrjcaSWeLEEEfENN5X9mDzeb";

URL后面的数据库名只有你自己能看到,前面那一段相同
USER就是API Key
PWD就是Secret Key//这两个东西你在web应用管理那可以看到,那里还有个重置按钮可以重置这两个东西,看到没?
没找到的话你可以import com.baidu.bae.api.util.BaeEnv; 导入这个包,按照它提示的来。只是BaeEnv这个类你没办法导入到本地。
反正我是直接写成常量了。。。


我晕,数据库暴露了,求不黑~ --------------------编程问答-------------------- 可以在本地测试???? --------------------编程问答--------------------
引用 14 楼 ShengCunZhongDeMC 的回复:
可以在本地测试????
不可以我尝试过,没有云环境,必须放在云环境里 --------------------编程问答--------------------
引用 13 楼 Left_you 的回复:
Quote: 引用 12 楼 Left_you 的回复:

Quote: 引用 11 楼 ouzengqi2010 的回复:

不知道 楼主解决了  没有?能否分享下,我也是这样的问题,对百度很无语,还是怪自己的能力问题。想在本地调试,不想写个jsp。


来晚了。。。
不知道楼主问题解决没有?
其实不用这么麻烦,数据库的url、user、password都是不会变的。
	private static final String DRIVERNAME = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://sqld.duapp.com:4050/GUZhpiTXihEJJgYpIWHz";
private static final String USER = "t8gCcU8htrF2nErhKlggXIKt";
private static final String PWD = "VBdqaX2VYrjcaSWeLEEEfENN5X9mDzeb";

URL后面的数据库名只有你自己能看到,前面那一段相同
USER就是API Key
PWD就是Secret Key//这两个东西你在web应用管理那可以看到,那里还有个重置按钮可以重置这两个东西,看到没?
没找到的话你可以import com.baidu.bae.api.util.BaeEnv; 导入这个包,按照它提示的来。只是BaeEnv这个类你没办法导入到本地。
反正我是直接写成常量了。。。


我晕,数据库暴露了,求不黑~



这样可以了吗? --------------------编程问答--------------------
引用 15 楼 ouzengqi2010 的回复:
Quote: 引用 14 楼 ShengCunZhongDeMC 的回复:

可以在本地测试????
不可以我尝试过,没有云环境,必须放在云环境里

什么事云环境啊? --------------------编程问答--------------------  

引用 13 楼 Left_you 的回复:
Quote: 引用 12 楼 Left_you 的回复:

Quote: 引用 11 楼 ouzengqi2010 的回复:

不知道 楼主解决了  没有?能否分享下,我也是这样的问题,对百度很无语,还是怪自己的能力问题。想在本地调试,不想写个jsp。


来晚了。。。
不知道楼主问题解决没有?
其实不用这么麻烦,数据库的url、user、password都是不会变的。
	private static final String DRIVERNAME = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://sqld.duapp.com:4050/GUZhpiTXihEJJgYpIWHz";
private static final String USER = "t8gCcU8htrF2nErhKlggXIKt";
private static final String PWD = "VBdqaX2VYrjcaSWeLEEEfENN5X9mDzeb";

URL后面的数据库名只有你自己能看到,前面那一段相同
USER就是API Key
PWD就是Secret Key//这两个东西你在web应用管理那可以看到,那里还有个重置按钮可以重置这两个东西,看到没?
没找到的话你可以import com.baidu.bae.api.util.BaeEnv; 导入这个包,按照它提示的来。只是BaeEnv这个类你没办法导入到本地。
反正我是直接写成常量了。。。


我晕,数据库暴露了,求不黑~




谢谢。。这样是可以的。。。。 --------------------编程问答-------------------- import com.baidu.bae.api.util.BaeEnv;请问楼主这个包在哪里下载,我找了半天没找到。。。也许这个问题很白痴,麻烦楼主了,谢谢 --------------------编程问答--------------------
引用 19 楼 biwoheihei 的回复:
import com.baidu.bae.api.util.BaeEnv;请问楼主这个包在哪里下载,我找了半天没找到。。。也许这个问题很白痴,麻烦楼主了,谢谢


这个把eclipse插件配置好就带有相关包了,也包含这个包。http://developer.baidu.com/wiki/index.php?title=docs/cplat/ide/install这是插件配置的相关介绍,可以参考一下。 --------------------编程问答--------------------
引用 18 楼 feiazifeiazi 的回复:
 

Quote: 引用 13 楼 Left_you 的回复:

Quote: 引用 12 楼 Left_you 的回复:

Quote: 引用 11 楼 ouzengqi2010 的回复:

不知道 楼主解决了  没有?能否分享下,我也是这样的问题,对百度很无语,还是怪自己的能力问题。想在本地调试,不想写个jsp。


来晚了。。。
不知道楼主问题解决没有?
其实不用这么麻烦,数据库的url、user、password都是不会变的。
	private static final String DRIVERNAME = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://sqld.duapp.com:4050/GUZhpiTXihEJJgYpIWHz";
private static final String USER = "t8gCcU8htrF2nErhKlggXIKt";
private static final String PWD = "VBdqaX2VYrjcaSWeLEEEfENN5X9mDzeb";

URL后面的数据库名只有你自己能看到,前面那一段相同
USER就是API Key
PWD就是Secret Key//这两个东西你在web应用管理那可以看到,那里还有个重置按钮可以重置这两个东西,看到没?
没找到的话你可以import com.baidu.bae.api.util.BaeEnv; 导入这个包,按照它提示的来。只是BaeEnv这个类你没办法导入到本地。
反正我是直接写成常量了。。。


我晕,数据库暴露了,求不黑~




谢谢。。这样是可以的。。。。

我的老是这样的问题
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
怎么解决呢 --------------------编程问答-------------------- 请楼主帮帮忙,用他的数据库一直都没有弄好,要崩溃了 --------------------编程问答-------------------- 怎么把ssh2的项目发到BAE上面 --------------------编程问答--------------------
引用 6 楼 zzxy001 的回复:
我是一个大三学生,做了个JSP小网站,想把它弄在百度平台上。结果卡在数据库这块了。

我也是一名大三学生,http://blog.csdn.net/df1012890048/article/details/14424401希望对你有帮助
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,