有沒有一種方法可以將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