Android应用。从数据库

时间:2016-10-18 05:14:53

标签: android

我是一名新的Android应用开发者,需要一些帮助。我想开发一个简单的登录应用程序,只是为了理解工作。 使用sqlite我们可以在我们的应用程序中创建表和插入记录,但是如何保持表的用户名和密码集中,以便所有用户可以从应用程序访问同一个表进行登录,而不是在您的设备上创建数据库。 请帮助我一些提示或任何链接,这将有助于我澄清我的疑虑。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果您想将数据库用作集中式,那么它应该是服务器而不是本地数据库。 我们都知道本地数据库可以在设备中访问,下面的内容可以帮助您处理服务器。

第1步:首先在GoDaddy或000webhost.com购买服务器(免费服务器可用)

第2步:创建数据库并制作符合您要求的表格。

第3步:剩余所有编码和集成部分都在此Url中 Android Php connect

这是初学者的基本API,继续。

使用Java servlet进行Android API集成

步骤1:下载Eclipse EE(Express Edition)或将Eclipse EE插件添加到现有Eclipse

第2步:在Eclipse中转到文件>新>项目>网络>动态Web项目>下一个。

步骤3:为您的项目命名,并选择Apache Tomcat v7.0作为目标运行时,然后单击“完成”。

第4步:现在右键点击项目>新>其他>网络>的servelt。根据您的意愿命名Servlet。

第5步:作为一个例子我在这里放两个乘以2的数字

import java.io.IOException;
import java.io.OutputStreamWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/DoubleMeServlet")
public class DoubleMeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public DoubleMeServlet() {
        super();

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.getOutputStream().println("Hurray !! This Servlet Works");

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            int length = request.getContentLength();
            byte[] input = new byte[length];
            ServletInputStream sin = request.getInputStream();
            int c, count = 0 ;
            while ((c = sin.read(input, count, input.length-count)) != -1) {
                count +=c;
            }
            sin.close();

            String recievedString = new String(input);
            response.setStatus(HttpServletResponse.SC_OK);
            OutputStreamWriter writer = new OutputStreamWriter(response.getOutputStream());

            Integer doubledValue = Integer.parseInt(recievedString) * 2;

            writer.write(doubledValue.toString());
            writer.flush();
            writer.close();



        } catch (IOException e) {
            try{
                response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
                response.getWriter().print(e.getMessage());
                response.getWriter().close();
            } catch (IOException ioe) {
            }
        }   
        }

}

第6步:右键单击Servlet项目>以>运行在服务器上运行。应该弹出“在服务器上运行”对话框。选择“手动定义新服务器”以及服务器类型下的Tomcat v7.0。“在此之前确保您的tomcat服务器已启动并运行。打开Web浏览器并键入http://localhost:8080。您应该看到显示的默认页面由tomcat服务器。

下面是示例代码,你应该像你提到的那样从你的Android应用程序调用你的servlet文件

package com.app.myapp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class DoubleMeActivity extends Activity implements OnClickListener {

    EditText inputValue=null;
    Integer doubledValue =0;
    Button doubleMe;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculate);

        inputValue = (EditText) findViewById(R.id.inputNum);
        doubleMe = (Button) findViewById(R.id.doubleme);

        doubleMe.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()){
        case R.id.doubleme:

              new Thread(new Runnable() {
                    public void run() {

                        try{
                            URL url = new URL("http://10.0.2.2:8080/MyServletProject/DoubleMeServlet");
                            URLConnection connection = url.openConnection();

                            String inputString = inputValue.getText().toString();
                            //inputString = URLEncoder.encode(inputString, "UTF-8");

                            Log.d("inputString", inputString);

                            connection.setDoOutput(true);
                            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
                            out.write(inputString);
                            out.close();

                            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

                            String returnString="";
                            doubledValue =0;

                            while ((returnString = in.readLine()) != null) 
                            {
                                doubledValue= Integer.parseInt(returnString);
                            }
                            in.close();


                            runOnUiThread(new Runnable() {
                                 public void run() {
                                  inputValue.setText(doubledValue.toString());

                                }
                            });

                            }catch(Exception e)
                            {
                                Log.d("Exception",e.toString());
                            }

                    }
                  }).start();

            break;
            }
        } 
    }

请参阅以下链接以获取完整参考 Connect android app with servlet

答案 1 :(得分:0)

你知道后端和前端吗? sqlitedatabase不存储可供所有用户使用的通用数据。您正在谈论的数据库需要存储在服务器端或人们也说后端。这是"集中部分"你在说什么。阅读前端和后端,然后了解http请求。

答案 2 :(得分:0)

这里你可以做的事情:
1.没有后端服务器,你不能集中管​​理 2.使用firebase。这提供了您需要的一切。这提供了NoSQL结构化数据库。有关详细信息,请参阅docs 3.您可以将A SQL服务器与PHP一起用作脚本支持。尝试WebHost免费开始。阅读this pdf第55章(第327页),逐步设置。