คำถามติดแท็ก jdbc

JDBC (การเชื่อมต่อ Java DataBase) เป็น API ฐานซึ่งเปิดใช้งานการโต้ตอบกับเซิร์ฟเวอร์ฐานข้อมูล SQL โดยดำเนินการคำสั่ง SQL โดยใช้ภาษาการเขียนโปรแกรม Java

8
จำลองสร้างฐานข้อมูลหากไม่มีอยู่สำหรับ PostgreSQL?
ฉันต้องการสร้างฐานข้อมูลที่ไม่มีผ่าน JDBC PostgreSQL ไม่รองรับcreate if not existsไวยากรณ์ซึ่งแตกต่างจาก MySQL วิธีที่ดีที่สุดในการทำสิ่งนี้คืออะไร? แอปพลิเคชันไม่ทราบว่ามีฐานข้อมูลอยู่หรือไม่ ควรตรวจสอบและว่ามีฐานข้อมูลอยู่หรือไม่ควรใช้ ดังนั้นจึงเหมาะสมที่จะเชื่อมต่อกับฐานข้อมูลที่ต้องการและหากการเชื่อมต่อล้มเหลวเนื่องจากไม่มีฐานข้อมูลก็ควรสร้างฐานข้อมูลใหม่ (โดยเชื่อมต่อกับpostgresฐานข้อมูลเริ่มต้น) ฉันตรวจสอบรหัสข้อผิดพลาดที่ Postgres ส่งคืนแล้ว แต่ไม่พบรหัสที่เกี่ยวข้องที่มีสายพันธุ์เดียวกัน อีกวิธีหนึ่งในการบรรลุเป้าหมายนี้คือการเชื่อมต่อกับpostgresฐานข้อมูลและตรวจสอบว่ามีฐานข้อมูลที่ต้องการอยู่หรือไม่ ข้อที่สองค่อนข้างน่าเบื่อในการออกกำลังกาย มีวิธีใดบ้างที่จะบรรลุฟังก์ชันนี้ใน Postgres?
115 sql  database  postgresql  jdbc  ddl 

13
จะสร้างพูลการเชื่อมต่อใน JDBC ได้อย่างไร?
ใครสามารถให้ตัวอย่างหรือลิงค์เกี่ยวกับวิธีการสร้างพูลการเชื่อมต่อ JDBC จากการค้นหาใน google ฉันเห็นวิธีการต่างๆมากมายและค่อนข้างสับสน ในที่สุดฉันต้องการรหัสเพื่อส่งคืนjava.sql.Connectionวัตถุ แต่ฉันมีปัญหาในการเริ่มต้น ... ยินดีรับข้อเสนอแนะใด ๆ อัปเดต: ไม่มีjavax.sqlหรือjava.sqlมีการใช้งานการเชื่อมต่อร่วมกัน? เหตุใดจึงไม่ควรใช้สิ่งเหล่านี้ให้ดีที่สุด

3
การปิดการเชื่อมต่อ JDBC ในพูล
ส่วนรหัสมาตรฐานของเราสำหรับการใช้ JDBC คือ ... Connection conn = getConnection(...); Statement stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rset = stmt.executeQuery (sqlQuery); // do stuff with rset rset.close(); stmt.close(); conn.close(); คำถาม 1: เมื่อใช้ Connection Pool ควรปิด Connection เมื่อสิ้นสุดหรือไม่? ถ้าเป็นเช่นนั้นจุดประสงค์ของการรวมกลุ่มจะไม่สูญหายไปหรือ? และถ้าไม่แหล่งข้อมูลจะรู้ได้อย่างไรว่าเมื่อใดที่อินสแตนซ์ของการเชื่อมต่อว่างขึ้นและสามารถนำกลับมาใช้ใหม่ได้ ฉันสับสนเล็กน้อยเกี่ยวกับเรื่องนี้คำแนะนำใด ๆ ที่ชื่นชม คำถามที่ 2: วิธีการต่อไปนี้ใกล้เคียงกับมาตรฐานหรือไม่? ดูเหมือนจะพยายามรับการเชื่อมต่อจากพูลและหากไม่สามารถสร้างแหล่งข้อมูลได้ให้ใช้ DriverManager แบบเก่า เราไม่แน่ใจด้วยซ้ำว่าส่วนใดถูกเรียกใช้ในรันไทม์ ถามคำถามข้างบนซ้ำเราควรปิด Connection ที่มาจากวิธีดังกล่าวหรือไม่? …

