有没有办法将安卓应用程序连接到中央数据库服务器(例如MSSQLServer 2008)?
我有一个MySQL数据库,这是访问的网站和安卓。从网站连接到数据库是可以的,但如何从Android应用程序连接到数据库呢?
发布于 2013-10-30 11:50:03
您所要做的就是使用适当的驱动程序,我建议使用JTDS,并且1.2.5版本似乎与android.Detailed一起工作得很好,有关如何使用eclipse的说明可以找到here github中提供了一个工作代码
/**
* This is a demo code to demonstrate db connection and operations and not
* meant for a live run.
*
*/
public class DBTestActivity extends Activity {
private Connection conn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dbtest);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.dbtest, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
(new DBConnection()).execute(null, null, null);
}
@Override
protected void onPause() {
super.onPause();
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
class DBConnection extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... arg0) {
try {
Log.e("MSSQL", "Attempting to connect");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:jtds:sqlserver://yourserver.com/DBName",
"username", "password");
Log.e("MSSQL", "Connected");
} catch (Exception e) {
e.printStackTrace();
Log.e("MSSQL", e.toString());
}
return null;
}
}
class UserInfo {
String userID;
String userName;
String PhoneNo;
String age;
public UserInfo(String userID, String userName, String PhoneNo,
String age) {
this.userID = userID;
this.userName = userName;
this.PhoneNo = PhoneNo;
this.age = age;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPhoneNo() {
return PhoneNo;
}
public void setPhoneNo(String phoneNo) {
PhoneNo = phoneNo;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
class DBOperation {
public List<UserInfo> getAllUsers() throws SQLException {
Statement statement = getStatement(conn);
List<UserInfo> userlist = new ArrayList<UserInfo>();
ResultSet rs = statement.executeQuery("SELECT * FROM UserInfoTable");
rs.next();
int count = 0;
while (rs.next()) {
userlist.add(new UserInfo(rs.getString(1), rs.getString(2),
rs.getString(3), rs.getString(4)));
count++;
}
rs.close();
statement.close();
return userlist;
}
public void addUser(UserInfo info) {
Log.e("MSSQL", "in adduser");
Statement statement = getStatement(conn);
try {
ResultSet rs = statement.executeQuery("INSERT INTO UserInfoTable "
+ " VALUES ('1001', 'Bob', '333333', '33')");
rs.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private Statement getStatement(Connection connection) {
try {
return connection.createStatement();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
发布于 2012-12-05 02:33:52
另一种比Web服务更简单的方法是使用使用三层体系结构的虚拟JDBC驱动程序: JDBC代码通过HTTP发送到远程Servlet,该Servlet在将JDBC代码传递给SQL Server JDBC驱动程序之前过滤JDBC代码(配置和安全性)。结果会通过HTTP返回给您。有一些使用这种技术的自由软件。只需Google "Android JDBC Driver over HTTP“。
发布于 2011-03-10 13:49:51
将你的android应用程序直接连接到外部数据库服务器不是一个好主意,相反,创建一个web应用程序并通过它访问数据库。
https://stackoverflow.com/questions/5255984
复制相似问题