Как добавить новых пользователей в базу данных сервера SQL через графический интерфейс JAVA - PullRequest
0 голосов
/ 27 марта 2019

Я создаю GUI через Eclipse и использую Java;и приложение подключается к базе данных сервера SQL.Мне удалось добавить новых пользователей напрямую с помощью сервера Microsoft SQL с их соответствующими защищаемыми элементами или ограничениями.

Однако я хотел бы добавить новых пользователей через сам графический интерфейс и иметь возможность определять, к какой таблице они могут получить доступ.Или, по крайней мере, просто добавьте новых пользователей, а затем выясните, как определить, к какой таблице они могут получить доступ.Я сталкиваюсь с проблемой преобразования кода SQL в Java (я новичок во всем этом в конце концов).

Заранее спасибо,

Ниже приведен код SQL, который я нашел используемым в SQL Server для добавления нового имени входа, а затем нового пользователя. Идея состоит в том, чтобы заменить «NewAdminName» и «ABCD».с фактическим пользовательским вводом непосредственно из GUI:

CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD'
GO

Use BEPAWI;
GO

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName')
BEGIN
    CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]
    EXEC sp_addrolemember N'db_owner', N'NewAdminName'
END;

Ниже приведен код JAVA, над которым я сейчас работаю с Eclipse:

JButton btnNewButton = new JButton("Enter");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                try {

                    String username = "";
                    String password = "";
                    username = UsernametextField.getText().trim();
                    password = PasswordtextField.getText().trim();

                    if (username.equals("")|| password.equals(""))
                    {
                        JOptionPane.showMessageDialog(null," name or password is wrong","Error",JOptionPane.ERROR_MESSAGE);
                    }
                    else
                    {
                        connection = DriverManager.getConnection(AdminMenu.DATABASE_URL, AdminMenu.UserName, AdminMenu.Password);
                        statement = connection.createStatement();


                        resultSetInt = statement.executeUpdate("CREATE LOGIN '"+username+"' WITH PASSWORD = ''"+password+"'' GO USE BEPAWI GO IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''"+username+"'') BEGIN CREATE USER ['"+username+"'] FOR LOGIN ['"+username+"']  EXEC sp_addrolemember N'db_owner', N''"+username+"'' END;) VALUES('"+username+"', '"+password+"');");
                        System.out.println(resultSetInt);

System.out.println("Connecting to a selected database...");

                        System.out.println("Connected database successfully...");


String SMessage = "Record added for "+username;

                            JOptionPane.showMessageDialog(null,SMessage,"Message",JOptionPane.PLAIN_MESSAGE);
                        //close connection
                        ((java.sql.Connection)connection).close();
                    }

                    }

                catch (SQLException se) 
                {
                    //handle errors for JDBC
                    se.printStackTrace();
                }
                catch (Exception a) //catch block
                {
                    a.printStackTrace();
                }

            }
        });

Я считаю, что моя проблема в этой строке кода:

resultSetInt = statement.executeUpdate("CREATE LOGIN '"+username+"' WITH PASSWORD = ''"+password+"'' GO USE BEPAWI GO IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''"+username+"'') BEGIN CREATE USER ['"+username+"'] FOR LOGIN ['"+username+"']  EXEC sp_addrolemember N'db_owner', N''"+username+"'' END;) VALUES('"+username+"', '"+password+"');");

Может быть, мне нужно добавить все столбцы из таблицы SQL?такие как sys.database_principals и FROM sys.server_principals

Еще раз спасибо,

1 Ответ

0 голосов
/ 28 марта 2019

Хорошо, так что я понял это.WOHOOO!Спасибо,

try {

                    String username = "";
                    String password = "";
                    username = UsernametextField.getText().trim();
                    password = PasswordtextField.getText().trim();

                    if (username.equals("")|| password.equals(""))
                    {
                        JOptionPane.showMessageDialog(null," name or password is wrong","Error",JOptionPane.ERROR_MESSAGE);
                    }
                    else
                    {
                        connection = DriverManager.getConnection(AdminMenu.DATABASE_URL, AdminMenu.UserName, AdminMenu.Password);
                        statement = connection.createStatement();


                        resultSetInt = statement.executeUpdate("CREATE LOGIN "+username+" WITH PASSWORD = '"+password+"'");
                        resultSetInt = statement.executeUpdate("IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'"+username+"') CREATE USER ["+username+"] FOR LOGIN ["+username+"] EXEC sp_addrolemember N'db_owner', N'"+username+"'");

                        //("CREATE LOGIN NewAdminName WITH PASSWORD = 'ABCD' GO USE BEPAWI GO IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'NewAdminName') BEGIN CREATE USER [NewAdminName] FOR LOGIN [NewAdminName]  EXEC sp_addrolemember N'db_owner', N'NewAdminName' END;) VALUES('"+username+"', '"+password+"');");

                        String SMessage = "Record added for "+username;

                                           // create dialog ox which is print message
                            JOptionPane.showMessageDialog(null,SMessage,"Message",JOptionPane.PLAIN_MESSAGE);
                        //close connection
                        ((java.sql.Connection)connection).close();
                    }

                    }

                catch (SQLException se) 
                {
                    //handle errors for JDBC
                    se.printStackTrace();
                }
                catch (Exception a) //catch block
                {
                    a.printStackTrace();
                }

            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...