【问题标题】:How to get the UserID in a form to add it a table?如何获取表单中的 UserID 以将其添加到表中?
【发布时间】:2020-06-17 07:14:36
【问题描述】:

我正在尝试从我的表“用户”中获取用户 ID,并将其添加到 Activity 内的表单中,在该表单中我向表“产品”添加新优惠。我已经知道如何从我的表中获取用户 ID,但我不知道如何将其插入到表单中。

如何获取用户ID

public int getuserid(String username) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("Select * from user where username=?", new String[]{username});
    if (cursor.getCount()>0)
        return cursor.getInt(0);
    else
        return 0;

}
}

编辑

我的 AddOffers 活动,

   @Override


    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addofferactivity);
    myTraderDbHelper = new MyTraderDbHelper(this);

    add_art = (EditText) findViewById(R.id.add_art);
    add_namep = (EditText) findViewById(R.id.add_namep);
    add_menge = (EditText) findViewById(R.id.add_menge);
    add_standort = (EditText) findViewById(R.id.add_standort);
    add_gueltigbis = (EditText) findViewById(R.id.add_gueltigbis);
    add_userzuordnung = (EditText) findViewById(R.id.add_userzuordnung);
    add_button = (Button) findViewById(R.id.add_button);
    AddOffer();

}



public void AddOffer(){
    RegDBHelper regDBhelper = new RegDBHelper(this);
    regDBhelper.getuserid();
    add_button.setOnClickListener(
            new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    if (add_namep.getText().toString()!=null){
                        String username = add_namep.getText().toString();
                        boolean isInsirted = myTraderDbHelper.addOffer(add_art.getText().toString(),
                                add_namep.getText().toString(),
                                add_menge.getText().toString(),
                                add_standort.getText().toString(),
                                add_gueltigbis.getText().toString(),
                                getuserid(username)
                        add_userzuordnung.setText(""+getuserid(username));
                    }
                    if (isInserted =true)
                        Toast.makeText(AddOffersActivity.this,"Hinzugefügt",Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(AddOffersActivity.this,"Nicht hinzugefügt",Toast.LENGTH_LONG).show();
                }
            }
    );
}

括号内第三行,第15行和第16行有错误

【问题讨论】:

    标签: java android database sqlite


    【解决方案1】:

    类似的东西:

    public void AddOffer(String art, String namep, String menge, String standort, String gueltigbis, String userzuordnung) {
    
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME_TITLE, art);
        values.put(COLUMN_NAME_NAMEP, namep);
        values.put(COLUMN_NAME_MENGE, menge);
        values.put(COLUMN_NAME_STANDORT, standort);
        values.put(COLUMN_NAME_GUELTIGBIS, gueltigbis);
        values.put(COLUMN_NAME_USERZOUDNUNG, userzuordnung);
    
        long newRowId = db.insert(TABLE_NAME, null, values)
    }
    

    或者如果你想用 userId 更新表的行

     public Int updateOffer(Int userId, String art, String namep, String menge, String standort, String gueltigbis, String userzuordnungl)
        {
            ContentValues values = new ContentValues();
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            values.put(COLUMN_NAME_TITLE, art);
            values.put(COLUMN_NAME_NAMEP, namep);
            values.put(COLUMN_NAME_MENGE, menge);
            values.put(COLUMN_NAME_STANDORT, standort);
            values.put(COLUMN_NAME_GUELTIGBIS, gueltigbis);
            values.put(COLUMN_NAME_USERZOUDNUNG, userzuordnung);
            return db.update(TABLE_NAME, contentValues, "UserId=?" + userId,null)
        }
    

    【讨论】:

    • 除了“userzuordnung”之外的所有添加都在工作。我的问题是我不知道如何将 userDB 中的 UserID 插入“userzuordnung”中以将其保存在数据库产品中
    • 我有一个用户可以填写的表格,例如标题,名称...但是现在我想在用户登录时使用UserID自动填写“userzuordnung”列
    • 我认为一个应用程序有很多数据库并不好,你应该有多个表。选择将出现在大多数表 sp 中的主键和外键,您可以从表中唯一地选择记录。
    • 应用只有两个数据库,记录我用主键
    【解决方案2】:

    你可以放

    if (add_namep.getText().toString()!=null){
    String username = add_namep.getText().toString();
    boolean isInsirted = myTraderDbHelper.addOffer(add_art.getText().toString(),
                                add_namep.getText().toString(),
                                add_menge.getText().toString(),
                                add_standort.getText().toString(),
                                add_gueltigbis.getText().toString(),
                                getuserid(username);
    add_userzuordnung.setText(""+getuserid(username))
    }
    

    还是我有什么问题?

    【讨论】:

    • 我想这就是我要找的,我把你的代码放在 AddOffer 方法中。以及 AddOffer 方法上面的 getuserid。但是现在我遇到了“SQLiteDatabase db = this.getReadableDatabase();”的问题getReadableDatabase 方法被解析
    • getuserid 方法不能在您的活动中。它必须在扩展 SqliteDbHelper 的类中。在您的活动中,您可以像这样调用此类的实例:MyDbHelper myDbHelper = MyDbHelper.getInstance() 而不是调用 myDbHelper.getuserid(username)。但是,如果您的第一个问题得到解决,请将我的答案标记为已接受的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2020-12-01
    • 2014-04-22
    相关资源
    最近更新 更多