Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从第二个微调器数据库获取ID_Android_Sqlite_Android Spinner - Fatal编程技术网

Android 从第二个微调器数据库获取ID

Android 从第二个微调器数据库获取ID,android,sqlite,android-spinner,Android,Sqlite,Android Spinner,我有两个旋转器和一个按钮。 微调器从sqlite数据库获取数据。 第一个包含城市名称,第二个包含城市中的地方 cities表包含以下列:id、en_name、v_name、code places表包含以下列:注册号、城市号、注册名、注册名 我在第一个微调器中显示v_name,在第二个微调器中显示reg_name,但我需要获得reg_id,以便在用户触摸按钮时显示购物地点。 因为我需要它来获取json 如何将注册表id从数据库获取到按钮单击方法 Shop.javafragment public

我有两个旋转器和一个按钮。 微调器从sqlite数据库获取数据。 第一个包含城市名称,第二个包含城市中的地方

cities表包含以下列:id、en_name、v_name、code

places表包含以下列:注册号、城市号、注册名、注册名

我在第一个微调器中显示v_name,在第二个微调器中显示reg_name,但我需要获得reg_id,以便在用户触摸按钮时显示购物地点。 因为我需要它来获取json

如何将注册表id从数据库获取到按钮单击方法


Shop.javafragment

public class Shops extends Fragment implements AdapterView.OnItemSelectedListener {
               DatabaseHelper db;
               MaterialSpinner materialSpinner;
               MaterialSpinner materialSpinner2;
               String getPlacesURL = "http://*/get_places/";// + cityId
               String getShopsURL = "http://*/get_shops/"; // + cityId / + placeId
               String getShopsFullURL;
               String cityID;
           
               @Override
               public void onCreate(@Nullable Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);
               }
           
               public boolean isNetworkConnectionAvailable() {
                   ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
                   NetworkInfo info = cm.getActiveNetworkInfo();
                   if (info == null) return false;
                   NetworkInfo.State network = info.getState();
                   return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);
               }
           
               @Override
               public void onActivityCreated(@Nullable Bundle savedInstanceState) {
                   super.onActivityCreated(savedInstanceState);
               }
           
               @Override
               public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
           
                   View myView = inflater.inflate(R.layout.shop_fragment, container, false);
        db = new DatabaseHelper(getContext());

       materialSpinner = (MaterialSpinner) myView.findViewById(R.id.shop_city_MS);
               materialSpinner2 = (MaterialSpinner) myView.findViewById(R.id.shop_place_MS);
               Button submitBtn = (Button) myView.findViewById(R.id.Shops_submit_btn);

               ArrayList citiesList = db.getRecords(DatabaseHelper.getTableCities(), DatabaseHelper.getCitiesColumnVName());
               ArrayAdapter a = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, citiesList);
               materialSpinner.setAdapter(a);
               materialSpinner.setOnItemSelectedListener(this);
       
               if (isNetworkConnectionAvailable()) {
                   ArrayList<String> citiesIDsList = db.getRecords(DatabaseHelper.getTableCities(), DatabaseHelper.getCitiesColumnId());
               } else {
                   //snackbar to check connection
               }
    @Override
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
           if (position == -1) {
               materialSpinner2.setClickable(false);
           } else {
               String databaseID = db.getValueFromColumn(position, DatabaseHelper.getTableCities(), DatabaseHelper.getCitiesColumnId());
               cityID = databaseID;
               ArrayList placesList = db.getListOfValuesFromColumn(DatabaseHelper.getTablePlaces(), DatabaseHelper.getPlacesCityId(), databaseID, DatabaseHelper.getPlacesRegNameV());
               if (placesList.size() == 0)
                   // empty list
               materialSpinner2.setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_dropdown_item, placesList));
               String merged = getShopsURL + databaseID;
               getShopsFullURL = merged + "/";
               materialSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                   @Override
                   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                       if (position == -1) {
                           //snackbar enter required place
                       } else {
                          // what to do here?
                       }
                   }
   
                   @Override
                   public void onNothingSelected(AdapterView<?> parent) {
   
                   }
               });
           }
       }
   
       @Override
       public void onNothingSelected(AdapterView<?> parent) {
   
       }
   }

要检索您的注册ID,您需要一个简单的查询,如下所示。假设regName是从微调器中选择的字符串

    String regName = "your selected spinner item";

    // The table to query
    String from = DatabaseHelper.getTablePlaces();

    // The columns to return
    String[] projection = {
            DatabaseHelper.getPlacesRegId()
    };

    // The columns for the WHERE clause 
    String selection = DatabaseHelper.getPlacesRegNameAr() + " = ?";  //or .getPlacesRegNameEn() ?

    // The values for the WHERE clause
    String[] selectionArgs = { regName };

    Cursor cursor = db.getReadableDatabase().query(
            from,          
            projection,                               
            selection,                                
            selectionArgs,                            
            null,                                    
            null,                                    
            null                                     
    );

    while(cursor.moveToNext()){
        // Get ID
        long id = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseHelper.getPlacesRegId()));
    }

    cursor.close();

要检索您的注册ID,您需要一个简单的查询,如下所示。假设regName是从微调器中选择的字符串

    String regName = "your selected spinner item";

    // The table to query
    String from = DatabaseHelper.getTablePlaces();

    // The columns to return
    String[] projection = {
            DatabaseHelper.getPlacesRegId()
    };

    // The columns for the WHERE clause 
    String selection = DatabaseHelper.getPlacesRegNameAr() + " = ?";  //or .getPlacesRegNameEn() ?

    // The values for the WHERE clause
    String[] selectionArgs = { regName };

    Cursor cursor = db.getReadableDatabase().query(
            from,          
            projection,                               
            selection,                                
            selectionArgs,                            
            null,                                    
            null,                                    
            null                                     
    );

    while(cursor.moveToNext()){
        // Get ID
        long id = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseHelper.getPlacesRegId()));
    }

    cursor.close();

你能展示一下你的places合同类吗?你是说数据库结构吗?我想看看你定义places结构的类table@GiacomoLai我更新了关于数据库模式创建的问题,这非常混乱。我建议您使用有关sqlite数据库创建最佳实践的官方指南。你能展示一下你的places合同类吗?你是说数据库结构吗?我想看看你定义places结构的类table@GiacomoLai我更新了关于数据库模式创建的问题,这非常混乱。我建议您使用有关sqlite数据库创建最佳实践的官方指南。