Sobes.tech
Junior

PreparedStatement და Statement-ის შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

Statement статикалык SQL суроолорун ишке ашыруу үчүн колдонулат. Ал ар бир аткарууда компиляцияланат. PreparedStatement параметрлүү SQL суроолорун ишке ашыруу үчүн колдонулат. Суроо PreparedStatement объектисин түзүүдө бир жолу компиляцияланат жана ар кандай параметр маанилери менен көп жолу аткарылат.

Негизги айырмачылыктар:

Мүнөздөмө Statement PreparedStatement
Өндүрүмдүүлүк Ар бир аткарууда компиляцияланат. Бир жолу компиляцияланат. Кайталап колдонууда көбүрөөк натыйжалуу.
Коопсуздук Стрингдерди конкатенациялоо аркылуу SQL-инъекцияларга дуушар болушу мүмкүн. Автоматтык параметрдерди кыюу аркылуу SQL-инъекциялардан коргойт.
Параметрлер Параметрлүү суроолорду колдобойт. Параметрлүү суроолорду колдойт (?).
Окуулушу Көп маалымат менен иштөөдө азыраак окулушу мүмкүн. Параметрлер менен иштөөдө көбүрөөк окулушу мүмкүн.

Statement колдонуу мисалы:

// Statement мисалы (SQL-инъекцияларга дуушар)
String user = "admin";
String pass = "' OR '1'='1"; // SQL-инъекция мисалы
String query = "SELECT * FROM users WHERE username = '" + user + "' AND password = '" + pass + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

PreparedStatement колдонуу мисалы:

// PreparedStatement мисалы (SQL-инъекциялардан корголгон)
String user = "admin";
String pass = "' OR '1'='1";
String query = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, user);
pstmt.setString(2, pass);
ResultSet rs = pstmt.executeQuery();