Javascript 如何将一个数据字段的值复制到同一SQLite数据库中的另一个表中

Javascript 如何将一个数据字段的值复制到同一SQLite数据库中的另一个表中,javascript,sqlite,android-studio,Javascript,Sqlite,Android Studio,我想将主键从一个表复制到同一SQLite数据库中另一个表中的新字段 在我的排行榜上我有; 联盟 联盟名称 在我的系列表中,我有; 系列 联赛 序列名 我希望能够将LeagueID移动到Series表中,并用它填充SeriesLeagueID 我已经对此进行了搜索,但我能找到的似乎只是如何将表中的完整行或列复制到另一个表中 如蒙协助,将不胜感激 主要活动 //On Long Click On The RecyclerView Item An Alert Dialog Is Opened With

我想将主键从一个表复制到同一SQLite数据库中另一个表中的新字段

在我的排行榜上我有; 联盟 联盟名称

在我的系列表中,我有; 系列 联赛 序列名

我希望能够将LeagueID移动到Series表中,并用它填充SeriesLeagueID

我已经对此进行了搜索,但我能找到的似乎只是如何将表中的完整行或列复制到另一个表中

如蒙协助,将不胜感激

主要活动

//On Long Click On The RecyclerView Item An Alert Dialog Is Opened With The Option To Choose Edit/Delete
        recyclerView.addOnItemTouchListener(new RecyclerTouchListener(this,
                recyclerView, new RecyclerTouchListener.ClickListener() {
            @Override
            public void onClick(View view, final int position) {



                int leagueId = leaguesList.get( position ).getId();
                Intent myIntent = new Intent(getBaseContext(), Main2Activity.class);
                myIntent.putExtra("value1", leagueId);
                startActivity(myIntent);
                //Intent myIntent = new Intent(getApplicationContext(), BowlerActivity.class);
                //startActivity(myIntent);

            }

            @Override
            public void onLongClick(View view, int position) {
                showActionsDialog(position);
            }
        }));
    }
主要活动

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.league_id );
        Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
        setSupportActionBar( toolbar );

        String savedExtra = getIntent().getStringExtra( "value1" );
    TextView myText = (TextView) findViewById(R.id.tvLeagueId);
        final String s = myText.toString();
        myText.setText(savedExtra);


    }

}

您可以使用以下内容更新series表:-

UPDATE Series 
    SET SeriesLeagueID = (
        SELECT LeagueId 
        FROM League 
        WHERE Leaguename = 'Premier'
    ) 
    WHERE SeriesName = 'Test2';
注意到

  • 在本例中,LeagueId表中的行(从中获取LeagueId)通过LeagueName列的行具有值Premier来标识(假设您事先不知道LeagueId)
  • 要更新的行被标识为SeriesName列中具有值Test2的行
用于测试的代码:- 结果是:-


我理解您上述解释的概念。这很直截了当。当我开始一个新的系列赛时,我将如何获得联赛冠军。此时,我还没有像上面的例子中那样给这个系列命名。LeagueID将由它的名称或id决定(通常使用微调器/下拉菜单来实现此目的)(id实际上更好,因为它可以毫无疑问地标识一行(如果定义为整数主键或整数主键自动递增))。您实际如何做到这一点取决于您的代码和要求,因此基本上不可能做到具体。@RobertVogl如果这回答了您的问题,请勾选此作为答案。虽然我理解您预先填充联赛的概念,但这是不可行的。用户正在创建联盟,长id需要传递到下一个活动,以写入列\u LEAGUE\u id的bowler表中。我一直试图将联盟主键传递到下一个活动,但它没有显示。我在上面附上了我的代码片段。不确定我是否让这件事变得比需要的更困难。
DROP TABLE IF EXISTS League;
DROP TABLE IF EXISTS Series;
CREATE TABLE IF NOT EXISTS League (LeagueId INTEGER PRIMARY KEY, LeagueName TEXT);
CREATE TABLE IF NOT EXISTS Series (SeriesID INTEGER PRIMARY KEY, SeriesLeagueID INTEGER DEFAULT NULL, SeriesName TEXT);
-- Add some leagues
INSERT INTO League (LeagueName) VALUES('Premier'),('A'),('B');
-- Add some Series (note that SeriesLeagueId is null when inserting)
INSERT INTO Series (Seriesname) VALUES('Test1'),('Test2'),('Test3');

UPDATE Series 
    SET SeriesLeagueID = (
        SELECT LeagueId 
        FROM League 
        WHERE Leaguename = 'Premier'
    ) 
    WHERE SeriesName = 'Test2';