【问题标题】:how to pass a value from an activity class to a java class in android?如何将值从活动类传递给android中的java类?
【发布时间】:2015-03-11 19:14:07
【问题描述】:

我编写了一个程序,其中我通过 sharedpreferences 输入一些值,并通过 sharedpreferences 和一个来自 intent 获取它,并且这些值显示完美,我通过 Toast 对其进行了测试 现在我想将这些值存储在 mysql 数据库中,因为我已经编写了一个包含 jdbc 准备语句的普通 java 类,但我无法弄清楚如何将值从我的活动类传递到普通 java 类

在下面发布我的代码,请建议我需要做什么

public class Service_Access extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.service_access);

    // Get Email ID from Shared preferences
    // SharedPreferences prefs = getSharedPreferences("UserDetails",
    // Context.MODE_PRIVATE);
    // String eMailId = prefs.getString("eMailId", "");

    // Get Email ID from Shared preferences
    SharedPreferences prefs = getSharedPreferences("UserDetails", Context.MODE_PRIVATE);
    String eMailId = prefs.getString("eMailId", "");
    String registrationId = prefs.getString("regId", "");
    // Intent Message sent from Broadcast Receiver
    String str = getIntent().getStringExtra("msg");

    if (str != null) {
        // Set the message
        lblMessage = (TextView) findViewById(R.id.txtView);
        lblMessage.setText(str + "\n");
        // Toast.makeText(getBaseContext(), registrationId + "\n" + eMailId
        // + "\n", Toast.LENGTH_LONG).show();
        ServiceSql sersql = new ServiceSql();
        sersql.insertValues(eMailId, registrationId, str);
    }

}

}

在上面的类中,我得到的值存储在 String str , emailid , registrationid 我想在下面的类中设置这些值,prep.setString(1,"") 等等

ServiceSql.java

public class ServiceSql {
Connection connection = null;
PreparedStatement prep = null;
ResultSet rSet = null;
Statement state = null;
java.sql.Timestamp timestamp = getCurrentJavaSqlTimestamp();
Context context;

public static java.sql.Timestamp getCurrentJavaSqlTimestamp() {
    java.util.Date date = new java.util.Date();
    return new java.sql.Timestamp(date.getTime());
}

public void readDatabase() {
    try {

        Class.forName("com.mysql.jdbc.Driver");
        connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/gcm",
        "root", "root");
        state = (Statement) connection.createStatement();

        prep = (PreparedStatement) connection
                .prepareStatement("Select email,gcm_regid,created_at,gcm_message from  
        gcm.gcm_users");
        rSet = prep.executeQuery();

    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

public void insertValues(String email, String regID, String msg) {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/gcm",
        "root", "root");
        state = (Statement) connection.createStatement();

        prep = (PreparedStatement) connection
                .prepareStatement("insert into 
        gcm.gcm_users(email,gcm_regid,created_at,gcm_message)"
                        + "values(?,?,?,?)");

        prep.setString(1, email);
        prep.setString(2, regID);
        prep.setTimestamp(3, timestamp);
        prep.setString(4, msg);
        prep.executeUpdate();
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

}

请帮忙 谢谢你

【问题讨论】:

  • 你确定不知道带参数的方法吗?比如,public void readDatabase(String emailID, ...) 并从您的 Activity 调用此方法
  • 为什么要尝试从应用程序中访问 mysql 数据库?
  • @user370305 是的先生,但只是一个粗略的想法,你能给我一些链接,我可以参考将值传递给方法吗?
  • @NirajAdhikari 我将 gcm 消息存储到 mysql 中,并且我将这个类调用到我的 jsp 类中,所以我需要知道如何将值传递给这个数据库类
  • @user370305 先生,我已经更新了我的代码,请检查,但是我的 mysql 数据库中的值没有被插入

标签: java android mysql


【解决方案1】:

读取其他类中的 sharedPreference 值并将这些值写入数据库。

SharedPreferences s = SharedMyAPP.getAppContext().getSharedPreferences("myPreferences", Context.MODE_PRIVATE); value = s.getString(key, "");

【讨论】:

  • 我在我的 readdatabase 方法中使用这样的 SharedPreferences prefs = context.getSharedPreferences("UserDetails", Context.MODE_PRIVATE);我的服务器给我一个错误,这是正确的方法吗?因为这不是一个活动类,只是一个java类
  • 我编辑了如何从共享偏好中获取值。检查您的上下文是否为空并获取应用程序上下文。
  • 这里的 SharedMYAPP 是什么??
  • 那是你的主叫课
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2015-10-16
相关资源
最近更新 更多