आपण Java डेटाबेस किंवा org.springframework.jdbc.BadSqlGrammarException सह संवाद साधण्यासाठी JdbcTemplate of Spring Framework वापरत असल्यास जावा प्रोग्रामरचे स्वागत करा: योग्य जागा. मी तुम्हाला आधी शिकवले Java և Spring मध्ये JdbcTemplate कसे वापरावेthis या लेखात मी तुम्हाला कसे ठीक करावे ते शिकवतो “org.springframework.jdbc.BadSqlGrammarException: डेटा प्रकार व्हेरिएबल्समधून डेटा ट्रान्सफरला अद्याप परवानगी नाही “ चुकीचा स्प्रिंग जावा प्रोग्राम.

ही समस्या उद्भवते जेव्हा तुम्ही स्प्रिंग फ्रेमवर्क JdbcTempalte अपडेट पद्धत वापरून डेटा इन्स्टॉल किंवा अपडेट करण्याचा प्रयत्न करता, तुमच्या डेटामध्ये काही शून्य मूल्ये असतात. अद्ययावत पद्धत PreparedStaement ला ऑब्जेक्ट प्रकाराचा अंदाज लावण्यास अनुमती देते – बहुतेक JDBC चालकांना शून्य ऑब्जेक्ट प्रकाराचा अंदाज लावण्यात अडचण येते.

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;

खराब एसक्यूएल व्याकरण [insert into EMP.dbo.Employee (EMP_ID, EMP_NAME, EMP_DOJ) values ( ?, ?, ? )]; अंगभूत अपवाद com.microsoft.sqlserver.jdbc.SQLServerException आहे.

डेटा प्रकार व्हेरिएबलमधून तारखेत रूपांतरित करण्याची परवानगी नाही. ही क्वेरी चालवण्यासाठी CONVERT फंक्शन वापरा.

org.springframework.jdbc.support येथे

.SQLStateSQLExceptionTranslator.doTranslate (SQLStateSQLExceptionTranslator.java:98)

org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator येथे

.translate (AbstractFallbackSQLExceptionTranslator.java:72)

org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator येथे

.translate (AbstractFallbackSQLExceptionTranslator.java:80)

org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator येथे

.translate (AbstractFallbackSQLExceptionTranslator.java:80)

org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:602) वर

org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:811) वर

org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:867)

org.springframework.jdbc.core.JdbcTemplate.update (JdbcTemplate.java:875) वर

Org.springframework.jdbc.BadSqlGrammarException चे և समाधान. डेटा प्रकार व्हेरिएबलमधून तारखेत रूपांतरित करण्याची परवानगी नाही. चुकीचे:

आता या त्रुटीचे खरे कारण आणि उपाय पाहू

कारण:

स्प्रेडशीटमध्ये डेटा टाकण्यासाठी आम्ही JdbcTemplate.update (SQL, object …) पद्धत वापरतो. ही पद्धत JDBC ड्रायव्हरला प्रकार माहिती पाठवत नाही, जे JDBC प्रकार खालीलप्रमाणे पास करते: SqlTypeValue.TYPE_UNKNOWN: आणि शून्य मूल्यांसाठी, जेडीबीसी ड्रायव्हरच्या मेटाडेटा नावाचा वापर स्टार्टअपच्या वेळी ऑब्जेक्टच्या प्रकाराचा अंदाज घेण्यासाठी करते.

जेडीबीसी ड्रायव्हरची नावे जेकनेक्टने सुरू होतात, SQLServer:, և अपाचे डर्बीने sqlType प्रकार म्हणून परिभाषित केले. VARCHAR, परंतु मायक्रोसॉफ्ट एसक्यूएल सर्व्हरपासून सुरू होणाऱ्या ड्रायव्हर्ससाठी, याला म्हणतात:

ps.setObject(paramIndex, null);

जे जेडीबीसी ड्रायव्हरला शून्य मूल्यांसाठी एसक्यूएल प्रकाराचा अंदाज लावण्यास अनुमती देते – तारीख स्तंभासाठी, मायक्रोसॉफ्ट एसक्यूएल सर्व्हर ड्रायव्हर्सने त्याचे रूपांतर केले

भिन्न. खरे सांगायचे तर, जर तुम्ही तुमचे मूल्य लपेटून SQL- प्रकार माहिती स्पष्टपणे दिली तर हा प्रश्न येऊ नये SqlParameterValue (प्रकार, मूल्य) ऑब्जेक्ट – ते पास करा

JdbcTemplate.update(sql, object...)

अधिक तपशीलांसाठी पहा setNull (PreparedStatement ps, int paramIndex, int sqlType, String typeName) पद्धत: org.springframework.jdbc.core.StatementCreatorUtils पाठ:,

आता, जावा-आधारित स्प्रिंग प्रोग्राममध्ये JdbcTemplate वापरताना या समस्येचे निराकरण करण्यासाठी मूळ कोड և सुधारित कोड पाहू.

अपवाद मूळ:

Employee emp = new Employee(1, "Rakesh", new Date())
this.jdbcTemplate.update("insert into EMP.dbo.Employee 
(EMP_ID, EMP_NAME, EMP_DOJ values ( ?, ?, ?)"
                                , emp.getEmpId()
                                , emp.getEmpName()
                                , emp.getEmpDOJ() ));

सुधारित पासवर्ड ज्याने त्रुटी सुधारल्या.

