我没有使用经验SQL Express.所以我会尝试提供我认为重要的所有细节.
(它会使帖子有点长.但可能有一些不必要的细节,请通过)
我最近安装了Microsoft SQL Server 2008(开始菜单中有两个项目Microsoft SQL Server 2008和Microsoft SQL Server 2008 R2)
我需要与SQL Express数据库进行通信.实际上,我可以成功地使用我在本地安装的数据库(我的这个帖子,帮助我).但我需要在办公室使用它.
SQL Express这些机器中安装了相同版本.但是我不能在那些机器上使用我的JAVA程序,它会抛出这种异常.
com.microsoft.sqlserver.jdbc.SQLServerException: 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.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at JDBC_TEST.TEST.getData(TEST.java:57)
at JDBC_TEST.TEST$1.actionPerformed(TEST.java:44)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Run Code Online (Sandbox Code Playgroud)
虽然我试了一整天来解决这个问题,但还是找不到办法.但是我发现了一些东西,认为它与此有关.
这是我本地机器的截图SQL Server Configuration Manager.

该计划在这种情况下有效.所以似乎我的程序使用该MSSQLSERVER服务(仅).
但在我的办公室计算机上,虽然SQL Express版本是相同的(因为,我使用相同的设置将其安装在我的计算机中),我发现,这项MSSQLSERVER服务不可用.它仅显示了上述一些服务.(SQL Server (SQLEXPRESS),SQL Server Browser和其他一些服务)
不幸的是,我无法更改办公室数据库的配置.所以我需要知道是否可以通过可用SQLSERVER服务更改程序以与数据库通信.
以下是一个简单的(完整的)代码,用于演示我如何尝试进行通信.(我正在使用Microsoft JDBC驱动程序)
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class TEST extends JFrame {
JTextField stringField;
JButton tryButton;
public static void main(String[] args) {
new TEST().start();
}
private void start() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationByPlatform(true);
getContentPane().setLayout(new GridLayout(2, 0));
stringField = new JTextField("jdbc:sqlserver://localhost:1433;user=root;password=123;");
tryButton = new JButton("TRY");
getContentPane().add(stringField);
getContentPane().add(tryButton);
pack();
tryButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
ResultSet rSet = getData(stringField.getText());
rSet.first();
JOptionPane.showMessageDialog(tryButton, rSet.getString("username"), "DONE !", JOptionPane.INFORMATION_MESSAGE);
rSet.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
setVisible(true);
}
public static ResultSet getData(String URL) throws ClassNotFoundException, SQLException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection CON = DriverManager.getConnection(URL);
String query = "SELECT * FROM logindata;";
Statement st = CON.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet RESULT = st.executeQuery(query);
return RESULT;
}
}
Run Code Online (Sandbox Code Playgroud)
我写这个是为了尝试更改连接字符串..
希望有一些方法可以解决这个问题.任何帮助都非常感谢..
谢谢!
小智 7
脚步
打开Sql Server配置管理器(开始 - >程序 - > Microsoft SQL Server 2008 - >配置工具)
展开SQL Server网络配置 - > [您的服务器实例]
双击TCP/IP
根据议定书:
确保已启用为是
在IP地址下:
滚动到底部并在IPAll下设置TCP端口(默认为1433)
找到要连接的IP地址,并将"已启用"和"活动"设置为"是"
| 归档时间: |
|
| 查看次数: |
6436 次 |
| 最近记录: |