Tag: jdbc

如何将Android Studio与SQL Server数据库连接

首先,如果尝试连接Android Studio(一个基于JVM的IDE)和MS SQL Server,我的尝试是徒劳的,请立即告诉我。 我确实理解Oracle或MySQL会更好。 但是,我想尝试一下。 我已经使用Eclipse成功访问了一个SQL Server数据库,为sqljdbc42.jar文件添加了一个外部依赖项,并提供了一些由Microsoft提供的方便代码(忽略public static void main方法……这来自Eclipse): //===================================================================== // // File: connectURL.java // Summary: This Microsoft JDBC Driver for SQL Server sample application // demonstrates how to connect to a SQL Server database by using // a connection URL. It also demonstrates how to retrieve data // from a SQL Server […]

在Java应用程序中打开和返回数据库连接的最佳方法?

我提出了以下实用程序类: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySqlConnection { private static String dbUrl = “jdbc:mysql://localhost:3306/database”; private static String dbUsername = “root”; private static String dbPassword = “mysql”; public static Connection getConnection() { Connection connection = null; try { Class.forName(“com.mysql.jdbc.Driver”); connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword); } catch (ClassNotFoundException e) { System.out.println(“Could not load JDBC […]

如何将JDBC驱动程序链接到缺少WEB-INF文件夹的EJB项目

我在Neon Eclipse中有Enterprise Appilcation Solution,它包含EJB和Servlet项目并部署到Wildfly 10服务器。 Servlet为访问DB调用EJB。 如果我把JDBC驱动程序放在Servlet项目的WEB-INF文件夹中,一切进展顺利,但如果我将代码移到EJB并将驱动程序作为外部JAR链接(见截图),我会收到错误: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module “deployment.NeoflexBank.ear.Neoflex.jar:main” from Service Module Loader] 这是我用来访问DB的代码: public String test() { String output = “”; try { Class.forName(“com.mysql.jdbc.Driver”).newInstance(); } catch (Exception e) { e.printStackTrace(); } String url=”jdbc:mysql://localhost:3306/neoflex”; String username=”root”; String password=””; String query=”select * from clients”; Connection conn; try { conn = (Connection) DriverManager.getConnection(url, username, […]

Oracle JDBC UCP和Java

我想知道是否有人可以对这个话题有所了解,因为我已经绞尽脑汁好几天了,并且不太明白为什么这不起作用。 我有三个main类, RetrieveDBVersion , GetOracleConnection我一直在用oracle JDBC,UCP和Java 1.7进行一些测试。 根据Oracle文档,如果我使用连接池,一旦关闭连接,连接将返回到池,使其无效并将其设置为null 请参阅此处 。 所以我决定给它一个旋转,看看它是否会像文档说的那样表现。 在我的主应用程序中,我有一个简单的循环,通过调用RetrieveDBVersion 200次连接。 RetrieveDBVersion只是执行查询并返回驱动程序版本。 我的循环工作正常,直到我达到68的幻数,然后我收到一个错误 java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLException: Listener refused the connection with the following error: ORA-12516, TNS:listener could not find available handler with matching protocol stack 这些是3种方法的细节。 这些方法不在服务器环境中。 他们只是调用本地oracle express数据库,我在桌面上运行它们。 为什么我会一直收到这个错误? 如果我将连接返回池中? 主要 import […]

如何配置JDBC连接以使用与当前用户不同的AD用户?

服务器“HOSTNAME”上托管的MS SQL Server 2008 R2数据库“dbname”可由Active Directory用户从域“ABC”访问 ,让我们称他为“dbuser”或“ABC \ dbuser” 。 我们以AD用户“ABC \ appuser”运行我们的应用程序。 “appuser”和“dbuser”位于不同的AD组中。 当由在“ABC \ appuser”下运行的服务运行时,连接使用用户“ABC \ appuser”连接到数据库: DriverManager.getConnection( “jdbc:sqlserver://HOSTNAME:1433;databaseName=dbname;integratedSecurity=true”, “”, “” ); 使用相同的连接字符串并提供“ABC \ dbuser”和密码“dbpass” ,连接将忽略这些值,而是再次尝试使用服务正在运行的AD信息“ABC \ appuser” : DriverManager.getConnection( “jdbc:sqlserver://HOSTNAME:1433;databaseName=dbname;integratedSecurity=true”, “ABC\\dbuser”, “dbpass” ); 删除flag integratedSecurity=true ,连接将“ABC \ dbuser”视为SQL帐户而不是AD帐户,抛出SQLServerException : DriverManager.getConnection( “jdbc:sqlserver://HOSTNAME:1433;databaseName=dbname”, “ABC\\dbuser”, “dbpass” ); 投 com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ‘ABC\dbuser’. 到目前为止,我将假设这是不可能的,并且我将让数据库团队提供对数据库的“ABC […]

使用jdbc通过PrepareStatement为DATETIME字段插入null

我想通过PrepareStatement使用JDBC(使用Mysql数据库)将空值插入DATETIME字段我尝试了以下方法,但没有任何工作。 我有一个方法“Util.dateconvertdate”,它用于将输入日期转换为格式化的字符串类型 public static String dateconvertdate(Timestamp timestamp) { Date date=null; String formattedDate=””; if(timestamp != null){ SimpleDateFormat sdf = new SimpleDateFormat(“dd-MMM-yyyy hh:mm:ss”); SimpleDateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); Date date1 = new java.util.Date(timestamp.getTime()); formattedDate = formatter.format(date1); } else return “NULL”; return formattedDate; } 我用它来检查它是否返回null或日期 if(Util.dateconvertdate(rs.getTimestamp(“fld_dob”)) !=null){ pmystmt.setString(17, (Util.dateconvertdate(rs.getTimestamp(“fld_dob”)))); } else{ pmystmt.setNull(17, java.sql.Types.NULL); } 我尝试过 pmystmt.setNull(17, java.sql.Types.DATE); […]

将参数传递给方法时,将标记查询强制为sqlInjection

我们的数据库层中有一个方法,如下所示: public List getNamesFromId(List idsList){ StringBuilder query = new StringBuilder(); query.append(“Select first_name from person where id in (“); for (int pos = 0; pos < idsList.size(); pos++) { query.append("?"); query.append(","); } query.deleteCharAt(query.length() – 1).append(")"); try { conn = establishConnection(); pstmt = conn.prepareStatement(query.toString()); for (int i = 0; i < selections.size(); i++) { pstmt.setLong(i + 1, […]

SpingREST:无法打开JPA EntityManager进行事务处理; 嵌套exception是org.hiberna

当我启动Postman看到我的SpringREST服务运行时,我收到以下错误: { “timestamp”: 1506965117328, “status”: 500, “error”: “Internal Server Error”, “exception”: “org.springframework.transaction.CannotCreateTransactionException”, “message”: “Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection”, “path”: “/api/matchs” } 我不知道错误在哪里,这里是项目的类: 的pom.xml 4.0.0 com.kaluzny spring-boot-rest-api-postgresql 0.0.1-SNAPSHOT jar org.springframework.boot spring-boot-starter-parent 1.5.3.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-rest org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-test test org.springframework.boot […]

常规JDBC设置

所以我在Debian服务器上设置了MySQL数据库,它可以从phpMyAdmin客户端正常工作。 我目前正在开发一个项目来编写一个Java服务器,该服务器能够通过JDBC连接使用已在此服务器上的MySQL数据库。 我看了很多教程和文档,但所有这些似乎只是解释了如何做客户端代码,但我还没弄明白如何成功打开到服务器的JDBC连接。 就我而言,我相信该程序已正确设置驱动程序,因为它不再崩溃(我只是将我的程序的Java Build Path指向MySQL提供的Connector / J)。 就我的程序而言,这就是它的样子…… import java.sql.*; public class JDBCTest { public static void main(String[] args) { System.out.println(“Started!”); try { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); System.out.println(“Driver registered. Connecting…”); Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost/”, “root”, “password”); System.out.println(“Connected!”); conn.close(); } catch (SQLException e) { System.out.println(“Error!”); e.printStackTrace(); } } } 这就是印刷品…… Started! Driver registered. Connecting… 好像DriverManager.getConnection(String)就在那里冻结了。 我确定这是服务器的问题,因为当我故意拼错localhost或IP地址时,程序会在20秒内崩溃。 这只是永远挂在那里。 […]

从方法返回到新对象时,原始resultSet会发生什么?

伪代码可以更好地解释我的自我。 我现在正在学习Java。 如果我有方法 public resultSet getEverything() { resultSet rs = blabla; return rs } 我不能rs.close()因为我需要在我检索它的方法中使用它,因此我将使用它,并且可能’关闭’我创建的新resultSet。 从前一个resultSet发生了什么? 它是否被垃圾收集器收集? 当我关闭’new’resultSet时它会自动关闭吗? 它对代码效率/性能有任何影响吗? 任何反馈都会非常感激:)因为这让我有点困惑。 它更像是一个OOP问题,而不是我认为的Java。 谢谢!