在Android中使用JDBC连接远程MySQL
我的源代码如下:在Android中使用JDBC连接远程MySQL,android,mysql,jdbc,Android,Mysql,Jdbc,我的源代码如下: private static final String url = "jdbc:mysql://localhost/db_name"; private static final String user = "xxxx"; private static final String pswd = "xxxx"; private static final String sql = "SELECT * FROM table_name"; /** Called
private static final String url = "jdbc:mysql://localhost/db_name";
private static final String user = "xxxx";
private static final String pswd = "xxxx";
private static final String sql = "SELECT * FROM table_name";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout linLayMain = new LinearLayout (this);
TextView txtViewMainTitle = new TextView (this);
TextView txtViewAdminName = new TextView (this);
TextView txtViewAdminPswd = new TextView (this);
txtViewMainTitle.setText ("Main Title : NONE");
txtViewAdminName.setText ("Admin Name : NONE");
txtViewAdminPswd.setText ("Admin Password : NONE");
try
{
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection con = (Connection) DriverManager.getConnection (url, user, pswd);
txtViewMainTitle.setText ("Main Title : JDBC Connection Sccess");
Statement st = con.createStatement ();
ResultSet rs = st.executeQuery (sql);
while (rs.next ())
{
txtViewAdminName.setText ("Admin Name : " + rs.getInt (1));
txtViewAdminPswd.setText ("Admin Pswd :" + rs.getString (2));
}
}
catch (Exception e)
{
Log.i ("Test GoSport", "Jdbc Error : " + e.getMessage());
e.printStackTrace ();
}
linLayMain.addView (txtViewMainTitle);
linLayMain.addView (txtViewAdminName);
linLayMain.addView (txtViewAdminPswd);
txtViewMainTitle.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
txtViewAdminName.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
txtViewAdminPswd.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
setContentView (linLayMain);
}
但是,它以前从未成功过。当我在DDMS中看到Log.I时,它总是显示“JDBC连接错误”
我的环境如下:
private static final String url = "jdbc:mysql://localhost/db_name";
private static final String user = "xxxx";
private static final String pswd = "xxxx";
private static final String sql = "SELECT * FROM table_name";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout linLayMain = new LinearLayout (this);
TextView txtViewMainTitle = new TextView (this);
TextView txtViewAdminName = new TextView (this);
TextView txtViewAdminPswd = new TextView (this);
txtViewMainTitle.setText ("Main Title : NONE");
txtViewAdminName.setText ("Admin Name : NONE");
txtViewAdminPswd.setText ("Admin Password : NONE");
try
{
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection con = (Connection) DriverManager.getConnection (url, user, pswd);
txtViewMainTitle.setText ("Main Title : JDBC Connection Sccess");
Statement st = con.createStatement ();
ResultSet rs = st.executeQuery (sql);
while (rs.next ())
{
txtViewAdminName.setText ("Admin Name : " + rs.getInt (1));
txtViewAdminPswd.setText ("Admin Pswd :" + rs.getString (2));
}
}
catch (Exception e)
{
Log.i ("Test GoSport", "Jdbc Error : " + e.getMessage());
e.printStackTrace ();
}
linLayMain.addView (txtViewMainTitle);
linLayMain.addView (txtViewAdminName);
linLayMain.addView (txtViewAdminPswd);
txtViewMainTitle.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
txtViewAdminName.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
txtViewAdminPswd.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
setContentView (linLayMain);
}
Mac OS X 10.7.2,
Eclipse Java EE Indigo,
mysql-connection-java-5.1.18-bin.jar,
emulator 4.0.3,API 15这并不是一个真正的答案,但我记得当我第一次开始使用Android编程时,我被告知不要直接连接远程数据库,而是始终通过一个接口(即JSP、PHP、.NET等)。我不确定这样做的确切原因(可能是安全性),但我想我应该投入2美分,这并不是一个真正的答案,但我记得当我第一次开始用Android编程时,我被告知不要直接连接远程数据库,而是要始终通过一个接口(即JSP、PHP、.NET等)。我不确定这样做的确切原因(可能是安全性),但我想我应该投入2美分,我会参考我自己的答案。我会参考我自己的答案。