Вопросы с тегами [jdbc]

1

голосов
2

ответ
40

Просмотры

Is it possible to insert row into the child table of FOREIGN KEY?

I have three tables in my database: COMPANY(ID, NAME) COUPON(ID, TITLE) COMPANY_COUPON(COMPANY_ID, COUPON_ID) Company can create coupons, so when it creates coupon, coupon's ID and ID of the company will be added into COMPANY_COUPON table. When company deletes coupon it also will be deleted from COUPON and COMPANY_COUPON due to FOREIGN KEY. When I delete company it also deleted from COMPANY and COMPANY_COUPON due to FOREIGN KEY, but all its coupons stay in COUPON table, I tried to add into COUPON table FOREIGN KEY(ID) REFERENCES COMPANY_COUPON(COUPON_ID), but because of it I can't insert new coupons into COUPON table. Will be happy for answers how to create right tables and how to add something that will help to existing tables. Maybe some joins can help with it, I'm really not strong in sql command yet, sorry... Also, i was using this method to join COMPANY_ID and COUPON_ID in COMPANY_COUPON table, maybe there is some better way to do it. @Override public void linkCompanyCoupon(long companyID, long couponID) throws CouponSystemException { Connection connection = pool.getConnection(); String CREATE_COUPON = "INSERT INTO COMPANY_COUPON (COMPANY_ID, COUPON_ID) VALUES (?,?)"; try (PreparedStatement pstmt = connection.prepareStatement(CREATE_COUPON)) { pstmt.setLong(1, companyID); pstmt.setLong(2, couponID); pstmt.executeUpdate(); } catch (SQLException e) { throw new CouponSystemException("Linking company to the coupon is failed. ", e); } finally { pool.returnConnection(connection); } } This one is creates coupon, and inside it i use linkCompanyCoupon(); public void createCoupon(Coupon coupon) throws CouponSystemException { // Checking if name of the new coupon is not duplicate Optional isCouponTitleDuplicate = Optional.ofNullable(couponDBDAO.getCouponByTitle(coupon.getTitle())); if (!isCouponTitleDuplicate.isPresent()) { couponDBDAO.createCoupon(coupon); companyDBDAO.linkCompanyCoupon(loggedCompany, couponDBDAO.getCouponByTitle(coupon.getTitle()).getId()); } else { throw new CouponSystemException("Coupon title: " + coupon.getTitle() + " already exists in database, titles and IDs of the coupons must be unique."); } }
Vladimir
0

голосов
0

ответ
5

Просмотры

Использование Slick с Куду / Impala

Таблицы Куду могут быть доступны через Impala, таким образом, его драйвер JDBC. Благодаря тому, что это через стандартный, доступная Java / лестницу JDBC API. Мне было интересно, если это возможно, использовать пятно для него. Или, если не какие-либо другие рамки дб высокого уровня поддержки impla Scala / куды.
abalcerek
1

голосов
2

ответ
612

Просмотры

Нажатие вниз предикат фильтра в Спарк JDBC Свойства

Как я могу настроить мою искровые варианты JDBC, чтобы убедиться, что я нажимаю вниз предикат фильтра в базу данных, а не загружать все первым? Я использую искру 2.1. Не удается получить правильный синтаксис для использования, и я знаю, что могу добавить, где положение после загрузки (), но это, очевидно, погрузить все первым. Я пытаюсь ниже, но в то время как этот фильтр будет занять несколько секунд при работе в моем дб клиенте не возвращает ничего и просто продолжает работать, пытаясь оттолкнуть предикат от искры JDBC. Вал jdbcReadOpts = Map ( "URL" -> URL, "драйвер" -> драйвер, "пользователь" -> пользователя, "пароль" -> пройти, "dbtable" -> tblQuery, "inferSchema" -> "истина") Вэл предикат = "ДАТА (TS_COLUMN) = '2018-01-01'" // Также пробовал ->
horatio1701d
1

голосов
1

ответ
21

Просмотры

«Вне диапазона» ошибка вставки мобильного телефона из сервлета в SQL

Я пытаюсь вставить номер мобильного телефона через подготовленный satement, но я получаю сообщение об ошибке с указанием, что тип из диапазона даже для двойного типа. pstmt.setDouble (6, 9677627718); Как вставить номер мобильного телефона от сервлета SQL? Он говорит, что из диапазона даже для двойных данных.
Bala
1

голосов
0

ответ
930

Просмотры

Spring SimpleJdbcCall Oracle sql/pl - Unable to determine the correct call signature - multiple procedures/functions/signatures

I have a stored procedure in a package which has it defined with three different method signatures in the same package. They vary by only a few parameters (each calls the next with a few default values). I've over-simplified the list of columns for the sake of brevity here. I have about 55 fields in the procedure I'm calling. I am using the Spring class called "MapSqlParameterSource" to define the fields values I am providing: SqlParameterSource params = new MapSqlParameterSource() .addValue("pi_session_id", piSessionId) .addValue("pi_site_id", piSiteId) .addValue("pi_address_id", piAddressId) .addValue("po_status_cd", null) .addValue("po_status_mg", null); I'm using a simple jdbc call to define the stored procedure that I want to call: SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) .withSchemaName("myschema") .withCatalogName("address_package") .withProcedureName("p_post_address"); And then I execute the procedure with this call: Map resultsMap = jdbcCall.execute(params); And I typically log out the results for fun while I'm dev'ing these up. for (String key : resultsMap.keySet()) { logger.info("p_post_address - Key: " + key + " object: " + resultsMap.get(key)); } And then I access the output fields like this: String statusMessage = (String) resultsMap.get("po_status_mg"); BigDecimal statsCd = (BigDecimal) resultsMap.get("po_status_cd"); This works perfectly for Procedures that aren't overloaded! However, when I call this particular procedure, it gives me this error: org.springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - multiple procedures/functions/signatures for 'P_POST_ADDRESS' Then I attempted to get tricky, and specify exactly which parameters should be used to call the stored procedure, so that it could match the overloaded method I wanted. SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) .withSchemaName("myschema") .withCatalogName("address_package") .withProcedureName("p_post_address"); jdbcCall.addDeclaredParameter(new SqlParameter("pi_session_id", OracleTypes.NUMBER)); jdbcCall.addDeclaredParameter(new SqlParameter("pi_site_id", OracleTypes.VARCHAR)); jdbcCall.addDeclaredParameter(new SqlParameter("pi_address_id", OracleTypes.NUMBER)); jdbcCall.addDeclaredParameter(new SqlOutParameter("po_status_cd", OracleTypes.NUMBER)); jdbcCall.addDeclaredParameter(new SqlOutParameter("po_status_mg", OracleTypes.VARCHAR)); This resulted in the same error. org.springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - multiple procedures/functions/signatures for 'P_POST_ADDRESS' I eventually found out I need to add this option: jdbcCall.withoutProcedureColumnMetaDataAccess(); And that works! But I have no idea why. Could someone explain why you need to add the declared parameters addDeclaredParameter and also to call withoutProcedureColumnMetaDataAccess?
Josh Hull
1

голосов
1

ответ
544

Просмотры

Как установить MSSQL JDBC драйвер для сливных / Кафки

баночка / USR / Библиотека / JVM / Java-8-OpenJDK-amd64 / JRE / Библиотека / внутр документация создает впечатление, что все, что я сделать, это добавить / путь / к / баночку на пути к классам и начать сливающиеся. Что мне не хватает. Кроме того, это мой JSON для создания соединителя. { "Имя": "JDBC-источник", "конфигурация": { "connector.class": "com.microsoft.sqlserver.jdbc.SQLServerDriver", "tasks.max": "1", "connection.url": "JDBC: SQLServer: // SQL: 1443; User = кто-то; Password = пароль; Database = некоторая-дебютантка", "режим": "приращение", "incrementing.column.name": "идентификатор", «topic.prefix «: "электронная почта", "topic.whitelist": "EventLog", "имя": "JDBC-источник"}} Кроме того, это мой JSON для создания соединителя. { "Имя": "JDBC-источник", "конфигурация": { "connector.class": "com.microsoft.sqlserver.jdbc.SQLServerDriver", "tasks.max": "1", "connection.url": "JDBC: SQLServer: // SQL: 1443; User = кто-то; Password = пароль; Database = некоторая-дебютантка", "режим": "приращение", "incrementing.column.name": "идентификатор", «topic.prefix «: "электронная почта", "topic.whitelist": "EventLog", "имя": "JDBC-источник"}} Кроме того, это мой JSON для создания соединителя. { "Имя": "JDBC-источник", "конфигурация": { "connector.class": "com.microsoft.sqlserver.jdbc.SQLServerDriver", "tasks.max": "1", "connection.url": "JDBC: SQLServer: // SQL: 1443; User = кто-то; Password = пароль; Database = некоторая-дебютантка", "режим": "приращение", "incrementing.column.name": "идентификатор", «topic.prefix «: "электронная почта", "topic.whitelist": "EventLog", "имя": "JDBC-источник"}}
matthewdaniel
1

голосов
0

ответ
49

