有没有一种方法可以将Android应用程序连接到中央数据库服务器(例如MSSQLServer 2008)?将android与MS SQL SERVER 2008连接起来
我有一个MySQL网站和Android访问的数据库。从网站连接到数据库是好的,但如何从Android应用程序完成?
有没有一种方法可以将Android应用程序连接到中央数据库服务器(例如MSSQLServer 2008)?将android与MS SQL SERVER 2008连接起来
我有一个MySQL网站和Android访问的数据库。从网站连接到数据库是好的,但如何从Android应用程序完成?
将您的android应用程序直接连接到外部数据库服务器是一个坏主意,而不是创建一个web应用程序并通过它访问数据库。
有一些策略,你可以聘请来完成你想要什么做。考虑到对Android的SOAP支持是不存在的,您将很可能希望通过WCF,ASP.NET,Ruby On Rails,PHP或任意数量的Web框架以XML或JSON格式推送数据。
不知道您的Web应用程序当前正在运行什么,很难说如何最好地进行数据连接。您可以使用WCF数据服务,如果你想得起来,并尽可能快地运行,和MSDN对开始使用它像样的文章:
http://msdn.microsoft.com/en-us/library/cc668792.aspx
我建议你检查你现有的解决方案和数字了解如何最大限度地扩展将数据推送到您的Android应用程序。
非常感谢:) – Jasra 2011-12-31 07:07:06
的另一种方法,MUSCH比Web服务更简单,就是使用使用三层架构的虚拟JDBC驱动程序:您的JDBC代码通过HTTP发送到远程Servlet,该远程Servlet在将JDBC代码传递给SQL Server JDBC驱动程序之前过滤JDBC代码(配置&安全性)。结果通过HTTP发回给您。有一些使用这种技术的免费软件。只需谷歌“通过HTTP的Android JDBC驱动程序”。
如果你需要这样做,你可能不会有3层架构。如果是这种情况,请考虑编写一个移动Web应用程序。 我这样做了将移动界面添加到客户端服务器2层遗留系统。
我有一个传统的Delphi客户端/服务器应用程序,我通过使用Raudus为移动设备优化的Web应用程序创建。当然,如果你有德尔福的技能,这是有道理的,但对于其他语言/技术来说,这是coutnerparts。
所有你需要做的是使用合适的驱动程序,我推荐使用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);
}
}
}
}
嗨,我试着用你的示例代码,但每当我启动应用程序,系统不断给我这个错误“字符集0x0904000128/Cp850不支持的JVM”,我曾尝试连接到数据库Java和它工作正常,但只在Java Android它给我错误。我可以知道你使用的是什么版本的eclipse吗?它是Eclipse ADT Juno吗? – AuroraBlaze 2014-11-12 05:07:49
linke你在这里给出的不是为sql server 2008而是为mysql服务器。你应该知道sql server和mysql数据库的差别 – DPM 2013-10-19 15:38:02
@DPM如果你看了答案,它实际上是数据库不可知论的,所以没关系。 – eis 2013-11-15 09:42:09