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

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

19
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver ใน Eclipse
เกิดอะไรขึ้นกับรหัสมีข้อผิดพลาดมากมายขณะทำการดีบัก ฉันกำลังเขียนโค้ดสำหรับคลาสซิงเกิลตันเพื่อเชื่อมต่อกับ mysql ฐานข้อมูล นี่คือรหัสของฉัน package com.glomindz.mercuri.util; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; public class MySingleTon { String url = "jdbc:mysql://localhost:3306/"; String dbName = "test"; String driver = "com.mysql.jdbc.Driver"; String userName = "root"; String password = ""; private static MySingleTon myObj; private Connection Con ; private MySingleTon() { …

16
java.sql.SQLException ที่น่าอับอาย: ไม่พบไดรเวอร์ที่เหมาะสม
ฉันกำลังพยายามเพิ่ม JSP ที่เปิดใช้งานฐานข้อมูลลงในแอปพลิเคชัน Tomcat 5.5 ที่มีอยู่ (GeoServer 2.0.0 หากช่วยได้) ตัวแอปพูดคุยกับ Postgres ได้ดีดังนั้นฉันจึงรู้ว่าฐานข้อมูลพร้อมแล้วผู้ใช้สามารถเข้าถึงได้ทุกสิ่งที่ดี สิ่งที่ฉันพยายามทำคือแบบสอบถามฐานข้อมูลใน JSP ที่ฉันได้เพิ่มเข้าไป ฉันใช้ตัวอย่างการกำหนดค่าในตัวอย่างแหล่งข้อมูล Tomcatนอกกรอบไปแล้ว taglibs ที่จำเป็นอยู่ในตำแหน่งที่ถูกต้อง - ไม่มีข้อผิดพลาดใด ๆ เกิดขึ้นถ้าฉันมี taglib refs ดังนั้นจึงพบ JAR เหล่านั้น ไดรเวอร์ postgres jdbc, postgresql-8.4.701.jdbc3.jar อยู่ใน $ CATALINA_HOME / common / lib นี่คือด้านบนของ JSP: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" …

5
เหตุใดเราจึงใช้ DataSource แทน DriverManager
ฉันกำลังอ่านข้อกำหนด Java JDBC (ข้อ 4) และพบคำสั่งนี้: แหล่งข้อมูล - อินเทอร์เฟซนี้ถูกนำมาใช้ใน JDBC 2.0 Optional Package API เป็นที่ต้องการมากกว่า DriverManager เนื่องจากช่วยให้รายละเอียดเกี่ยวกับแหล่งข้อมูลพื้นฐานโปร่งใสกับแอปพลิเคชัน สิ่งที่ฉันพยายามทำความเข้าใจคือความแตกต่างระหว่าง a Connectionและ a DataSourceและเหตุใดจึงมีอยู่ ฉันหมายถึงบล็อกด้านบนบอกว่ารายละเอียดเกี่ยวกับแหล่งข้อมูลนั้นโปร่งใสสำหรับแอปพลิเคชัน แต่จะไม่ทำให้คุณสมบัติฐานข้อมูลภายนอกเช่นชื่อผู้ใช้รหัสผ่าน url ฯลฯ ในไฟล์คุณสมบัติแล้วใช้ DriverManager ทำงานในลักษณะเดียวกันหรือไม่ และDataSourceอินเทอร์เฟซถูกสร้างขึ้นเพื่อให้มีวิธีส่งคืนการเชื่อมต่อทั่วไปที่สามารถรวมกันได้หรือไม่? ใน Java EE แอ็พพลิเคชันเซิร์ฟเวอร์ใช้อินเทอร์เฟซนี้และแอปพลิเคชันที่ปรับใช้เพื่อให้มีการอ้างอิงไปยังแหล่งข้อมูลแทนการเชื่อมต่อหรือไม่
89 java  jdbc  datasource 

6
Java: แทรกหลายแถวใน MySQL ด้วย PreparedStatement
ฉันต้องการแทรกหลายแถวลงในตาราง MySQL พร้อมกันโดยใช้ Java จำนวนแถวเป็นแบบไดนามิก เมื่อก่อนผมทำ ... for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); } ฉันต้องการปรับให้เหมาะสมเพื่อใช้ไวยากรณ์ที่รองรับ MySQL: INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...] แต่ด้วยความที่PreparedStatementฉันไม่รู้วิธีทำสิ่งนี้เนื่องจากฉันไม่รู้มาก่อนว่าarrayจะมีองค์ประกอบกี่อย่าง ถ้าเป็นไปไม่ได้ด้วย a PreparedStatementฉันจะทำได้อย่างไร (และยังคงหลบหนีค่าในอาร์เรย์)