Просмотры

Java generics and reflection to create and set model for SimpleJdbcCall in Spring

Я пытаюсь использовать отражение и дженерики для создания моделей с использованием SimpleJdbcCall. На данный момент я должен создать отдельную картографа за модель, которую я добавить к проекту. Я хотел бы создать картограф, который использует отражение для просто сопоставить модель, так что я только должен написать один картограф (в приведенном ниже способом). Вот моя реализация до сих пор: @Repository общественного абстрактного класса DAO {частного окончательного DataSource DataSource; ДАО (конечный источник данных DataSource) {this.dataSource = Datasource; } Список защищенных buildModels (SqlParameterSource sqlSource, класс modelBase) {конечная строка RESULT_SET = "RESULT_SET"; возвращение (Список) новый SimpleJdbcCall (DataSource) .withCatalogName ( "someCatalog") .withSchemaName ( "someSchema"). withProcedureName (getProcForModel (modelBase)) .returningResultSet (RESULT_SET (ResultSet RS, внутр RowNum) -> {/ * 1. получить реальный экземпляр ссылки modelBase, который передается в 2. получить ссылки на сеттеры экземпляра modelBase или быть в состоянии выбрать, где установить вещи в конструкторе петли modelBase 3. через ResultSet, настройка параметров на модели, где название инкубационного или конструктор арга совпадает с именем столбца в ResultSet * /}). выполнить ( sqlSource) .get (RESULT_SET); }} Класс modelBase ссылки прошли в, очевидно, будет класс, который наследует от абстрактного класса ModelBase. Проблемы, я перечислил выше, являются вещи, которые я не в состоянии понять, как я должен делать с помощью Reflection API в Java. Кто-нибудь знает, как сделать то, что я пытаюсь достичь? Кроме того, некоторые из значений, поступающих из Resultset не может быть струнные, а скорее например, даты и логическое значение. Как бы я рефлекторно вызвать правильный метод на Resultset? т.е. getInts () или GetDate () или getBoolean () и т.д.
resu
1

голосов
0

ответ
65

Просмотры

Data not inserted in ms sql database from android studio app

I had developed an android application connected with ms sql database when I try to insert data it does'n show any error but on sql data is not inserted. Please help me. I used androidstudio 3.0.1, Ms-sql R2 database, jtds 1.3.1.jar for jdbc connectivity. Please help me to insert data in the database. protected String doInBackground(String... params) { String item = params[0];//username.getText().toString(); String batch =params[1]; //password.getText().toString(); String mtrs = params[2]; String design = params[3]; ConnectDb db = new ConnectDb(); try { con = db.connectionclass(); // Connect to database if (con == null) { z = "Check Your Internet Access!"; } else { String query = "insert into [CE] values ('Null','Null','Null','item','batch','design','mtrs')";//"INSERT INTO [CE]VALUES"+"('"+barcode+"','"+rack+"','"+selves+"','"+item+"','"+batch+"','"+design+"','"+mtrs+"')"; Statement stmt = con.createStatement(); int rst = stmt.executeUpdate(query); if(rst!=0) { z="Inserted rows"+rst; isSuccess=true; con.close(); } else { z = "Invalid Credentials!"; isSuccess = false; } } } catch (Exception ex) { isSuccess = false; z = ex.getMessage(); } return z; }} }
Fox star
1

голосов
0

ответ
826

Просмотры

Ошибка Spring загрузки / Oracle / Java: Не удалось получить результаты JDBC Connection в Тайм-аут соединения

Система Я работаю с имеет следующее (я использую Spring бутсу) Я получаю сообщение об ошибке при запуске приложения, используя следующие: Вызванные: org.springframework.jdbc.CannotGetJdbcConnectionException: `Не удалось получить JDBC Connection`; вложенное исключение java.sql.SQLRecoverableException: IO Error: `Сетевой адаптер не может установить connection` на org.springframework.jdbc.datasource.DataSourceUtils.getConnection (DataSourceUtils.java:80) ~ [весна-4.3.9 JDBC .RELEASE.jar: 4.3.9.RELEASE] на org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData (JdbcUtils.java:326) ~ [весенне-JDBC-4.3.9.RELEASE.jar: 4.3.9.RELEASE] ... 61 общие рамки опущены из-за этого, я получаю java.net.ConnectException: Тайм-аут соединения: подключение Ниже другая информация. Почему я получаю эту ошибку? Код видит соединение. URL - но - он говорит, что он не может работать с ним. Насколько я могу сказать, что синтаксис является правильным. Как я могу это исправить? ТИА pom.xml файл XSI: SchemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 ccinrest BackEndRestFunctionality 0.0.1-SNAPSHOT баночка SpringBootErrorHandlingDemoy http://maven.apache.org UTF-8 org.springframework.boot весна-загрузка-стартер-родитель 1.5.4.RELEASE maven.oracle.com истинную ложную https: // Maven .oracle.com по умолчанию maven.oracle.com https://maven.oracle.com орг. шоу-SQL = истина # Hibernate DDL авто (создание, создание дропа, обновление): с «созданием дропа» базы данных # схема будет автоматически создается заново для каждого запуска приложение spring.jpa.hibernate.ddl-авто = создать -drop # стратегия Нейминг spring.jpa.hibernate.naming.implicit-стратегия = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl spring.jpa.hibernate.naming.physical-стратегия = org.springframework.boot.orm.jpa. hibernate.SpringPhysicalNamingStrategy # Позволяет Hibernate генерировать SQL, оптимизированный для конкретной СУБД spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect #hibernate конфигурации spring.jpa.database-платформа = org.hibernate.dialect.Oracle10gDialect ошибок Журнал . ____ _ __ _ _ / \\ / ___'_ __ _ _ (_) _ __ __ _ \ \ \ \ (() \ ___ | «_ | '_ | |' _ \ / _` | \ \ \ \ \\ / ___) | | _) | | | | | || (_ | |)))) | ____ | .__ | _ | | _ | _ | | _ \ __, | / / / / ========= | _ | ============== | ___ / = / _ / _ / _ / :: Spring Загрузочный :: (v1. 5.4.RELEASE) 2018-01-24 19: 25: 06,507 ИНФО 12076 --- [Основной] ccinrest.App: Запуск приложения на рабочем столе-8EFRPQF с PID 12076 (C: \ РАБОТА \ Test \ SpringBootErrorHandlingDemo \ \ целевые классы, созданные dgmufasa в C: \ РАБОТА \ Test \ SpringBootErrorHandlingDemo) 2018-01-24 19: 25: 06,511 ИНФО 12076 --- [Основные] ccinrest.App: нет активный набор профиля, отступая к профилям по умолчанию: по умолчанию не 2018-01-24 19: 25: 06,629 ИНФО 12076 --- [Основной] ationConfigEmbeddedWebApplicationContext: Освежающие org.springframework.boot[email protected]64d7f7e0: запуск дата [ср 24 января 19:25:06 CST 2018]; корень контекста иерархии 2018-01-24 19: 25: 09,949 ИНФО 12076 --- [Основной] sbcetTomcatEmbeddedServletContainer: Tomcat инициализирован с портом (ы): 8080 (HTTP) 2018-01-24 19: 25: 09,968 INFO 12076 - - [главная] o.apache.catalina.core.StandardService: Запуск службы [Tomcat] 2018-01-24 19: 25: 09,973 INFO 12076 --- [главная] org.apache.catalina.core.StandardEngine: Запуск двигателя Servlet : Apache Tomcat / 8.5.15 2018-01-24 19: 25: 10,183 ИНФО 12076 --- [ост-стартстопный-1] oaccC [Tomcat] [локальный] [/]:.. Инициализация Спринг встроенных WebApplicationContext 2018-01- 24 19: 25: 10,183 ИНФО 12076 --- [ост-стартстопный-1] osweb.context.ContextLoader: Корень WebApplicationContext: инициализация завершена в 3559 мс 2018-01-24 19:25:10. ServletRegistrationBean: Отображение сервлет: 'DispatcherServlet' на [/] 2018-01-24 19: 25: 33,725 ОШИБКИ 12076 --- [главный] oatomcat.jdbc.pool.ConnectionPool: Невозможно создать начальные соединения пула. java.sql.SQLRecoverableException: IO Error: Сетевой адаптер не может установить соединение на oracle.jdbc.driver.T4CConnection.logon (T4CConnection.java:774) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на oracle.jdbc.driver.PhysicalConnection.connect (PhysicalConnection.java:688) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на oracle.jdbc.driver.T4CDriverExtension.getConnection (T4CDriverExtension.java:39) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на oracle.jdbc.driver.OracleDriver.connect (OracleDriver.java:691) ~ [ojdbc8-12.2.0.1.jar: 12.2.0.1.0] на org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver (PooledConnection.
Casey Harrils
1

голосов
1

ответ
47

Просмотры

SQLITE JDBC драйвер подготовленный оператор выходит из строя (внутренний указатель 0)

