jdbc - erklæringer, preparedstatement og callablestatement

, når en forbindelse, som vi kan interagere med databasen.den erklæring, callablestatement jdbc,,, og preparedstatement, grænseflader fastlægger metoder og egenskaber, der gør det muligt for dem at sende sql eller pl /sql kommandoer og modtage data fra jeres database. de også definere metoder, at hjælpe med at bygge bro over data type forskelle mellem java og sql datatyper, der anvendes i en database. følgende tabel indeholder en resumé af hver grænseflade, at træffe afgørelse om grænseflade til brug., grænseflader anbefalede anvendelse erklæring brug for almen adgang til databasen.nyttige, når du bruger statisk sql erklæringer på runtime.oversigten interface kan ikke acceptere parametre.preparedstatement bruge, når du planlægger at bruge sql erklæringer, mange gange.den preparedstatement grænseflade accepterer inputparametre på runtime.callablestatement bruger, når de ønsker at få adgang til databasen lagrede procedurer.den callablestatement interface kan også acceptere runtime inputparametre.den forklaring, genstande, skabe erklæring objekt, før du kan bruge en erklæring imod, at gennemføre en sql erklæring, du er nødt til at skabe en ved hjælp af forbindelsen objekt er createstatement () metode, som i det følgende eksempel − udtalelse stmt = ugyldig; prøve (stmt = conn.createstatement ()....} fangst (sqlexception e) {....} endelig {....}, når du har skabt en erklæring imod, kan du så bruge den til at udføre en sql erklæring med en af sine tre henrette metoder.,,,, boolean henrette (string sql): returnerer en boolean - værdi, hvis en resultset genstand kan hentes på det og vender forkert.denne metode til at henrette sql ddl erklæringer eller, når du skal bruge virkelig dynamisk sql.,,,, int executeupdate (string sql): afkast af antallet af linjer, der berøres af gennemførelsen af sql erklæring.denne metode til at henrette sql erklæringer, som man forventer at få en række rækker berørt - f.eks. en indsat, ajourføre eller slette erklæring.,,,, resultset executequery (string sql): returnerer et resultset objekt.anvendelse af denne metode, når man forventer at få et resultat, der, som de vil med en særlig erklæring.,,, afsluttende erklæring mål, ligesom du tæt forbindelse protesterer for at redde database, ressourcer, af samme årsag, som du bør også nøje redegørelse objekt. et enkelt opkald til close() metode vil gøre arbejdet.hvis du lukker den forbindelse objekt, for det første vil lukke erklæring genstand som godt.men du bør altid udtrykkeligt tæt på den erklæring, genstand for at sikre en ordentlig rengøring, erklæring stmt = ugyldig; prøve (stmt = conn.createstatement ()....} fangst (sqlexception e) {....} {stmt endelig. close();}, til en bedre forståelse, vi foreslår, at de læser udtalelsen - eksempel tutor., preparedstatement genstande, preparedstatement interface udvider erklæring grænseflade, som giver dem ekstra funktioner med et par fordele i forhold til en generel erklæring genstand. det giver dem fleksibilitet at levere argumenter dynamisk., skabe preparedstatement objekt, preparedstatement pstmt = ugyldig; prøve (string sql = "ajourføre ansatte sat alder =?hvis id = "?; pstmt = conn.preparestatement (sql)....} fangst (sqlexception e) {....} endelig {....}, alle parametre jdbc er repræsenteret ved den?symbol, der er kendt som parameter markør.du må levere værdier for hver parameter, før den udfører sql erklæring.,, setxxx(), metoder, binde værdier for parametrene, hvor xxx, repræsenterer java data type af den værdi, de ønsker at binde sig til input parameter.hvis de glemmer at levere de værdier, de vil modtage en sqlexception. hver parameter markør er anført i sin ordinal holdning.den første markør er 1 - 1, den næste stilling 2 osv.denne metode afviger fra java array - indeks, som begynder på 0. alle de, erklæring objekt, metoder til at interagere med databasen (a) execute(), (b) executequery(), og c) executeupdate() også arbejde med preparedstatement objekt.de metoder, der er modificeret med henblik på brug af sql erklæringer, der kan input parametre. preparedstatement objekt, lukker lige så tæt på en erklæring imod, af samme grund bør de også tæt på den preparedstatement objekt. et enkelt opkald til close() metode vil gøre arbejdet.hvis du lukker den forbindelse objekt, for det første vil lukke preparedstatement genstand som godt.men du bør altid udtrykkeligt tæt på den preparedstatement formål for at sikre en ordentlig rengøring. preparedstatement pstmt = ugyldig; prøve (string sql = "ajourføre ansatte sat alder =?hvis id = "?; pstmt = conn.preparestatement (sql)....} fangst (sqlexception e) {....} {pstmt endelig. close();}, til en bedre forståelse, lad os undersøge forberede - f.eks. den callablestatement objekter, ligesom en forbindelse objekt, skaber den erklæring og preparedstatement objekter, den skaber også callablestatement objekt, der skal anvendes til at udføre en opfordring til en database, som skaber callablestatement objekt opbevares procedure. hvis du har brug for til at udføre følgende oracle opbevares procedure − skabe eller erstatte procedure getempname (emp_id i antal, emp_first ud varchar) som begynde vælge først til emp_first fra arbejdstagere, hvor id = emp_id;;,, note: frem for oplagret procedure er blevet skrevet til oracle, men vi arbejder med mysql database, så lad os skrive samme opbevares procedure for mysql således at skabe den emp database −, skilletegn for $- procedure, hvis der er emp `. ` ` $getempname skabe procedure er emp `. ` getempname (i emp_id int, ud emp_first varchar (255) begynde vælge først til emp_first fra arbejdstagere, hvor id = emp_id; ende $skilletegn for $; tre typer af parametre findes: in, out, og bistand.den preparedstatement formål bruger kun i parameter.den callablestatement genstand kan bruge alle de tre. her er definitioner for hver − parameter beskrivelse i et parameter, hvis værdi er ukendt, da sql erklæring er skabt.du binder værdier i parametre med setxxx() metoder.en parameter, hvis værdi er leveret af sql erklæring tilbage.du henter værdier fra theout parametre med getxxx() metoder.bistand en parameter, der giver både input - og output - værdier.du binder variabler med setxxx() metoder og hente værdier med de getxxx() metoder.følgende kode snippet viser, hvordan vi kan anvende, tilslutning. preparecall(), en metode til at instantiate en, callablestatement, genstand, baseret på den foregående opbevares procedure −, callablestatement cstmt = ugyldig; prøve (string sql = "(ringe getempname (??)} "cstmt = conn.preparecall (sql)....} fangst (sqlexception e) {....} endelig {....}, snoren variable sql, repræsenterer de oplagrede procedure med parameter placeholders. ved hjælp af callablestatement genstande er ligesom ved hjælp af preparedstatement objekter.du skal binde værdier for alle de parametre, inden gennemførelsen af den erklæring, eller du vil modtage en sqlexception. hvis du har i parametre, følger de samme regler og teknikker, der anvendes til en preparedstatement objekt; anvendelse af setxxx() metode, der svarer til java - datatype, du er bindende, når du bruger og bistand parametre du skal bruge en ekstra callablestatement metode, registeroutparameter().den registeroutparameter() metode binder jdbc datatype, at den datatype, at oplagrede procedure forventes at vende tilbage, når du ringer til dine oplagret. proceduren, du henter værdien fra den parameter, med passende getxxx() metode.denne metode såede de fundne værdi af sql type til en java - datatype., lukning callablestatement mål, ligesom du tæt på andre indlæg genstand, af samme grund bør de også tæt på den callablestatement objekt. et enkelt opkald til close() metode vil gøre arbejdet.hvis du lukker den forbindelse objekt, for det første vil lukke callablestatement genstand som godt.men du bør altid udtrykkeligt tæt på den callablestatement formål for at sikre en ordentlig rengøring. callablestatement cstmt = ugyldig; prøve (string sql = "(ringe getempname (??)} "cstmt = conn.preparecall (sql)....} fangst (sqlexception e) {....} {cstmt endelig. close();}, til en bedre forståelse, vil jeg foreslå, at studere indløses - f.eks. kode.



Previous:
Next Page: