Tôi đang học Java và chỉ cần chạy một cái gì đó đơn giản để lấy một số dữ liệu từ MSSQL thông qua JDBC. Ví dụ trong cuốn sách của tôi không hoạt động (nhưng nó là một vài tuổi) và ví dụ dưới đây từ MS không làm việc cho tôi một trong hai:JDBC: Ví dụ kết nối MSSql đơn giản không hoạt động
http://msdn.microsoft.com/en-us/library/ms378956(v=sql.90).aspx
Dưới đây là mã của tôi:
package javasql;
import java.sql.*;
import java.util.*;
public class Program {
private static String url = "jdbc:sqlserver://localhost\\SQLExpress;database=Northwind;integratedSecurity=true;";
//private static String userName = "sa";
//private static String password = "myPassword";
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
RunDemo();
}
public static void RunDemo() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager.getConnection(url);
Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery("SELECT ProductName, Price FROM Products ORDER BY ProductName");
while(results.next()) {
System.out.println("Product Name: " + results.getNString("ProductName") + " Price: $" + results.getFloat("UnitPrice"));
}
} catch (ClassNotFoundException | SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
Khi tôi chạy mã, tôi không nhận được bất kỳ ngoại lệ ném .. Tôi chỉ nhận được điều này trong cửa sổ đầu ra:
run:
com.microsoft.sqlserver.jdbc.SQLServerDriver
BUILD SUCCESSFUL (total time: 0 seconds)
Tôi đang sử dụng NetBeans 7.2. Xin vui lòng ai đó cho tôi một ví dụ làm việc.
EDIT:
Bằng cách này, cho chuỗi kết nối, nơi bạn nhìn thấy các \\SQLExpress
, tôi đã cố gắng loại bỏ điều đó và sử dụng instanceName=SQLExpress
thay .. nhưng điều đó không có bất kỳ tác dụng một trong hai.
EDIT 2:
OK, tôi đã tải về trình điều khiển JDBC mới nhất cho MSSQL từ MS và tham chiếu 2 tập tin JAR trong đó. Bây giờ tôi nhận được kết quả này:
run:
The connection to the host localhost, named instance SQLExpress failed.
Error: "java.net.SocketTimeoutException: Receive timed out".
Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.
For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
BUILD SUCCESSFUL (total time: 15 seconds)
Tiến trình .. ít nhất chúng ta có thể thấy nó đang cố gắng kết nối ngay bây giờ, ai đó có thể khai sáng cho tôi về lỗi trên?
EDIT 3:
thêm 2 vấn đề cố định .. ai cho phép SQL Server Browser và lần thứ hai được phép giao thức TCP/IP cho SQL Server. Cảm ơn @Vikdor Bây giờ tôi nhận được lỗi này:
run:
The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
BUILD SUCCESSFUL (total time: 15 seconds)
Tôi đã kiểm tra các cửa sổ tường lửa và thêm một rule gửi đến để cho phép cổng đó, nhưng tôi vẫn nhận được lỗi trên. Bất kỳ ý tưởng?
EDIT 4:
Cố gắng giải pháp trong liên kết này: http://www.coderanch.com/t/306316/JDBC/databases/SQLServerException-TCP-IP-connection-host
Không còn bị lỗi trong EDIT 3. Bây giờ nhận được một ...
run:
Sep 21, 2012 11:33:16 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
This driver is not configured for integrated authentication. ClientConnectionId:577f359e-4774-45f3-96fb-588785911817
BUILD SUCCESSFUL (total time: 14 seconds)
Bắt rất mệt mỏi của điều này bây giờ .. tại sao Java, tại sao ?? Nghiêm túc ... Tôi vui vì tôi làm việc chủ yếu với .NET. Vâng, khi tôi tìm ra giải pháp, tôi sẽ đăng nó ở đây để đảm bảo nó có thể giúp người khác trước khi họ đi điên như tôi sắp ...
EDIT 5:
này giúp: java connecting to MicrosoftSQLServer 2005
Tôi đặt đường dẫn thư mục vào biến môi trường PATH của tôi.Không hoạt động, vì vậy tôi cũng đặt sqljdbc_auth.dll
vào thư mục JDK C:\Program Files\Java\jdk1.7.0_04\bin
của mình. Giải quyết.
sqljdbc.jar chúng tôi sử dụng trong Java 1.5, sqljdbc4.jar yêu cầu JDK6 + –