SQLite JDBC драйвер версии 3.21.0 (последняя). Резюме подготовлено заявление открыто для нескольких операций вставки на столе, но не в состоянии выжить первичный ключ нарушения. Если один «плохая» вставка не удается из-за первичным ключом нарушения, подготовленный оператор не может обработать последующую «хорошую» вставку. Исключение «оператор не выполняет» вызывается при вызове pstmt.setString (). Трассировка ошибки в org.Sqlite.core.CorePreparedStatement вызов неисправного в checkOpen () указатель == 0. Пример приведен ниже. Кто-нибудь знает, почему это происходит? Я вижу подобный отчет об ошибке был поднят, но предположительно исправлен. Соединение Conn = DriverManager.getConnection ( "JDBC: SQLite: ./ test.db"); Строка CreateTable = "CREATE TABLE манекена (ID текст, текст VAL, первичный ключ (ID))"; Строка psSQL = " Println ( "вторая вставка Failed для" + ид); e.printStackTrace (); } // 3. попытка вставить 3-е хорошее значение попробовать {pst.setString (1, id3); // исключение поднятый здесь pst.setString (2, val3); pst.executeUpdate (); System.out.println ( "3 Вкладыш OK для" + id3); } Поймать (SQLException е) {System.out.println ( "3 вставки для" Сбой + id3); e.printStackTrace (); } Pst.close (); st.executeUpdate (droptable); } Поймать (SQLException е) {e.printStackTrace (); } + Id3); } Поймать (SQLException е) {System.out.println ( "3 вставки для" Сбой + id3); e.printStackTrace (); } Pst.close (); st.executeUpdate (droptable); } Поймать (SQLException е) {e.printStackTrace (); } + Id3); } Поймать (SQLException е) {System.out.println ( "3 вставки для" Сбой + id3); e.printStackTrace (); } Pst.close (); st.executeUpdate (droptable); } Поймать (SQLException е) {e.printStackTrace (); }
coulan88
1

голосов
1

ответ
261

Просмотры

вставить в выберите против массовой вставки

У меня есть таблица А, около 400k строк один день, я хочу написать Java программы для резервного копирования старых данных в другой таблице, есть два способа: использовать JDBC для выборки данных из таблицы А, 500 строк один раз, например, затем сцепить SQL как вставки в таблице значений B (значение1, значение2 ...), (значение1, значение2 ...), ... затем выполнить. использовать вставку в таблицу B выберите * из А, где, около 2 ~ 3 миллиона строк. Как кто-то сказал, что второй путь медленнее, но я не уверен, так, какой путь лучше? не должен врезаться базами данных.
hiway
1

голосов
0

ответ
225

Просмотры

declaredParameters versus addDeclaredParameter SimpleJdbcCall

Так что я работаю с базой данных Oracle и функции, в отличие от хранимой процедуры. Я полагал, что это не было большим делом и вел как я со всем моим предыдущим DAO создал для хранимых процедур. Это не сработало. Разница продемонстрирована ниже. Вот установка функция, которая работает отлично: общественная пустота setDataSource (DataSource DataSource) {this.findClassYear = новый SimpleJdbcCall (DataSource) .withSchemaName ( "Connman") .withFunctionName ( "F_CC_GET_STUCLASS") .declareParameters (новый SqlOutParameter ( "p_classout", типы .VARCHAR), новый SqlParameter ( "p_pidm", Types.NUMERIC)). withoutProcedureColumnMetaDataAccess (); this.findClassYear.setAccessCallParameterMetaData (ложь); this.findClassYear.setFunction (истина); } По сравнению с настройкой сродни тому, что из того, что я бы использовал для хранимой процедуры, которая не работает: общественная пустота setDataSource (DataSource DataSource) {this.findClassYear = новый SimpleJdbcCall (DataSource) .withSchemaName ( «Connman»). withFunctionName ( "F_CC_GET_STUCLASS"); this.findClassYear.setAccessCallParameterMetaData (ложь); this.findClassYear.setFunction (истина); // в параметрах this.findClassYear.addDeclaredParameter (новый SqlParameter ( "p_pidm", Types.NUMERIC)); // из параметров this.findClassYear.addDeclaredParameter (новый SqlOutParameter ( "p_classout", Types.VARCHAR)); } И будет выполнять отлично в тесте JUnit, но только первым производит реальный результат. Почему я не могу использовать динамически объявлены параметры функции и / или в том, что единственное, что ответственным за это изменение? Что еще мне не хватает, если что-нибудь?
Mike
1

голосов
1

ответ
306

Просмотры

Как разрешить NoClassDefFoundError для AutoloadedDriver40? [Дубликат]

Этот вопрос уже есть ответ здесь: Почему я получаю NoClassDefFoundError в Java? 21 ответов Я новичок в Hadoop и Hive, а также. Я пытаюсь подключиться к улью от Java пути создания проекта Java и добавления все ниже требуемых библиотек $ HIVE_HOME / Библиотека / *. Банка $ HADOOP_HOME / доля / Hadoop / MapReduce / *. Банка $ HADOOP_HOME / доля / Hadoop / общего / * .jar А ниже мой пример код для подключения улой базы данных. пакет com.stpl.hive.jdbc; импорт java.sql.SQLException; импорт java.sql.Connection; импорт java.sql.Statement; импорт java.sql.DriverManager; общественного класса HiveSample {// частные статические строки DriverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; частное статические строки DriverName = "org.apache.hive.jdbc.HiveDriver"; государственной статической силы основных (String [] арг) бросает SQLException, ClassNotFoundException {// Зарегистрировать драйвер и создать экземпляр драйвера Class.forName (DriverName); // получить соединение Connection CON = DriverManager.getConnection ( "JDBC: hive2: // локальный: 10000 / по умолчанию", "", ""); Заявление STMT = con.createStatement (); stmt.execute ( "CREATE DATABASE newdatabase"); System.out.println ( "userdb База данных создана successwdbfully."); con.close (); }} Во время работы я получаю ниже исключение ошибок в потоке «основной» java.lang.NoClassDefFoundError: Не удалось инициализировать класс org.apache.derby.jdbc.AutoloadedDriver40 в java.lang.Class.forName0 (Native Method) в java.lang .Class.forName (Class.java:348) при java.sql.DriverManager.isDriverAllowed (DriverManager. Java: 556) в java.sql.DriverManager.getConnection (DriverManager.java:661) в java.sql.DriverManager.getConnection (DriverManager.java:247) в com.stpl.hive.jdbc.HiveSample.main (HiveSample.java : 18) Я пропускаю любые другие банки, чтобы добавить в проект? Пожалуйста, помогите мне решить эту ошибку. И я использую улей 2.3.2 версии. Пожалуйста, спросите меня, если какие-либо другие детали, необходимые для ее решения.
Tharunkumar Reddy
1

голосов
2

ответ
497

Просмотры

Подключение к Sql Server на свободу, используя MSSQL-JDBC

Я пытаюсь подключиться к Sql базы данных сервера с сервера свободы. Не работает, как я получаю 500 от сервера свободы и журналы дают мне сообщение об ошибке: Драйвер не удалось установить безопасное подключение к SQL Server с помощью Secure Sockets Layer (SSL) шифрование. Ошибка: SQL Server не возвращает ответ. Мой XML:
mTv
1

голосов
2

ответ
972

Просмотры

Oracle хранимой процедуры java.sql.SQLException: Недопустимый тип колонки: 2012 (REF_CURSOR)

Oracle 11g, Java-8, ojdbc8 / ojdbc7 хранимая процедура с OUT REF_CURSOR, например, создать или заменить процедуры Foo (номер EmployeeID IN, OUT с SYS_REFCURSOR) КАК НАЧАТЬ открыта с для выбора * от работника, где ID = EmployeeID; КОНЕЦ; Из SQLPLUS, он отлично работает. JDBC вызвать процедуру: CallableStatement утверждение = connection.prepareCall ( "{называть Foo (),?}"); statement.setObject (1, 100); statement.registerOutParameter (2, java.sql.Types.REF_CURSOR); // ОШИБКА здесь statement.execute (); Ошибка: java.sql.SQLException: Неверный тип столбца: 2012 Тип 2012 является Types.REF_CURSOR. Пытались как ojdbc7 и ojdbc8 с Oracle 11g, ту же ошибку. Oracle 11g поддерживает REFCURSOR. Java 8 определяет Types.REF_CURSOR. Какой драйвер Oracle JDBC следует использовать для 11g?
Sunnyday
1

голосов
0

ответ
164

Просмотры

драйвер JDBC Android студии net.sourgeforge.jtds.jdbc.Driver

Я сидел с этой проблемой в течение 2 недель, и я надеюсь, что один из вас может помочь мне с этим. Следующий код у меня есть для подключения из базы данных. пакет com.example.sunapp; импорт android.annotation.SuppressLint; импорт android.os.StrictMode; импорт android.util.Log; импорт java.sql.Connection; импорт java.sql.DriverManager; импорт java.sql.SQLException; общественный класс ConnectionClass {Строка ф = "xxx.xxx.xxx.xxx"; Строка classs = "net.sourgeforge.jtds.jdbc.Driver"; Строка дб = «хххх»; Строка ип = «хххх»; Строка пароля = «хххх»; @SuppressLint ( "NewApi") общественное соединение CONN () {StrictMode.ThreadPolicy политика = новый StrictMode.ThreadPolicy.Builder () .permitAll () построить (). StrictMode.setThreadPolicy (политика); Подключение сопп = NULL; Строка ConnURL = NULL; попробуйте {Class.forName (classs); ConnURL = ": jtds JDBC: SQLServer: //" + ф + ";" + "DATABASENAME =" + дБ + "; пользователь =" + ип + "; пароль =" + пароль + ";"; Conn = DriverManager.getConnection (ConnURL); } Поймать (SQLException себе) {Log.e ( "ERRO1", se.getMessage ()); } Задвижка (ClassNotFoundException е) {Log.e ( "ERRO2", e.getMessage ()); } Задвижка (Исключение е) {Log.e ( "ERRO3", e.getMessage ()); } Вернуть соед; }} Когда я ударил 'Inloggen' я получаю следующее сообщение об ошибке «02-19 15: 15: 02,679 8488-10423 / com.example.sunapp E / ERRO2: net.sourgeforge.jtds. ActionBar ActionBar = getSupportActionBar (); утверждать ActionBar! = NULL; actionBar.hide (); connectionClass = новый ConnectionClass (); Окончательный EditText etGebruikersnaam = findViewById (R.id.etGebruikersnaam); Окончательный EditText etWachtwoord = findViewById (R.id.etWachtwoord); Окончательный CardView cvInloggen = findViewById (R.id.cvInloggen); Окончательный TextView RegistreerLink = findViewById (R.id.tvRegistreren); RegistreerLink.setOnClickListener (новый View.OnClickListener () {@Override общественного недействительными OnClick (View вид) {Намерение registreerIntent = новый Intent (LoginActivity.this, RegistryActivity.class); LoginActivity.this.startActivity (registreerIntent);}}); cvInloggen.setOnClickListener (новый вид. OnClickListener () {@Override общественный недействительный OnClick (View v) {DoLogin doLogin = новый DoLogin (); doLogin.execute ( ""); }}); } Общественного класса DoLogin расширяет AsyncTask {строка г = ""; Boolean isSucces = FALSE; Окончательный EditText etGebruikersnaam = findViewById (R.id.etGebruikersnaam); Окончательный EditText etWachtwoord = findViewById (R.id.etWachtwoord); . Строка = идентификатор etGebruikersnaam.getText () ToString (); . Строка пароля = etWachtwoord.getText () ToString (); @Override защищены Строка doInBackground (String ... Params) {если (userid.trim (). Equals ( "") || password.trim (). Равных ( "")) г = «Вул Hier ию gebruikersnaam ен в спам-роботов «; еще {попробуйте {жулик Connection = connectionClass.CONN (); если (кон == NULL) {Строка запроса = "SELECT * FROM compose.tblGebruikers где Gebruikersnaam = '" + Идентификатор_пользователя + " 'и = от спам-роботов'" + пароль + "'"; Заявление STMT = con.createStatement (); ResultSet RS = stmt.executeQuery (запрос); если (rs.next ()) {г = "Вход успешным"; isSucces = TRUE; } еще {г = «Недействительные проверке полномочий»; isSucces = ложь; }}} Задвижка (Исключение ех) {isSucces = ложь; г = «Исключение»; }} Возвращать г; }}} Я должен делать что-то неправильно, но, что это вопрос. сообщение я получаю происходит от ClassNotFoundException. Я до сих пор не удалось заставить его работать.
Bellie
1

