首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将android与MS SQL SERVER 2008连接

将android与MS SQL SERVER 2008连接
EN

Stack Overflow用户
提问于 2011-03-10 13:47:59
回答 6查看 79.5K关注 0票数 17

有没有办法将安卓应用程序连接到中央数据库服务器(例如MSSQLServer 2008)?

我有一个MySQL数据库,这是访问的网站和安卓。从网站连接到数据库是可以的,但如何从Android应用程序连接到数据库呢?

EN

回答 6

Stack Overflow用户

发布于 2013-10-30 11:50:03

您所要做的就是使用适当的驱动程序,我建议使用JTDS,并且1.2.5版本似乎与android.Detailed一起工作得很好,有关如何使用eclipse的说明可以找到here github中提供了一个工作代码

代码语言:javascript
复制
/**
 * 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);

            }
        }

    }

}
票数 5
EN

Stack Overflow用户

发布于 2012-12-05 02:33:52

另一种比Web服务更简单的方法是使用使用三层体系结构的虚拟JDBC驱动程序: JDBC代码通过HTTP发送到远程Servlet,该Servlet在将JDBC代码传递给SQL Server JDBC驱动程序之前过滤JDBC代码(配置和安全性)。结果会通过HTTP返回给您。有一些使用这种技术的自由软件。只需Google "Android JDBC Driver over HTTP“。

票数 3
EN

Stack Overflow用户

发布于 2011-03-10 13:49:51

将你的android应用程序直接连接到外部数据库服务器不是一个好主意,相反,创建一个web应用程序并通过它访问数据库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5255984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档