5
PreparedStatement setNull (.. )
Java PreparedStatement ให้ความเป็นไปได้ในการตั้งค่า Null อย่างชัดเจน ความเป็นไปได้นี้คือ: prepStmt.setNull(parameterIndex, Types.VARCHAR); ความหมายของการเรียกนี้เหมือนกับเมื่อใช้ setType เฉพาะกับพารามิเตอร์ null หรือไม่ prepStmt.setString(null); เหรอ?

10
การจัดการค่า DATETIME 0000-00-00 00:00:00 ใน JDBC
ฉันได้รับข้อยกเว้น (ดูด้านล่าง) หากฉันพยายามทำ resultset.getString("add_date"); สำหรับการเชื่อมต่อ JDBC กับฐานข้อมูล MySQL ที่มีค่า DATETIME เป็น 0000-00-00 00:00:00 (ค่ากึ่งว่างสำหรับ DATETIME) แม้ว่าฉันจะพยายามรับค่าเป็นสตริงไม่ใช่ในฐานะ วัตถุ. ฉันทำได้โดยการทำ SELECT CAST(add_date AS CHAR) as add_date ซึ่งได้ผล แต่ดูเหมือนงี่เง่า ... มีวิธีที่ดีกว่านี้ไหม จุดของฉันเป็นที่ฉันต้องการเพียงแค่สตริง DATETIME ดิบดังนั้นฉันสามารถแยกตัวเองเป็นอยู่ หมายเหตุ:นี่คือที่มาของ 0000: (จากhttp://dev.mysql.com/doc/refman/5.0/en/datetime.html ) ค่า DATETIME, DATE หรือ TIMESTAMP ที่ผิดกฎหมายจะถูกแปลงเป็นค่า "ศูนย์" ของประเภทที่เหมาะสม ('0000-00-00 00:00:00' หรือ '0000-00-00') ข้อยกเว้นเฉพาะคือข้อยกเว้นนี้: SQLException: Cannot …
85 java  sql  date  jdbc 

5
WildFly 18.0.1 ไดรเวอร์ JDBC: ข้อผิดพลาดภายใน (newValue เป็นโมฆะ)
ฉันมีปัญหาการกำหนดค่าไดรเวอร์ JDBC ในWildFly (18.0.1) เมื่อใดก็ตามที่ฉันเปิด(การกำหนดค่า / ระบบย่อย / แหล่งข้อมูลและไดรเวอร์ / ไดรเวอร์ JDBC) , ฉันเข้าใจ: ข้อผิดพลาดภายใน (รายละเอียด: newValue เป็นค่าว่าง) ภาพข้อผิดพลาด 1: รูปภาพข้อผิดพลาด 2: ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

3
การปรับให้เหมาะสมของ Oracle JDBC: เปิดใช้งานแคช PreparedStatement ในแอปพลิเคชัน Spring boot
ฉันมีแอพพลิเคชั่น Spring Boot REST ที่เชื่อมต่อกับฐานข้อมูล Oracle เรากำลังใช้ JDBC โดยใช้ JdbcTemplate คุณสมบัติฐานข้อมูล Oracle ได้รับจากการตั้งค่า3 แอพพลิเคชั่นคุณสมบัติเหล่านี้: spring.datasource.url spring.datasource.username spring.datasource.password แอปพลิเคชันนี้ใช้ HikariCP จากเว็บไซต์ HikariCP ฉันรู้ว่าพูลนี้ไม่แคช PreparedStatements เนื่องจากไดรเวอร์ JDBC เป็นโปรแกรมติดตั้งที่ดีที่สุด ตอนนี้ฉันจะระบุและที่ไหนเพื่อให้มั่นใจว่าสิ่งเหล่านี้: โปรแกรมควบคุม Oracle JDBC (ojdbc7.jar) แคช PreparedStatements มีวิธีการกำหนดจำนวน PreparedStatements ที่สามารถแคชได้หรือไม่ จากhttps://howtodoinjava.com/java/jdbc/best-practices-to-improve-jdbc-performance/เราจะเห็นว่า ตรวจสอบให้แน่ใจว่าฐานข้อมูลของคุณถูกตั้งค่าเป็นขนาดแพ็คเก็ตสูงสุดและไดรเวอร์ตรงกับขนาดแพ็คเก็ตนั้น สำหรับการดึงชุดผลลัพธ์ที่มีขนาดใหญ่กว่านี้จะลดจำนวนของแพ็กเก็ตทั้งหมดที่ส่ง / รับระหว่างไดรเวอร์และเซิร์ฟเวอร์ ในการปฏิบัติตามข้างต้นสิ่งที่เป็นขั้นตอนที่จำเป็นในการ ค้นหาขนาดแพ็คเก็ต Oracle DB Server ค้นหาว่า Oracle DB Server …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.