голосов
0

ответ
19

Просмотры

Установить JDBC свойства на плей-рамочном application.config

Я хотел бы установить некоторые свойства JDBC на application.config. Например: useLegacyDatetimeCode = ложь и useUnicode = истина & serverTimezone = UTC И это мой application.config. играть {db.prototype.hikaricp {ConnectionTimeOut = 30 секунд maximumPoolSize = 5}} {дб по умолчанию {драйвер = "org.mariadb.jdbc.Driver" URL = "JDBC: MariaDB: // хост: порт" имя пользователя = "пользователь" пароль = «пароль»}} Тем не менее, моя программа должна иметь доступ к нескольким базам данных, так что я не могу объединить URL-адрес, имя пользователя, пароль и свойства в свойстве URL. Можно ли настроить? Я попытался это, но он не работает. дб {по умолчанию {драйвер = "org.mariadb.jdbc.Driver" URL = "JDBC: MariaDB: // хост: порт" имя пользователя =»
kalin
1

голосов
1

ответ
222

Просмотры

Oracle с ПКИ

Я пытаюсь подключиться к Oracle с использованием PKI. Я по этой ссылке http://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf государственной статической силы основных (String [] арг) бросает исключение {Class.forName ( "оракул .jdbc.driver.OracleDriver "); Строка адр = "DESKTOP-BH1RKUF"; Строка службы = "ORCL"; Строка URL = "JDBC: оракул: тонкий: @ (DESCRIPTION = (ADDRESS = (ПРОТОКОЛ = протокол TCP) (HOST =" + адр + ") (PORT = 2484)) (CONNECT_DATA = (SERVICE_NAME =" + сервис + «)) ) "; Свойства реквизита = новые свойства (); // props.setProperty ( "пользователь", "SYS как SYSDBA"); // props.setProperty ( "пароль", "пароль"); props.setProperty ( "javax.net.ssl.keyStore", "/Users/user/Downloads/client/keystore.jks"); props.setProperty ( "javax. ORA-01017: неверное имя пользователя / пароль; вход запрещен на oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:461) в oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:394) в oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java : 386) в oracle.jdbc.driver.T4CTTIfun.processError (T4CTTIfun.java:1121) в oracle.jdbc.driver.T4CTTIoauthenticate.processError (T4CTTIoauthenticate.java:502) в oracle.jdbc.driver.T4CTTIfun.receive (T4CTTIfun. Java: 541) на oracle.jdbc.driver.T4CTTIfun.doRPC (T4CTTIfun.java:264) в oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH (T4CTTIoauthenticate.java:435) в oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH (T4CTTIoauthenticate .java: 1020) при oracle.jdbc.driver.T4CConnection.logon (T4CConnection.java:707) в oracle.jdbc.driver.PhysicalConnection.connect (PhysicalConnection.java:755) при oracle.jdbc.driver.
RMS User
1

голосов
0

ответ
353

Просмотры

Сохранить объект с java.time.Instant собственности с использованием NamedParameterJdbcTemplate с водителем Postgres

У меня возникли проблемы, экономя свое юридическое лицо, которое имеет мгновенное значение с помощью NamedJdbcTemplate. Я получаю исключение перечисленных ниже, и я пытаюсь определить лучший способ решить это. Пожалуйста, порекомендуйте. Не удается определить тип SQL, используемый для экземпляра java.time.Instant. Используйте SetObject () с явным значением Types указать тип использования. Я использую PostgreSQL: 9.4.1212 драйвер
Jesse Nelson
1

голосов
0

ответ
41

Просмотры

Соединение закрытия резко

Я работаю над программой Java, которая будет получить общее количество строк всех таблиц в конце источника и назначения конца для проверки подсчета данных. На данный момент, я написал код, чтобы получить количество из исходных таблиц. Ниже класс подключения: открытое статическое getGpConnection соединения () {попробуйте {Class.forName ( "org.postgresql.Driver"); если (gpConnection == NULL) {gpConnection = DriverManager.getConnection ( "имя хоста", "Имя пользователя", "пароль"); вернуться gpConnection; } Еще {вернуть gpConnection; }} Поймать (ClassNotFoundException е) {e.printStackTrace (); возвращать нуль; } Поймать (SQLException е) {e.printStackTrace (); возвращать нуль; }} Метод, который получает количество строк всех исходных таблиц: открытая Карта getGpTableCount () бросает SQLException {Карта gpTableMap = getScopeTableList (); Установите gpTableSet = gpTableMap.keySet (); gpCountMap = новый HashMap (); Итератор keySetIterator_gpTables = gpTableSet.iterator (); gpAnalyticsCon соединения = (Соединение) DbManager.getGpConnection (); в то время как (keySetIterator_gpTables.hasNext ()) {Строка gpSchemaTableName = keySetIterator_gpTables.next (); // Пример: schema.tablename String [] gpparts = gpSchemaTableName.split ( "\\"); // схемы, имя_таблицы Строка gpTable = gpparts [1]; Строка gpCountQuery = "выберите«+ gpTable + ", как TableName, граф (*), как граф, source_system_name от "+ gpSchemaTableName +" gpAnalyticsCon.commit (); System.out.println ( "Закрытие соединения: Дивья"); gpAnalyticsCon.close (); }}} Вернуть gpCountMap; } Проблемы заключается в том, после того, как она выполняется для одной таблицы во всех исходных системах, соединение закрывается со следующим исключением: TABLENAME: table1 Source System Name: Source1, Количество: 4 TABLENAME: table1 Source System Name: source2, Count: 9 TABLENAME : table1 Source System Name: source3, Количество: 1 TABLENAME: table1 Source System Name: source4, Количество: 88 TABLENAME: table1 Source System Name: source5, Количество: 15 TABLENAME: table1 Source System Name: source6, Количество: 2 TABLENAME: table1 Источник Имя системы: source7, Count: 1521 TABLENAME: table1 Источник Имя системы: source8, Count: 1288 TABLENAME: table1 Источник Имя системы: source9, Count: 24569 Исключение в потоке «основного» org.postgresql.util.PSQLException: Не удается совершить, когда Autocommit включена. на org.postgresql.jdbc.PgConnection.commit (PgConnection.java:756) в com.recordcount.dao.GpHiveRecords.getGpTableCount (GpHiveRecords.java:82) в com.recordcount.entry.StartCount.main (StartCount.java:12 ) Я понимаю, что я использую соединение неправильно, но я мог бы идентифицировать ошибку. Может кто-нибудь, дайте мне знать, что это ошибка, которую я здесь делаю. Основной (StartCount.java:12) Я понимаю, что я использую соединение неправильно, но я мог бы идентифицировать ошибку. Может кто-нибудь, дайте мне знать, что это ошибка, которую я здесь делаю. Основной (StartCount.java:12) Я понимаю, что я использую соединение неправильно, но я мог бы идентифицировать ошибку. Может кто-нибудь, дайте мне знать, что это ошибка, которую я здесь делаю.
Metadata
1

голосов
1

ответ
332

Просмотры

pySpark Ошибка записи JDBC: Произошла ошибка при вызове o43.jdbc. : Scala.MatchError: нулевой

Я пытаюсь написать простую свечу dataframe в базу данных DB2 с помощью pySpark. Dataframe имеет только один столбец с двойным как тип данных. Это dataframe только один ряд и один столбец: Это схема dataframe: Когда я пытаюсь написать эту dataframe в DB2 таблицу с этим синтаксисом:. Dataframe.write.mode ( «перезаписывать») JDBC (URL = URL, таблица = источник, свойство = проп) создает таблицу в базе данных в первый раз без какого-либо вопроса, но если я запускаю код во второй раз, он бросает исключение: на стороне DB2 столбца тип данные также DOUBLE. Не уверен, что мне не хватает.
vaibhav sapkal
1

голосов
1

ответ
92

Просмотры

Java Oracle JDBC ResultSet пуст, но запись доступна в таблице

Я бегу Java 1.8 подключения к оракулу 12с с использованием ojdbc7.jar для JDBC соединения. Это код, который выполнить для получения Class.forName данных ( «oracle.jdbc.driver.OracleDriver»); кон = DriverManager.getConnection ( "JDBC: оракул: тонкий: @" + Ipaddress + ": 1521:" + имя_бд, имя пользователя, пароль); Заявление STMT = con.createStatement (); Строка запроса = "SELECT * FROM table_name"; ResultSet RS = stmt.getResultSet (); в то время как (rs.next ()) {System.out.println (rs.getString (1)); } Но код не входя в то время цикла. Когда я пытаюсь exeuction тот же запрос в БД, я мог видеть в таблице есть 10 записей. Кто-нибудь знает, что может быть причиной?
ksnagendran26
1

голосов
0

ответ
220

Просмотры

как получить не-JTA-управляемое соединение из DataSource

Я использую EJB 2 с контейнерными управляемыми транзакциями (JTA) на сервере WebLogic. Для отладки, я пытаюсь получить объект Connection из DataSource, извлеченный из JNDI, выполнить обновление и фиксацию. Тем не менее, я получаю следующее исключение при попытке совершить. java.sql.SQLException: совершить не удается вызвать при использовании распределенных транзакций типа DataSource я использую тип weblogic.jdbc.common.internal.RmiDataSource и объект Connection имеет тип weblogic.jdbc.wrapper.JTAConnection_weblogic_jdbc_wrapper_XAConnection_oracle_jdbc_driver_LogicalConnection-OracleDS-187 , Очевидно, что объект Connection я извлечение пытается принять участие в ССТОЙ сделке, которая не то, что я хочу. Как я могу получить не-JTA-управляемое соединение из DataSource? Вот как я м в данный момент получения соединения соединения соединения = NULL; PreparedStatement пс = NULL; попробуйте {DataSource дц = ConnectionFactory.getDataSourceFromJNDI ( "JDBC / OracleDS"); Соединение = ds.getConnection (); пс = connection.prepareStatement (...); ps.setString (1, MSG); ps.executeUpdate (); connection.commit (); } Поймать (Exception е) {если (соединение! = NULL) connection.rollback (); }}
Tuomas Toivonen
1

голосов
0

ответ
26

Просмотры

Как улучшить Derby время вставки базы данных?

создать индекс stop_times_trip_id на stop_times (trip_id, FEED_ID); создать индекс stop_times_stop_id на stop_times (stop_id, FEED_ID); Каждые несколько дней существует новый корм, который должен быть загружен в таблицу, и как только он загружает успешно, старый корм удален: удалить из stop_times где FEED_ID = old_feed_identifier; и индексы перестроен: CS = db.prepareCall ( "CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE (?,,)??"); cs.setString (1, "АРР"); cs.setString (2 "stop_times"); cs.setShort (3, (короткий) 1); cs.execute (); cs.close (); Новый корм вводят путем считывания данных с разделителями-запятыми строки текстового файла построчно. Каждая строка очищается путем удаления неэкранированных кавычек, непризнанные столбцов и вручную добавлять FEED_ID. Очищено линии затем вставляется в таблицу stop_times с использованием подготовленного оператора вставки. В начале вставки, автокоммят выключена и ручная фиксация делаются каждые 100 вставок. Это делается посреди ночи и хорошо работает для большинства каналов, поскольку весь процесс занимает всего несколько минут. Однако есть один канал, я хотел бы, чтобы потреблять, который имеет 20 миллионов записей. Скорость введения, что я вижу на Ubuntu VM, как правило, 1000 и 5000 записей в секунду. Это добавляет до совсем немного времени для 20000000 записей. Есть ли какие-нибудь хорошие твики для ускорения это? Я попытался сбросив два индекса выше и воссоздавать их впоследствии. Это дало прирост производительности около 50%, что помогает, но не выигрыш, я бы надеялся. Это делается посреди ночи и хорошо работает для большинства каналов, поскольку весь процесс занимает всего несколько минут. Однако есть один канал, я хотел бы, чтобы потреблять, который имеет 20 миллионов записей. Скорость введения, что я вижу на Ubuntu VM, как правило, 1000 и 5000 записей в секунду. Это добавляет до совсем немного времени для 20000000 записей. Есть ли какие-нибудь хорошие твики для ускорения это? Я попытался сбросив два индекса выше и воссоздавать их впоследствии. Это дало прирост производительности около 50%, что помогает, но не выигрыш, я бы надеялся. Это делается посреди ночи и хорошо работает для большинства каналов, поскольку весь процесс занимает всего несколько минут. Однако есть один канал, я хотел бы, чтобы потреблять, который имеет 20 миллионов записей. Скорость введения, что я вижу на Ubuntu VM, как правило, 1000 и 5000 записей в секунду. Это добавляет до совсем немного времени для 20000000 записей. Есть ли какие-нибудь хорошие твики для ускорения это? Я попытался сбросив два индекса выше и воссоздавать их впоследствии. Это дало прирост производительности около 50%, что помогает, но не выигрыш, я бы надеялся. Есть ли какие-нибудь хорошие твики для ускорения это? Я попытался сбросив два индекса выше и воссоздавать их впоследствии. Это дало прирост производительности около 50%, что помогает, но не выигрыш, я бы надеялся. Есть ли какие-нибудь хорошие твики для ускорения это? Я попытался сбросив два индекса выше и воссоздавать их впоследствии. Это дало прирост производительности около 50%, что помогает, но не выигрыш, я бы надеялся.
paulh
1

голосов
0

ответ
278

Просмотры

Как извлечь все строки сразу с драйвером Oracle JDBC

У меня есть запрос, который возвращает ~ 6000 строк. Мне нужно все строки должны быть возвращены, так что они могут быть использованы для создания сценария R, который выполняет пакетное задание. Мой метод для выполнения запроса и перебирать в ResultSet населяющих ArrayList принимает 3 секунды (который жаловался клиент был слишком медленно). Я получил это до 0,7 секунд, выполнив первоначальный запрос для получения счетчика строк, то установив размер выборки в PreparedStatement на этот счет. Старый (сгущенный) код: общественный Список loadFromDb () {попробуйте {Строка SQL = "SELECT а, Ь ОТ table1, table2, LEFT JOIN ... Таблица 3"; ResultSet результат = connection.prepareStatement (SQL) .executeQuery (); Значения Список = новый ArrayList (); в то время как (result.hasNext ()) {values.add (новый МойКласс (result.getString (1), result.getString (2))); } Result.close (); возвращаемые значения; } Поймать (SQLException е) {e.printStackTrace (); вернуть Collections.emptyList (); }} Новый код: (заметьте, что теперь мы можем инициализировать ArrayList для точного размера требуется) Публичный список loadFromDb () {попробуйте {Строка sqlWithoutSelectClause = "FROM table1, table2, LEFT JOIN ... Таблицу 3"; INT ROWCOUNT = GetCount (sqlWithoutSelectClause); Строка SQL = "SELECT A, B" + sqlWithoutSelectClause; PreparedStatement оператор = connection.prepareStatement (SQL); statement.setFetchSize (ROWCOUNT); ResultSet результат = statement.executeQuery (); Значения Списка = новый ArrayList (сверка); в то время как (result.hasNext ()) {values.add (новый МойКласс (result.getString (1), result.getString (2))); } Result.close (); возвращаемые значения; } Поймать (SQLException е) {e.printStackTrace (); вернуть Collections.emptyList (); }} Частный INT GetCount (String sqlWithoutSelectClause) {Строка SQL = "SELECT COUNT (1)" + sqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». } Поймать (SQLException е) {e.printStackTrace (); вернуть Collections.emptyList (); }} Частный INT GetCount (String sqlWithoutSelectClause) {Строка SQL = "SELECT COUNT (1)" + sqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». } Поймать (SQLException е) {e.printStackTrace (); вернуть Collections.emptyList (); }} Частный INT GetCount (String sqlWithoutSelectClause) {Строка SQL = "SELECT COUNT (1)" + sqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». emptyList (); }} Частный INT GetCount (String sqlWithoutSelectClause) {Строка SQL = "SELECT COUNT (1)" + sqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». emptyList (); }} Частный INT GetCount (String sqlWithoutSelectClause) {Строка SQL = "SELECT COUNT (1)" + sqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». + SqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». + SqlWithoutSelectClause; попробовать {результат ResultSet = connection.prepareStatement (SQL) .executeQuery (); result.next (); Количество INT = result.getInt (1); result.close (); Количество возврата; } Поймать (SQLException е) {e.printStackTrace (); возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк». возвращать 0; }} Я просто с помощью JDBC, не спящий режим. Я подключение к базе данных Oracle. Мой вопрос заключается в том, существует ли более эффективный метод для получения всех строк сразу, чем выполнения дополнительного запроса, чтобы получить количество строк. Я не могу найти способ, чтобы установить размер выборки для «всех строк».
Dan Newman
1

