1. Я могу порекомендовать вам использовать отдельные методы для каждой операции, которую вы хотите выполнить. Таким образом, вы можете легко вернуться к любой части кода, потому что на самом деле это будет возврат к методу. 2. Вам не нужно запускать сканер много раз, а только один раз в начале. 3. Вы можете оптимизировать свой код, комбинируя общие или похожие операции в одном методе. Например, ваш код можно изменить следующим образом:
import java.util.ArrayList;
import java.util.Scanner;
public class List{
static ArrayList<String> alist = new ArrayList<String>();
static Scanner sc = new Scanner(System.in);
static String choice;
public static void main(String args[]){
mainMenue();
}
private static void mainMenue() {
System.out.println("1. do shopping \n2. check basket \n3. go to checkout");
choice = sc.next();
if(choice.equals("1")) shoppingMenue();
else if(choice.equals("2")) checkingMenue();
else if(choice.equals("3")) checkoutMenue();
}
private static void checkoutMenue() {
System.out.println("Are you sure you want to checkout? \n1. No \n2. Yes");
choice = sc.next();
if(choice.equals("1"))return;
else System.out.println("test");
}
private static void checkingMenue() {
System.out.println(alist);
}
private static void shoppingMenue() {
boolean stop = false;
while(!stop){
System.out.println("1. Veg \n2. sweets \n3. drink \n4. toiletries \n5.
alcohol \n6. go back");
choice = sc.next();
if(choice.equals("1")) printAndSave(1);
else if(choice.equals("2")) printAndSave(2);
else if(choice.equals("3")) printAndSave(3);
else if(choice.equals("4")) printAndSave(4);
else if(choice.equals("5")) {
System.out.println("Check ID if age is under 25 \nHow old are you?");
if(sc.nextInt() < 18) System.out.println("You are not old enough to buy
alcohol");
else printAndSave(5);
}
else if(choice.equals("6")) mainMenue();
}
}
private static void printAndSave(int i) {
ArrayList <String> textList = new ArrayList <>(6);
textList.add(0, "");
textList.add(1, "Veg has been added to your basket");
textList.add(2, "Sweets have been added to your basket");
textList.add(3, "Drinks have been added to your basket");
textList.add(4, "Toiletries have been added to your basket");
textList.add(5, "Alcohol has been added to your basket");
System.out.println(textList.get(i));
alist.add("veg");
}
}
Данное решение не покрывает, где разрешение дано против схемы или самой базы данных, которые действительно дают разрешения против таблиц также. Это даст Вам те ситуации, также. Можно использовать оператор Where против permission_name для ограничения, чтобы просто УДАЛИТЬ.
SELECT
class_desc
, CASE WHEN class = 0 THEN DB_NAME()
WHEN class = 1 THEN OBJECT_NAME(major_id)
WHEN class = 3 THEN SCHEMA_NAME(major_id) END [Securable]
, USER_NAME(grantee_principal_id) [User]
, permission_name
, state_desc
FROM sys.database_permissions
кроме того, db_datawriter должен был бы быть проверен на членство, потому что это дает неявную ВСТАВКУ, ОБНОВЛЕНИЕ, и УДАЛИТЕ права, подразумевая, что Вы не будете видеть, что он разоблачает в разрешении DMVs или их производные.
Для наблюдения предоставлений на всем DB выберите рассматриваемый DB, откройте новое окно запроса, войдите - sp_helprotect
, выполните запрос
Для просмотра всех предоставлений на определенной базе данных используют это:
Select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES
, Чтобы просто просмотреть удаляют предоставления на определенном использовании базы данных это:
Select * from INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE PRIVILEGE_TYPE = 'DELETE'
Для списка всех полномочий, которыми можно управлять, можно использовать функцию fn_my_permission
. Это списки запросов все полномочия на [1 112] сервер :
select * from fn_my_permissions(NULL, NULL)
необходимо войти в использование учетной записи, которая имеет роль системного администратора.
можно совершенствовать использование вызовов функции после параметров.
Для всех полномочий на [1 113] база данных :
select * from fn_my_permissions(NULL, 'database')
Для всех полномочий на схеме dbo :
select * from fn_my_permissions('dbo', 'schema')
Для всех полномочий на таблица :
select * from fn_my_permissions('dbo.test', 'object')