Employee emp = new Employee(1, "Rakesh", new Date())
this.jdbcTemplate
.update("insert into EMP.dbo.Employee (EMP_ID, EMP_NAME, EMP_DOJ values ( ?, ?, ?)"
         , new SqlParameterValue(java.sql.Types.DATE, emp.getEmpId())
         , new SqlParameterValue(java.sql.Types.DATE, emp.getEmpName())
         , new SqlParameterValue(java.sql.Types.DATE, emp.getEmpDOJ()) ));

एवढे जावा -स्प्रिंग अनुप्रयोगांमध्ये ही JdbcTemplate त्रुटी कशी दूर करावी, “org.springframework.jdbc.BadSqlGrammarException: डेटा प्रकार व्हेरिएबलमधून आजपर्यंत रूपांतरित करण्याची परवानगी नाही” त्रुटी येते कारण जेडीबीसी डिस्क स्प्रेडशीटमध्ये डेटा टाकताना किंवा अपडेट करताना शून्य मूल्यांसाठी चुकीची प्रकारची माहिती पाठवते. या लेखात दाखवल्याप्रमाणे, JdbcTemplate वापरून स्प्रेडशीटमध्ये नोंदी ठेवून किंवा अद्ययावत करून प्रकार निर्दिष्ट करून तुम्ही ही त्रुटी दूर करू शकता. हे वापरताना लक्षात ठेवण्यासाठी सर्वात महत्वाच्या गोष्टींपैकी एक आहे JdbcTemplate.update () डेटाबेसमध्ये रेकॉर्ड ठेवण्याची पद्धत

इतर: जावा एरर – अपवाद शिकवण्या सामान्य समस्या दूर करण्यासाठी

  • java.lang.ClassNotFoundException: org.Springframework.Web.Context.ContextLoaderListener (उपाय)
  • java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet Spring MVC Application in Java [solution]
  • जावा मध्ये MySQL डेटाबेसशी कसे कनेक्ट करावे? (शैक्षणिक:)
  • “चूक कशी दुरुस्त करावी. मूळ शोधण्यात किंवा डाउनलोड करण्यात अयशस्वी श्रेणी:“ग्रहण? (मार्गदर्शन:)
  • java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory त्रुटी (उपाय)
  • java.sql.SQLException: सोयीस्कर नाही चालक: सापडले ‘jdbc: mysql: // लोकलहोस्ट: 3306 / mysql: [Solution]
  • “JVM इंस्टॉलेशन सापडले नाही, कृपया 64-बिट JDK स्थापित करा” त्रुटी कशी दुरुस्त करावी? (उपाय)
  • जावा SSL मध्ये प्रमाणन मार्ग कसा निश्चित करावा? (मार्गदर्शन:)
  • जावा मध्ये ConcurrentModificationException कसे टाळावे? (शैक्षणिक:)
  • जावा मध्ये java.lang.NumberFormatException ची 10 सामान्य कारणे (शैक्षणिक:)
  • java.sql.SQLServerException: निर्देशांक 58 श्रेणीबाहेर: जेडीबीसी (उपाय)
  • Java.lang.unsupportedclassversionerror समर्थित नाही Major.minor आवृत्ती 50.0 (उपाय)
  • “Javac” कसे ठीक करावे ते अंतर्गत किंवा बाह्य आदेश म्हणून ओळखले जात नाही (उपाय)
  • कसे सोडवायचे “करू शकत नाही तयार करा: जावा व्हर्च्युअल मशीन Java जावा मध्ये त्रुटी? (उपाय)
  • Java मध्ये java.lang.ArrayIndexOutOfBoundsException ची सामान्य कारणे. (उपाय)
  • Java.sql.BatchUpdateException कसे ठीक करावे? स्ट्रिंग किंवा बायनरी डेटा: कापला जाईल (मार्गदर्शन:)
  • Java.lang.ClassNotFoundException कसे सोडवायचे: com.mysql.jdbc:चालक: चुकीचे? (इशारा:)
  • जावा मध्ये NoClassDefFoundError ची 5 कारणे (शैक्षणिक:)
  • कसे ठीक करावे? कारण: java.lang.NoClassDefFoundError: org / apache / log4j / Logger (उपाय)
  • कारण “java.lang.SecurityException: गहाळ की वैशिष्ट्य वैशिष्ट्य गहाळ वैशिष्ट्य” [solution]
  • कसे दुरुस्त करणे “अभिव्यक्तीची बेकायदेशीर सुरुवात” जावामध्ये वेळेची चूक केली? (शैक्षणिक:)
  • जावा मध्ये “वर्ग, इंटरफेस किंवा अपेक्षित enum” संकलक त्रुटीचे कारण आणि निराकरण. (दुरुस्त करणे)
  • जावामध्ये “व्हेरिएबल कदाचित सुरू होऊ शकत नाही” संकलित वेळ त्रुटी कशी दूर करावी? (उत्तर:)
  • Java.lang.classnotfoundexception oracle.jdbc.driver.oracledriver कसे सोडवायचे? (उपाय)

हा लेख आतापर्यंत वाचल्याबद्दल धन्यवाद. जर तुम्हाला ही माहिती तुमच्या चुकीचे निराकरण करण्यासाठी उपयुक्त वाटत असेल तर ती तुमच्या मित्र आणि सहकाऱ्यांसोबत शेअर करा. तुम्हाला काही समस्या किंवा शंका असल्यास, कृपया विचारा किंवा चिठ्ठी सोडा.