голосов
1

ответ
54

Просмотры

Error accessing PostgreSQL using Eclipse Windows 10 [duplicate]

Этот вопрос уже есть ответ здесь: Postgres JDBC соединения в Eclipse Help 5 ответов я нахожусь в процессе обучения Java и PostgreSQL. Я бегу Windows 10 с JRE 10, моя IDE Eclipse, будучи Oxygen 3a. Я написал следующий код: импорт java.sql.Connection; импорт java.sql.DriverManager; общественного класса PostgreSQLJDBC {государственной статической силы основных (String арг []) {Соединение с = NULL; попробуйте {Class.forName ( "org.postgresql.Driver"); с = DriverManager .getConnection ( "JDBC: PostgreSQL: // локальный: 5432 / TESTDB", "Postgres", "123"); } Задвижка (Исключение е) {e.printStackTrace (); System.err.println (e.getClass () GetName () + ":" +. E.getMessage ()); System.exit (0); } System.out.println ( "Открытые базы данных успешно"); }} Он успешно компилируется. Тем не менее, она дает мне следующее java.lang.ClassNotFoundException об ошибке: org.postgresql.Driver Следуя советам в Stack Overflow, я скачал PostGreSQL-42.2.2.jar и укладываться в C: \ Program Files \ Java \ JRE -10.0.1 я тогда отредактирован мои системные переменные и добавил: "C: \ Program Files \ Java \ JRE-10.0.1" в него. Однако я все еще получаю ту же ошибку. Пожалуйста помоги 1 Я тогда отредактирован мои системные переменные и добавил: "C: \ Program Files \ Java \ JRE-10.0.1" в него. Однако я все еще получаю ту же ошибку. Пожалуйста помоги 1 Я тогда отредактирован мои системные переменные и добавил: "C: \ Program Files \ Java \ JRE-10.0.1" в него. Однако я все еще получаю ту же ошибку. Пожалуйста помоги
Tipo33
1