16
วิธีการแปลง TimeStamp เป็น Date ใน Java?
ฉันจะแปลง 'timeStamp' เป็นdateหลังจากได้รับการนับใน java ได้อย่างไร รหัสปัจจุบันของฉันมีดังนี้: public class GetCurrentDateTime { public int data() { int count = 0; java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); java.sql.Date date = new java.sql.Date(timeStamp.getTime()); System.out.println(date); //count++; try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/pro", "root", ""); PreparedStatement statement = con.prepareStatement("select * from orders where status='Q' AND date=CURDATE()"); …
106 java  date  jdbc  timestamp 

6
MySQL 'สร้างสคีมา' และ 'สร้างฐานข้อมูล' - มีความแตกต่างหรือไม่
การเข้าสู่information_schemaฐานข้อมูลสูงสุดและจุดสูงสุดที่ข้อมูลเมตาสำหรับโครงการสัตว์เลี้ยงของฉันฉันรู้สึกลำบากในการทำความเข้าใจความแตกต่าง (ถ้ามี) ระหว่างcreate schemaคำสั่งและcreate databaseคำสั่งสำหรับ MySQL มีความแตกต่างกันหรือไม่? หากไม่เป็นเช่นนั้นนี่เป็นรูปแบบพฤติกรรมทั่วไปสำหรับฐานข้อมูลเชิงสัมพันธ์ (ฉันได้ยินมาว่าสำหรับฐานข้อมูลอื่นเช่น Oracle สคีมามีอยู่ในฐานข้อมูลแทนที่จะอยู่ในระดับเดียวกับฐานข้อมูล) ขอบคุณ!
105 sql  mysql  oracle  jdbc  database 

6
JdbcTemplate queryForInt / Long เลิกใช้แล้วใน Spring 3.2.2 ควรแทนที่ด้วยอะไร
เมธอด queryforInt / queryforLong ใน JdbcTemplate เลิกใช้แล้วใน Spring 3.2 ฉันไม่สามารถหาสาเหตุหรือสิ่งที่ถือเป็นแนวทางปฏิบัติที่ดีที่สุดในการแทนที่โค้ดที่มีอยู่โดยใช้วิธีการเหล่านี้ วิธีการทั่วไป: int rowCount = jscoreJdbcTemplate.queryForInt( "SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?", playerNameKey.toUpperCase(), teamNameKey.toUpperCase() ); ตกลงวิธีการข้างต้นจะต้องเขียนใหม่ดังนี้: Object[] params = new Object[] { playerNameKey.toUpperCase(), teamNameKey.toUpperCase() }; int rowCount = jscoreJdbcTemplate.queryForObject( "SELECT count(*) FROM _player WHERE nameKey …

13
Oracle JDBC ojdbc6 Jar เป็น Maven Dependency
ดูเหมือนว่าฉันไม่สามารถให้ Maven มัดไฟล์ ojdbc6.jar ไว้ในไฟล์ war ของโปรเจ็กต์ของฉันได้ ฉันให้มันทำงานภายในไฟล์ POM เมื่อระบุการอ้างอิงโดยตรงสำหรับเครื่องมือไฮเบอร์เนต แต่จะไม่รวมเข้ากับไฟล์ war ของโปรเจ็กต์ดังนั้นโปรเจ็กต์ของฉันจะไม่ทำงานบน Tomcat ฉันได้ลองใช้วิธีแก้ปัญหาทุกอย่างที่หาได้จากอินเทอร์เน็ตรวมถึงที่ระบุไว้สำหรับคำถามนี้ที่นี่: ค้นหาไดรเวอร์ Oracle JDBC ในที่เก็บ Maven ล่าสุดฉันทำสิ่งต่อไปนี้: ดาวน์โหลดไฟล์ jar ลงในเครื่องของฉัน รันคำสั่งต่อไปนี้เพื่อติดตั้ง jar ในที่เก็บโลคัลของฉัน: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true (ฉันได้ลองใช้คำสั่งนั้นทุกรูปแบบแล้วเช่นกัน) สุดท้ายฉันใส่การอ้างอิงลงในไฟล์ pom ของฉัน: <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version> </dependency> ฉันรันบิลด์ใหม่ทั้งหมด แต่ล้มเหลว: mvn -U clean package …
103 oracle  maven  jdbc  war 

19
ORA-01882: ไม่พบเขตเวลา
ฉันกำลังเข้าถึง Oracle Database จากแอปพลิเคชัน java เมื่อฉันเรียกใช้แอปพลิเคชันของฉันฉันได้รับข้อผิดพลาดต่อไปนี้: java.sql.SQLException: ORA-00604: ข้อผิดพลาดเกิดขึ้นที่ SQL แบบเรียกซ้ำระดับ 1 ORA-01882: ไม่พบเขตเวลา
103 oracle  jdbc  timezone 

6
แบบสอบถามจำนวนมากดำเนินการใน java ในคำสั่งเดียว
สวัสดีฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะดำเนินการบางอย่างเช่นนี้โดยใช้ JDBC เนื่องจากปัจจุบันมีข้อยกเว้นแม้ว่าจะเป็นไปได้ในเบราว์เซอร์แบบสอบถาม MySQL ก็ตาม "SELECT FROM * TABLE;INSERT INTO TABLE;" ในขณะที่ฉันตระหนักดีว่าเป็นไปได้ที่จะมีการแยกสตริงแบบสอบถาม SQL และคำสั่งดำเนินการสองครั้ง แต่ฉันสงสัยว่ามีวิธีการแบบครั้งเดียวหรือไม่ String url = "jdbc:mysql://localhost:3306/"; String dbName = "databaseinjection"; String driver = "com.mysql.jdbc.Driver"; String sqlUsername = "root"; String sqlPassword = "abc"; Class.forName(driver).newInstance(); connection = DriverManager.getConnection(url+dbName, sqlUsername, sqlPassword);
101 java  mysql  sql  jdbc 

10
ไม่สามารถออกคำสั่งการจัดการข้อมูลด้วย executeQuery ()
ใน MySQL ฉันมีสองตารางtableAและtableB. ฉันกำลังพยายามดำเนินการสองคำสั่ง: executeQuery(query1) executeQuery(query2) แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: can not issue data manipulation statements with executeQuery(). สิ่งนี้หมายความว่า?
100 java  mysql  jdbc 

2
การใช้ PreparedStatement ซ้ำหลาย ๆ ครั้ง
ในกรณีของการใช้ PreparedStatement กับการเชื่อมต่อทั่วไปเพียงครั้งเดียวโดยไม่มีพูลใด ๆ ฉันสามารถสร้างอินสแตนซ์ใหม่สำหรับการดำเนินการ dml / sql ทุกครั้งที่มีอำนาจของคำสั่งที่เตรียมไว้ได้หรือไม่ ฉันหมายถึง: for (int i=0; i<1000; i++) { PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); preparedStatement.close(); } แทน: PreparedStatement preparedStatement = connection.prepareStatement(sql); for (int i=0; i<1000; i++) { preparedStatement.clearParameters(); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); } preparedStatement.close(); คำถามของฉันเกิดจากการที่ฉันต้องการใส่รหัสนี้ในสภาพแวดล้อมแบบมัลติเธรดคุณสามารถให้คำแนะนำได้หรือไม่? ขอบคุณ

