我刚刚开始构建Java应用程序(我确实有.NET经验),我正在尝试构建一个小型测试应用程序,其整个代码是这样的:
package com.company;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) throws SQLException {
System.out.println("Buna lume!");
SQLServerDataSource ds = new SQLServerDataSource();
ds.setIntegratedSecurity(true);
ds.setServerName("localhost");
ds.setPortNumber(1433);
ds.setDatabaseName("Test");
Connection con = ds.getConnection();
String SQL = "SELECT * FROM Test WHERE ID = ?";
PreparedStatement stmt = con.prepareStatement(SQL);
stmt.setInt(1, 2);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1) + ", " + rs.getString(2));
}
rs.close();
stmt.close();
con.close();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在IDE(IntelliJ IDEA 12.1.6社区版)中运行该应用程序,使SQL Server可用,该应用程序运行正常,它应该做到这一点. …
我在独立模式下运行jboss并将数据源设置standalone.xml为以下内容:
<datasource jndi-name="MyDenaliDS" pool-name="MyDenaliDs_Pool" enabled="true" jta="true"
use-java-context="true" use-ccm="true">
<connection-url>
jdbc:sqlserver://myip:1433;databaseName=mydb;integratedSecurity=true
</connection-url>
<driver>
sqljdbc
</driver>
<security>
<user-name>
username
</user-name>
<password>
password
</password>
</security>
</datasource>
<drivers>
<driver name="sqljdbc" module="com.microsoft.sqlserver.jdbc">
<driver-class>
com.microsoft.sqlserver.jdbc.SQLServerDataSource
</driver-class>
</driver>
</drivers>
Run Code Online (Sandbox Code Playgroud)
在文件夹中%jbosshome%\modules\com\microsoft\sqlserver\jdbc\我有sqljdb4.jar以下内容module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module name="com.microsoft.sqlserver.jdbc" xmlns="urn:jboss:module:1.0">
<resources>
<resource-root path="sqljdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
Run Code Online (Sandbox Code Playgroud)
当我启动jboss时它会给我以下错误:
> New missing/unsatisfied dependencies: service
> jboss.jdbc-driver.sqljdbc (missing)
Run Code Online (Sandbox Code Playgroud)
任何人都知道我做错了什么或我错过了什么?
我使用此代码创建到SQL Server的连接.
String connectionUrl = "jdbc:sqlserver://IP:1433;" +
"databaseName=db;user=db;password=pwd";
Connection con = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
return "true";
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误:
com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密与SQL Server建立安全连接.错误:"套接字已关闭".ClientConnectionId:5975fad5-8f8d-496A-a2bb-bff3a8d1a755
有谁能够帮我?提前致谢
这是WildFly 10.0中Hibernate版本不匹配的后续问题.
为了完整起见,请简要地重述问题.我有2个项目,一个是普通的java项目(有maven):, core另一个是非maven动态web项目:webapi.后者充当了休息层core.
core使用hibernate没有任何问题.它定义persistence.xml(内部src/META-INF/)如下:
<?xml version="1.0" encoding="utf-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="app" transaction-type="RESOURCE_LOCAL">
<class>data.entities.Anything</class>
<class>data.entities.Something</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
<property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost;databaseName=AppDb"></property>
<property name="javax.persistence.jdbc.user" value="****"></property>
<property name="javax.persistence.jdbc.password" value="****"></property>
<property name="hibernate.default_schema" value="dbo"></property>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"></property>
<property name="hibernate.hbm2ddl.auto" value="update"></property>
<property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2.4.Final" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
既core和webapi现在正在使用hibernate-core 5.2.4.Final,使用maven和WildFly模块安装为描述这里分别.
但是,现在当我部署webapi到WildFly 10.0时,我收到以下错误:
[org.jboss.as.server.deployment](MSC服务主题1-8)WFLYSRV0027:开始部署"webapi.war"(运行时名称:"webapi.war")
[org.jboss.as.jpa](MSC服务主题1-1)WFLYJPA0002:为应用程序读取persistence.xml
[org.jboss.as.jpa](ServerService线程池 - …
我有一个关于jars sqljdbc.jar和sqljdbc4.jar的查询,它们分别用于连接到JDK版本1.5和1.6的系统的MS SQL Server 2005.现在我想知道,当尝试使用sqljdbc从JDK版本为1.5和1.6的系统进行访问时,这些jar如何解释MS SQL Server 2005中某个DB表中数据类型为"XML"的列. jar和sqljdbc4.jar分别?
使用sqljdbc.jar和sqljdbc4.jar解释XML数据类型有什么不同吗?
非常感谢你提前,
此致,Laaksha
我正在尝试编写一个非常简单的GUI应用程序,用于将一些记录插入数据库,并读回一些记录(没什么特别的,只有1个表有3行,没有关系).来源...
package EntryProg;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
public class CourseDataEntryHandler
{
private Connection connect;
private CallableStatement callState;
private ResultSet rSet;
private SQLServerDataSource dSource;
public CourseDataEntryHandler()
{
rSet = null;
callState = null;
dSource = new SQLServerDataSource();
dSource.setUser(REDACTED);
dSource.setPassword(REDACTED);
dSource.setServerName(REDACTED);
dSource.setPortNumber(REDACTED);
dSource.setDatabaseName(REDACTED);
dSource.setEncrypt(true);
dSource.setTrustServerCertificate(true);
try
{
Run Code Online (Sandbox Code Playgroud)
这里错了
connect = dSource.getConnection();
Run Code Online (Sandbox Code Playgroud)
结束错误
}
catch (SQLServerException e)
{
//TODO Figure out how to handle -- logging for now, console
do
{
System.out.println(e.getErrorCode());
System.out.println(e.getMessage());
System.out.println(e.getSQLState());
e = (SQLServerException) e.getNextException();
} while (e != null); …Run Code Online (Sandbox Code Playgroud) 从我的所有应用程序使用net.sourceforge.jtds.jdbc.Driver作为我的MSSQL驱动程序.我在准备好的语句中遇到了性能问题,并了解到sendStringParametersAsUnicode = false应该可以解决问题.不幸的是,我似乎无法让司机接受这个价值.我可以得到Microsoft驱动程序com.microsoft.sqlserver.jdbc.SQLServerDriver接受参数就好了:
jdbc:sqlserver://servername:1433;databaseName=dbname;sendStringParametersAsUnicode=false
Run Code Online (Sandbox Code Playgroud)
在persistence.xml和我的ds.xml中工作.准备好的陈述很快就会在22秒内完成.
但是,我似乎无法从JTDS获得相同的性能提升.它仍然围绕着准备好的语句,每次迭代需要几秒钟.
我在字符串上尝试了几种变体,并且在我的测试中看到了相同的延迟(使用Hibernate.connection.url的persistence.xml)和使用JTA和ds.xml的服务器.
jdbc:jtds:sqlserver://server:1433/dbname;sendStringParametersAsUnicode=false
jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;databaseName=dbname
jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;selectMethod=cursor;socketKeepAlive=true;databaseName=dbname
Run Code Online (Sandbox Code Playgroud)
我读过的所有内容都表明Microsoft驱动程序速度较慢,而且我的公司过去也遇到过问题.如果可能的话,我真的很想使用JTDS,但是不能等待准备好的声明10秒!
有人有什么想法吗?
谢谢
尝试使用sqljdbc41for将我的 Java Web 应用程序与 MS-SQL 服务器连接起来jdk 1.8。这是数据库连接代码-
Connection connection;
String url = "jdbc:sqlserver://localhost:1433;databaseName=Lista;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(url);
Run Code Online (Sandbox Code Playgroud)
当我尝试向数据库中插入一些值时,例如 -
PreparedStatement ps = connection.prepareStatement("INSERT INTO user_informations VALUES(?,?,?)");
ps.setString(1, "value");
ps.setString(2, "value");
ps.setString(3, "value");
ps.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
每次都收到以下错误-
com.microsoft.sqlserver.jdbc.SQLServerException: 此驱动程序未配置为集成身份验证
以下是有关我尝试过的内容的一些信息-
sqljdbc41在路径变量中添加了路径。sqljdbc_auth.dll在路径变量中添加了路径。sqljdbc41.jar到我的Nebeans项目库中。sqljdbc_auth.dll下到两个bin文件夹jdk和jre。jdk就是64 bit在Program Files文件夹没有程序文件(x86)的。编辑
现在我遇到了一个新事物 - 在我第一次部署项目时重新启动我的电脑后,它运行良好,但是当我对代码进行任何更改并重新运行该项目时,它无法正常工作!
这是我的第一个Java应用程序,我对Java和NetBeans完全缺乏经验.
我一直在尝试连接到sql并获取一些记录2天.问题是关于jdbc驱动程序,让我解释一下.我已经下载了sqljdbc驱动程序,然后按照以下步骤操作:
右键单击Project-> Select Properties->在左侧单击Libraries-> Compile选项卡 - 单击Add Jar/Folder按钮并选择sqljdbc4.jar文件.那应该没问题吧?
然后我写了这段代码但是我无法摆脱这个异常:
Exception in thread "main" java.lang.ClassNotFoundException:
com.microsoft.sqlserver.jdbc.SqlServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:30)
Run Code Online (Sandbox Code Playgroud)
这是代码
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String url = "jdbc:sqlserver://.\\SQLEXPRESS;databaseName=Northwind; Integrated Security = SSPI ";
Connection con = null;
Statement stmt = null;
ResultSet rs = …Run Code Online (Sandbox Code Playgroud) 我们正在从 SQL Server 2005 迁移到 2012。其中一项功能因此错误而失败
com.microsoft.sqlserver.jdbc.SQLServerException:不允许从数据类型 varbinary 到 datetime2 的隐式转换。使用 CONVERT 函数运行此查询。
我们用来SQLJDBC driver 3.0与 SQL Server 2012 进行通信。当我们尝试将 NULL 值插入列DATETIME(可为空)时,我发现会发生此问题。但在 2005 年也同样有效。对于此问题的任何帮助,我们将不胜感激。
这是一个INSERT使用 MyBatis ORM 从 Java 到 SQL Server 2012 失败的简单语句:
Insert into temp_test (date1, name, date2) values ('2010-10-10 00:00:00.0','test',null)
Run Code Online (Sandbox Code Playgroud)
当我们尝试从我们的应用程序(使用 SQL JDBC 驱动程序)时,此插入失败...但是相同的代码库在 SQL 2005 中可以正常工作,没有任何问题。