голосов
2

ответ
482

Просмотры

Driver not found exception JDBC

Я постоянно получаю следующее исключение при подключении к базе данных с затмением. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver в java.net.URLClassLoader.findClass (Unknown Source) в java.lang.ClassLoader.loadClass (Unknown Source) в sun.misc.Launcher $ AppClassLoader.loadClass ( Неизвестный источник) в java.lang.ClassLoader.loadClass (Unknown Source) в java.lang.Class.forName0 (Native Method) в java.lang.Class.forName (Unknown Source) в connection.ConnectionFactory. (ConnectionFactory.java:29 ) при connection.ConnectionFactory (ConnectionFactory.java:25) в dao.StudentDAO.insert (StudentDAO.java:53) в bll.StudentBLL.insertStudent (StudentBLL.java:39) в start.Start.main (Start.java.: 23) Тем не менее, установлено соединение, я могу читать из базы данных, Я могу написать в нем, но исключение не исчезает. Я добавил MySQL-разъем-Java-5.1.45-бен к файлу путь с путем сборки, и появляюсь в разделе библиотеки. Я считаю, что URL, пользователь и пароль правильно написано, так как я могу писать в БД. Соединение устанавливается: попробуйте {соединение = DriverManager.getConnection ( "JDBC: MySQL: // Localhost: 3306 / schooldb", "корень", ""); } Поймать (SQLException е) {Logger.log (Level.WARNING, «Произошла ошибка при попытке подключиться к базе данных»); e.printStackTrace (); } Вернуть соединение; } Код для драйвера: частный статический окончательный Струнный DRIVER = «com.mysql.cj.jdbc.Driver»; попробуйте {Class.forName (DRIVER); } Задвижка (ClassNotFoundException е) {e.printStackTrace (); } Я работаю с затмением кислорода, в проекте Maven. База данных создается с MYSQLWorkbench 6.0CE. Но я не знаю, что это неправильно с драйвером.
Maria
1

голосов
2

ответ
53

Просмотры

How to upload a file remotely to a MySQL database with jdbc, servlets and html

I've пытается загрузить файл удаленно из HTML страницы в сервлет, а затем сохранить его в базе данных, до сих пор мне удалось сделать это на месте, но при использовании другого компьютера в той же сети, я получаю и ошибка объяснения что система не может найти указанный файл. Я использую следующую форму, чтобы принять в файлах: Какие ссылки на следующие действия в сервлет: String URL = «JDBC: MySQL: // Localhost / базы данных»; против соединения; Строка path1 = request.getParameter ( "PDF"); Строка путь2 = request.getParameter ( "XML"); Имя String = request.getParameter ( "имя"); дата String = request.getParameter ( "Дата"); Строка клиента = request.getParameter ( "CLIENT_ID"); Class.forName ( "com.mysql.jdbc.Driver"); CON = DriverManager.getConnection (URL, "пользователь", "пароль"); PreparedStatement стат = con.prepareStatement ( "вставить в таблицу (PDF, XML, даты, клиента, EMPLOYEE_ID, client_id) значений (,,,, 1 ,?)???"); InputStream это = новый FileInputStream (новый файл (path1)); stat.setBlob (1, есть); InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена. CON = DriverManager.getConnection (URL, "пользователь", "пароль"); PreparedStatement стат = con.prepareStatement ( "вставить в таблицу (PDF, XML, даты, клиента, EMPLOYEE_ID, client_id) значений (,,,, 1 ,?)???"); InputStream это = новый FileInputStream (новый файл (path1)); stat.setBlob (1, есть); InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена. CON = DriverManager.getConnection (URL, "пользователь", "пароль"); PreparedStatement стат = con.prepareStatement ( "вставить в таблицу (PDF, XML, даты, клиента, EMPLOYEE_ID, client_id) значений (,,,, 1 ,?)???"); InputStream это = новый FileInputStream (новый файл (path1)); stat.setBlob (1, есть); InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена. prepareStatement ( "вставить в таблицу (PDF, XML, дата, клиент, EMPLOYEE_ID, CLIENT_ID) значения (,, 1 ,?)??"); InputStream это = новый FileInputStream (новый файл (path1)); stat.setBlob (1, есть); InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена. prepareStatement ( "вставить в таблицу (PDF, XML, дата, клиент, EMPLOYEE_ID, CLIENT_ID) значения (,, 1 ,?)??"); InputStream это = новый FileInputStream (новый файл (path1)); stat.setBlob (1, есть); InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена. InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена. InputStream is2 = новый FileInputStream (новый файл (path2)); stat.setBlob (2, IS2); stat.setString (3, дата); stat.setString (4, название); stat.setString (5, клиент); И бросает следующее исключение: java.io.FileNotFoundException: file.pdf (Система не может найти указанный файл) Я понимаю, что проблема возникает из сервлета пытается загрузить файл из хост-машины. Любая помощь будет оценена.
Erick Gil
1