7
Class.forName (“ oracle.jdbc.driver.OracleDriver”) ใช้งานจริงเป็นอย่างไรขณะเชื่อมต่อกับฐานข้อมูล
จะสั่งอะไร Class.forName("oracle.jdbc.driver.OracleDriver") ขณะเชื่อมต่อกับฐานข้อมูล Oracle หรือไม่ มีวิธีอื่นในการทำสิ่งเดียวกันหรือไม่?
93 java  jdbc 

5
org.postgresql.util.PSQLException: FATAL: ขออภัยมีลูกค้ามากเกินไปแล้ว
ฉันพยายามเชื่อมต่อกับฐานข้อมูล Postgresql ฉันได้รับข้อผิดพลาดต่อไปนี้: ข้อผิดพลาด: org.postgresql.util.PSQLException: FATAL: ขออภัยมีลูกค้ามากเกินไปแล้ว ข้อผิดพลาดหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร server.propertiesไฟล์ของฉันกำลังติดตาม: serverPortData=9042 serverPortCommand=9078 trackConnectionURL=jdbc:postgresql://127.0.0.1:5432/vTrack?user=postgres password=postgres dst=1 DatabaseName=vTrack ServerName=127.0.0.1 User=postgres Password=admin MaxConnections=90 InitialConnections=80 PoolSize=100 MaxPoolSize=100 KeepAliveTime=100 TrackPoolSize=120 TrackMaxPoolSize=120 TrackKeepAliveTime=100 PortNumber=5432 Logging=1
93 java  sql  postgresql  jdbc 

5
วิธีรับจำนวนคอลัมน์จาก JDBC ResultSet
ฉันใช้CsvJdbc (เป็นไดรเวอร์ JDBC สำหรับไฟล์ csv) เพื่อเข้าถึงไฟล์ csv ฉันไม่รู้ว่าไฟล์ csv มีกี่คอลัมน์ ฉันจะหาจำนวนคอลัมน์ได้อย่างไร มีฟังก์ชัน JDBC สำหรับสิ่งนี้หรือไม่? ฉันไม่พบวิธีการใด ๆ สำหรับสิ่งนี้ใน java.sql.ResultSet สำหรับการเข้าถึงไฟล์ฉันใช้รหัสที่คล้ายกับตัวอย่างในเว็บไซต์ CsvJdbc
92 java  jdbc  csv  resultset 


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.