голосов
2

ответ
984

Просмотры

Knowage BI - DataSource SQL Server

У меня есть вопрос о knowage (программное обеспечение с открытым исходным кодом BI - www.knowage-suite.com). Может кто-нибудь сказать мне, как создать DataSource с подключением к SQL Server? С уважением, Томаш
Tomasz Filipek
1

голосов
0

ответ
261

Просмотры

Сохраненный план не должен изменить тип результата

Наша сервисная команда получает ошибку Сохраненного плана не должен изменить тип результата иногда, когда я изменить длину столбца или добавить новый столбец в таблице. Я пробовал решения, упомянутые на переполнение стека, как Postgres: «ОШИБКА: кэшируются план не должен изменить тип результата» Я попытался автосохранения = консерватор, чтобы решить эту проблему, но до сих пор, я могу воспроизвести этот вопрос. Я использовал ниже строка подключения JDBC JDBC-URL: JDBC: PostgreSQL: //172.16.244.10: 5432 / TESTDB автосохранения = консервативно почему это свойство не работает в моем случае? Кроме того, я тестировал с prepareThreshold = 0 и его рабочим штрафом. Но я думаю, что это повлияет на производительность, так как он никогда не будет использовать на сторону клиента подготовленных заявлений. Я просто хочу знать, самое лучшее решение, чтобы избежать этой ошибки.
Python
1

голосов
0

ответ
201

Просмотры

Обработка соединения JDBC, когда значение v $ session.osuser более 30 символов

Я устанавливаю стороннее приложение и установить значение v $ session.osuser к имени пользователя при подключении к оракулу 12.1. К сожалению, имя пользователя моего Linux учетной записи длиной 34 символов и из-за этой установки не в состоянии выполнить. Я не могу изменить имя пользователя Linux учетной записи, а также не может редактировать свойства соединения программно, как у меня нет доступа к источнику приложения. Ниже приведены мои попытки до сих пор (это не работает): Обновленное .bash_profile урезать значение Linux User собственности до 29 символов Добавлены два argruments командной строки, -Doracle.jdbc.v $ session.osuser = {USER: 0: 29} и -Duser.name = {USER: 0: 29} Любые другие варианты таким образом, что будет работать?
Kumar V
1

голосов
2

ответ
1.5k

Просмотры

Spring Boot JPA application does not start with spring boot 2.0.2 and it works fine with Spring boot 1.5.13

Если я создаю пустое приложение Spring загрузки JPA, который подключается к PostgresSQL он отлично работает с весной Ботинками 1.5.13. Она не работает с весны Ботинок 2.0.2. Шаги для воссоздания: 1. Создание нового приложения Spring загрузки с использованием SPRING INITIALIZR (https://start.spring.io/). Выберите следующие зависимости "Devtools", "Web", "JPA", "JDBC" "PostgreSQL" во время инициализации проекта Добавить свойства соединения базы данных application.properties: spring.datasource.url = JDBC: PostgreSQL: // локальный: 5432 / my_db_name spring.jpa.hibernate.ddl-авто = нет spring.datasource.driverClassName = org.postgresql.Driver spring.datasource.platform = Postgres spring.datasource.username = my_user_id spring.datasource.password = my_password spring.jpa.database = POSTGRESQL spring.jpa. шоу-SQL = истинные шаги запуска приложения Spring загрузки выше работает отлично, если я выбираю Spring бутсу 1.5.13 с помощью создания проекта. Я получаю сообщение об ошибке ниже в Spring ботинке 2.0.2: Описание: Не удалось настроить DataSource: «URL» атрибут не определен и ни встроенного источника данных не может быть настроен. Причина: Не удалось определить подходящий класс драйвера Действие: Обратите внимание на следующее: Если вы хотите, встроенную базу данных (H2, HSQL или Derby), пожалуйста, поместите его на пути к классам. Если у вас есть настройки баз данных для загрузки из определенного профиля может потребоваться, чтобы активировать его (ни одного профиль не в настоящее время активен). атрибут не определен и ни встроенного источника данных не может быть настроен. Причина: Не удалось определить подходящий класс драйвера Действие: Обратите внимание на следующее: Если вы хотите, встроенную базу данных (H2, HSQL или Derby), пожалуйста, поместите его на пути к классам. Если у вас есть настройки баз данных для загрузки из определенного профиля может потребоваться, чтобы активировать его (ни одного профиль не в настоящее время активен). атрибут не определен и ни встроенного источника данных не может быть настроен. Причина: Не удалось определить подходящий класс драйвера Действие: Обратите внимание на следующее: Если вы хотите, встроенную базу данных (H2, HSQL или Derby), пожалуйста, поместите его на пути к классам. Если у вас есть настройки баз данных для загрузки из определенного профиля может потребоваться, чтобы активировать его (ни одного профиль не в настоящее время активен).
Anatoli
1

голосов
0

ответ
59

Просмотры

Fetch все строки из большого стола в сервере SQL

У меня есть таблица с более чем 500K записей, и когда я пытаюсь принести отфильтрованный набор результатов (~ 145K записей) мой closeConnection () сбой метода. После отладки, то получается, что объект оператора получает 1000 записей в то время, и соединение падает в середине следующей выборку раунда. Как я работаю с рамочными (рамками работодателя) Я не могу изменить настройки тайма-аута, но я думал о выборке всех основной частью записей сразу. FYI, производительность не является проблемой здесь, так что это не имеет значения, если это занимает больше времени. Есть ли что-нибудь подобное ALL_ROWS намек на оракула, которые дают мне те же результаты в сервере SQL? или, возможно, некоторые другие решения? Этот запрос: SELECT MODEL.MODEL_TABLE_CODE VARIANT_ID, MODEL.DSC, MODEL.MAIN_MODEL_ID, MODEL.YEAR_FROM, MODEL_DN.SHOW_IN_PORTAL, MODEL.DISCONTINUE_DATE ОТ T_MODEL МОДЕЛИ, T_MODEL_DN MODEL_DN ГДЕ MODEL.
Rotem
1

голосов
2

ответ
709

Просмотры

Ошибка при получении соединения JDBC для улья через Нокс

У меня есть кластер Hadoop работает Hortonworks Data Platform 2.4.2 которая работает хорошо для более года. Кластер Kerberised и внешние приложения подключаются через Нокс. Ранее сегодня, кластер прекратил прием JDBC соединения через Нокс в улей. Бревна Нокс не показывают никаких ошибок, но журнал Hive Сервер2 показывает следующее сообщение об ошибке: «Вызванный: org.apache.hadoop.security.authorize.AuthorizationException: Пользователь: Нокс не разрешается выдавать себя org.apache.hive.service.cli .HiveSQLException: Не удалось проверить прокси привилегии Нокс для "Посмотрев на других пользователей предложения в основном, кажется, что вокруг правильной настройки параметров конфигурации для hadoop.proxyusers.users и hadoop.proxyusers.groups. Тем не менее, в моем случае я не вижу, как эти параметры могут быть проблемы. Кластер работает уже в течение более года, и у нас есть ряд приложений, подключаемых к Hive через JDBC на ежедневной основе. Конфигурации сервера не были изменены, и соединения были ранее успеха на текущей конфигурации. Никакие изменения не были сделаны на платформу или среду, и кластер не был перезапущен или снесен для поддержания между последним успешным соединением JDBC и соединениями JDBC может быть отклонено. Теперь я остановился и начал кластер, но после перезагрузки кластер все еще не принимает JDBC соединения. Кто-нибудь есть какие-либо предложения о том, как я должен поступить? Никакие изменения не были сделаны на платформу или среду, и кластер не был перезапущен или снесен для поддержания между последним успешным соединением JDBC и соединениями JDBC может быть отклонено. Теперь я остановился и начал кластер, но после перезагрузки кластер все еще не принимает JDBC соединения. Кто-нибудь есть какие-либо предложения о том, как я должен поступить? Никакие изменения не были сделаны на платформу или среду, и кластер не был перезапущен или снесен для поддержания между последним успешным соединением JDBC и соединениями JDBC может быть отклонено. Теперь я остановился и начал кластер, но после перезагрузки кластер все еще не принимает JDBC соединения. Кто-нибудь есть какие-либо предложения о том, как я должен поступить?
Ian Pletcher
1

голосов
1

ответ
1.1k

Просмотры

Не удается подключиться к локальной MySQL в докер с JDBC

Я работаю на приложение Java, которое использует MySQL работает в контейнере Докер. Я недавно перешел из среды Windows, в Mac OS, и я не могу подключиться к базе данных в коде Java с помощью JDBC. Я могу подключиться к базе данных с MySQL Workbench, а также от клиента командной строки. Я использую Docker для Mac (т.е. без машины Docker по умолчанию). Я начинаю свой Docker контейнер с этим: CONTAINER_NAME = гипо- MySQL PORT = "3306: 3306" VOLUME_FROM = "гипо-MySQL-данные" config_dir = "$ (PWD) /conf.d" MYSQL_ROOT_PASSWORD = "ххххх" MYSQL_USER = "гипо- "MYSQL_PASSWORD =" doktorBenArmsson»MYSQL_DATABASE = "Hypo" докер запустить --name $ {CONTAINER_NAME} \ -p $ {PORT} \ --volumes-от $ {VOLUME_FROM} \ -v $ {config_dir}: / и т.д. / MySQL / конф. д \ -e MYSQL_ROOT_PASSWORD = $ {MYSQL_ROOT_PASSWORD} \ -e MYSQL_USER = $ {MYSQL_USER} \ -e MYSQL_PASSWORD = $ {MYSQL_PASSWORD} \ -e MYSQL_DATABASE = $ {MYSQL_DATABASE} \ -d --restart = всегда MySQL \ При запуске мой Java приложение, которое я начал с этой ошибкой: Вызванный: java.sql.SQLException: Не удается загрузить плагин аутентификации "caching_sha2_password. Так как мой водитель JDBC не поддерживает новый метод проверки подлинности, используемый MySQL я изменил пользователю использовать старый нативный метод вместо: MySQL> выберите пользователя, хост, плагин от пользователя; + ------------------ + ----------- + ------------------ ----- + | пользователь | хозяйничать | плагин | + ------------------ + ----------- + ------------------ ----- + | гипо- | % | caching_sha2_password | | корень | % | caching_sha2_password | | mysql.infoschema | локальный | mysql_native_password | | mysql.session | локальный | mysql_native_password | | mysql.sys | локальный | mysql_native_password | | корень | локальный | caching_sha2_password | + ------------------ + ----------- + ------------------ ----- + ALTER USER 'гипо' @ '%' отождествить с mysql_native_password BY 'XXXXXXX'; MySQL> выберите пользователя, хост, плагин от пользователя; + ------------------ + ----------- + ------------------ ----- + | пользователь | хозяйничать | плагин | + ------------------ + ----------- + ------------------ ----- + | гипо- | % | mysql_native_password | | корень | % | caching_sha2_password | | mysql.infoschema | локальный | mysql_native_password | | mysql.session | локальный | mysql_native_password | | mysql.sys | локальный | mysql_native_password | | корень | локальный | caching_sha2_password | + ------------------ + ----------- + ------------------ ----- + Теперь я получаю следующее сообщение об ошибке от Java: вызвано следующими причинами: java.sql.SQLException: неизвестная переменная система «query_cache_size» Я модернизировал свой драйвер JDBC в Gradle: // старый драйвер: компилировать «MySQL: MySQL-разъем -java: 5.1.38' компиляции 'MySQL: MySQL-разъем-Java: 5.1.46' т понять, что эта ошибка означает, что на самом деле или что делать, чтобы избавиться от него. Я знаю, что пароль правильный, так как я использую тот же при подключении через Workbench. Однако сообщение о хранилище ключей озадачивает меня ... Я не прикасался к хранилищу ключей для начала, но потом я попытался регенерировать файл хранилищу, но я все еще получаю такое же сообщение об ошибке с Java. UPDATE: Я вновь создал свой Docker контейнер для MySQL и явно используется версия 5: Docker п.с. -a КОНТЕЙНЕР ID IMAGE КОМАНДА СОЗДАЕТСЯ STATUS ПОРТЫ ИМЕНА 8bf6b9ddd29f MySQL: 5 "Докер-entrypoint.s ..." 15 секунд назад Up 13 секунд 0.0.0.0 : 3306-> 3306 / TCP гипо- MySQL 1a0add303fe0 MySQL: 5 "докер-entrypoint.s ..." 4 минуты назад Создано гие-MySQL-данные докер Exec -это гипо- MySQL Баш MySQL --version MySQL Ver 14,14 DISTRIB 5.7.22 для Linux (x86_64) с помощью EditLine обертки И после того, как я вернулся обратно к нашей первоначальной версии драйвера JDBC 5.1. 38, кажется, работает! Любая помощь и советы очень ценятся!
poa
1

голосов
0

ответ
38

Просмотры

Многопоточность с помощью функции R dbGetQuery с драйверами JDBC

Есть ли способ заставить многопоточность при использовании функции R dbGetQuery читать таблицу из соединения JDBC? Мне интересно, если это может увеличить скорость чтения. jdbcDriver
John
1

голосов
1

ответ
28

Просмотры

why the JDBCs connection of service and dao are the same?

Просто простой демо MVC. В классе обслуживания, есть дб JDBCutil = новый JDBCutil (); db.beginTransation (); UserinfoDao дао = новый UserinfoDao (); В классе UserinfoDao, есть также JDBCutil дБ = новый JDBCutil (); Я думал, что есть две новые JDBCutil, но на самом деле существует только одно соединение. Зачем? Из-за db.beginTransation () ;? и почему? Я сожалею, что это моя вина, что не выкладываю JDBCutil (спасибо за упоминание комментариев), это возможно «статическое соединение» (выглядит как Singleton) одно соединение, хотя два новых кода .the является частным статического соединения сопп = NULL; частный PreparedStatement ПСТ; // 获取 соединения 连接 GetConnection общественного соединения () {попробуйте {Class.forName ( "oracle.jdbc.driver.OracleDriver"); System.out.println ( "加载 Oracle 驱动 成功"); Строка URL = "JDBC: оракул: тонкий: @ 10. Println ( "加载 Oracle 驱动 失败"); e.printStackTrace (); } Поймать (SQLException е) {System.out.println ( "获取 соединения 连接 失败"); e.printStackTrace (); } Вернуть соед; } Println ( "加载 Oracle 驱动 失败"); e.printStackTrace (); } Поймать (SQLException е) {System.out.println ( "获取 соединения 连接 失败"); e.printStackTrace (); } Вернуть соед; }
1

голосов
0

ответ
52

Просмотры

Запуск executeBatch () эффективно

Мы имеем пакетное приложение, в котором каждая запись записывается в БД с помощью хранимой процедуры, которая только оператор INSERT внутри него. Хранимые процедуры (PARAMS): INSERT INTO таблицы ЗНАЧЕНИЕ Params Но когда эти хранимые процедуры добавляются в шихту для каждой записи, производительность executebatch () не как ожидалось, что будет, когда отдельные Вставки приведены. Мы не хотим, чтобы передать массив в качестве основной массы хранимой процедуры. Мы также не хотим, чтобы написать заявление INSERT в коде. Как преодолеть эту проблему с помощью executeBatch производительности ()?
kaushalpranav
1

голосов
2

ответ
136

Просмотры

Save Array From Dao Class in Java

How can I access ename array of string from Employee to EmployeeDao. I want to save the value with a for loop like st.setString(1,ename[l]). If I write an EmployeeSave() method in the bean class there is no problem, but I want to write it in EmployeeDao st.setString(1, E.getEname()) give me error as the method setString(int, String) in the type PreparedStatement is not applicable for the arguments (int, String[]). Employee.class package com; public class Employee { public String[] getEname() { return ename; } public void setEname(String[] ename) { this.ename = ename; } private String ename[]; } EmployeeDao.class package com; import java.sql.*; public class EmployeeDao { public static void SaveEmployee(Employee E) { Connection con = null; String sql = ""; try { PreparedStatement st = con.prepareStatement(sql); for (int l = 0; l < E.getEname().length; l++) { st.setString(1, E.getEname()); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Debsish Ghosh
1

голосов
2

ответ
50

Просмотры

Создание Spring @Repository и @Controller для каждого элемента я работаю (из базы данных)

При работе с проектом, который включает в себя запрашивающий несколько типов данных из базы данных, я пришел к следующему вопросу: Допустим, у меня есть 2 классов Java, которые соответствуют сущностей базы данных: Маршруты общественного класса Маршрут {общественного маршрута (Int N, Int область, Дата fdate , логическое значение изменилось, Int точки, Int длина) {супер (); this.n = п; this.region = область; this.fdate = fdate; this.changed = измененное; this.points = точки; this.length = длина; }} Carrier общественного класса Carrier {общественный перевозчик (...) {this.id = src.getId (); this.name = src.getName (); this.instId = src.getInstId (); this.depotId = src.getDepotId (); } Если да, то это правильный подход создания интерфейсов и классов Dao? Я' м делает это, как это - @Repository общественного класса CarrierDaoImpl реализует CarrierDao {@Autowired DataSource DataSource; Публичный список getAllOrgs () {...}} @Repository общественного класса RoutesDaoImpl реализует RoutesDao {@Autowired DataSource DataSource; getRoutes общественных ArrayList (AtmRouteFilter фильтр) {...}} Я создаю @Repository DAO для каждого Java элемент класса \ дб объекта и затем 2 отдельных контроллеров для запросов о носителях и маршрутах. Как это: @RestController @RequestMapping (путь = "/") маршрутов общественного класса RoutesController {@Autowired RoutesDao routesDao; @GetMapping (значение = { "/ getRoutes /", "/ getRoutes"}) getRoutes общественные ArrayList () {...}} И то же самое для Carriers контроллера. Является ли это правильно, и если бы не то, что это правильный подход? Извините за вопросы моделирования, что»

Просмотр дополнительных вопросов