本文将为您提供关于sqlserver中如何以IP+端口号的方式连接到局域网数据库的详细介绍,我们还将为您解释sqlserver使用ip连接的相关知识,同时,我们还将为您提供关于(轉)用API得到局域网
本文将为您提供关于sqlserver中如何以IP+端口号的方式连接到局域网数据库的详细介绍,我们还将为您解释sql server使用ip连接的相关知识,同时,我们还将为您提供关于(轉)用API得到局域网中可用SqlServer服务器列表、Eclipse 使用 JDBC 方式连接 SQLServer2008、Eclipse使用JDBC方式连接SQLServer2017、myeclipse 与sqlserver2008通过jdbc方式连接的实用信息。
本文目录一览:- sqlserver中如何以IP+端口号的方式连接到局域网数据库(sql server使用ip连接)
- (轉)用API得到局域网中可用SqlServer服务器列表
- Eclipse 使用 JDBC 方式连接 SQLServer2008
- Eclipse使用JDBC方式连接SQLServer2017
- myeclipse 与sqlserver2008通过jdbc方式连接
sqlserver中如何以IP+端口号的方式连接到局域网数据库(sql server使用ip连接)
sqlserver连接服务器有几种方式,其中一种就是在数据库引擎中的服务器名称中输入IP+端口号连接,输入格式是:IP+逗号+端口号,如下图所示
(轉)用API得到局域网中可用SqlServer服务器列表
本文轉自:http://www.pcdog.com/edu/aspdotnet/2006/06/f139082.html
用API得到局域网中可用sqlServer服务器列表
程序实现了用API来得到sqlServer服务器列表的功能,我觉得比用sqlDEMO组件更有意义,代码如下:
/// <summary>
/// 获取网内的数据库服务器名称
/// </summary>
public class sqlLocator
{
[System.Runtime.InteropServices.DllImport("odbc32.dll")]
private static extern short sqlAllocHandle(short hType,IntPtr inputHandle,out IntPtr outputHandle);
[System.Runtime.InteropServices.DllImport("odbc32.dll")]
private static extern short sqlSetEnvAttr(IntPtr henv,int attribute,IntPtr valuePtr,int strLength);
[System.Runtime.InteropServices.DllImport("odbc32.dll")]
private static extern short sqlFreeHandle(short hType,IntPtr handle);
[System.Runtime.InteropServices.DllImport("odbc32.dll",CharSet= System.Runtime.InteropServices.CharSet.Ansi)]
private static extern short sqlbrowseConnect(IntPtr hconn,System.Text.StringBuilder inString,
short inStringLength,System.Text.StringBuilder outString,short outStringLength,
out short outLengthNeeded);
private const short sql_HANDLE_ENV = 1;
private const short sql_HANDLE_DBC = 2;
private const int sql_ATTR_ODBC_VERSION = 200;
private const int sql_OV_ODBC3 = 3;
private const short sql_SUCCESS = 0;
private const short sql_NEED_DATA = 99;
private const short DEFAULT_RESULT_SIZE = 1024;
private const string sql_DRIVER_STR = "DRIVER=sql SERVER";
private sqlLocator(){}
/// <summary>
/// 获取网内的数据库服务器名称,是一个字符串数组。
/// </summary>
/// <returns></returns>
public static string[] GetServers()
{
string list = string.Empty;
IntPtr henv = IntPtr.Zero;
IntPtr hconn = IntPtr.Zero;
System.Text.StringBuilder inString = new System.Text.StringBuilder(sql_DRIVER_STR);
System.Text.StringBuilder outString = new System.Text.StringBuilder(DEFAULT_RESULT_SIZE);
short inStringLength = (short) inString.Length;
short lenNeeded = 0;
try
{
if (sql_SUCCESS == sqlAllocHandle(sql_HANDLE_ENV,henv,out henv))
{
if (sql_SUCCESS == sqlSetEnvAttr(henv,sql_ATTR_ODBC_VERSION,(IntPtr)sql_OV_ODBC3,0))
{
if (sql_SUCCESS == sqlAllocHandle(sql_HANDLE_DBC,out hconn))
{
if (sql_NEED_DATA == sqlbrowseConnect(hconn,inString,inStringLength,outString,
DEFAULT_RESULT_SIZE,out lenNeeded))
{
if (DEFAULT_RESULT_SIZE < lenNeeded)
{
outString.Capacity = lenNeeded;
if (sql_NEED_DATA != sqlbrowseConnect(hconn,
lenNeeded,out lenNeeded))
{
throw new ApplicationException("Unabled to aquire sql Servers from ODBC driver.");
}
}
list = outString.ToString();
int start = list.IndexOf("{") + 1;
int len = list.IndexOf("}") - start;
if ((start > 0) && (len > 0))
{
list = list.Substring(start,len);
}
else
{
list = string.Empty;
}
}
}
}
}
}
catch
{
list = string.Empty;
}
finally
{
if (hconn != IntPtr.Zero)
{
sqlFreeHandle(sql_HANDLE_DBC,hconn);
}
if (henv != IntPtr.Zero)
{
sqlFreeHandle(sql_HANDLE_ENV,hconn);
}
}
string[] array = null;
if (list.Length > 0)
{
array = list.Split(',');
}
return array;
}
}
注:未驗証正确性
Eclipse 使用 JDBC 方式连接 SQLServer2008
JDBC_连接数据库
一、配置
(一) 通过 SQL Server 配置管理器配置相关部分;
右键点击,启动 tcp/ip 协议
右键点击属性查看自己的 TCP 端口号,记住,后面会用到
右键点击 SQL Server 配置管理器重启 sql server (mssqlserver) 服务,使得 tcp/ip 协议生效。
右键点击服务器,选择属性
记住自己更改的密码,后面会用到。
点击状态
(二) 下载 SQL ServerJDCB 库
https://www.microsoft.com/zh-CN/download/details.aspx?id=11774
下载第三个,解压其中对应的类库如:mssql-jdbc-6.4.0.jre9
<需要注意自己的 JDK 是哪个版本的,1.80 以上的对应 sqljdbc42.jar 类库>
然后进入 eclipse 界面,找到的当前工程文件,点击右键,选中 properties->Libraries->addexternal jars-> 找到我们刚刚下载到的 sqljdbc42.jar 类库,添加即可。
百度网盘
提取码:sv6s
(三) 新建工程,验证是否成功连接数据库。
package com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.crypto.provider.RC2Parameters;
//登陆处理
public class LoginCL extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
Connection ct=null;
Statement sm = null;
ResultSet rs = null;
try{
//接收用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("passwd");
//加载驱动,不同版本sqljdbc42.jar解压后文件夹顺序不同
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//得到链接
ct=DriverManager.getConnection(
"jdbc:sqlserver://127.0.0.1:1433;databaseName = madb","sa","123"); //因为连接的是sql2008,不用加microsoft!!!!
sm = ct.createStatement();
rs = sm.executeQuery("select top 1 * from users where username=''"+u+"'' and passwd=''"+p+"''");
//验证
if(rs.next()){
res.sendRedirect("wel");
}
else{
System.out.println("登陆失败");
}
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(sm!=null){
try {
sm.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
doGet(req,res);
}
}
Eclipse使用JDBC方式连接SQLServer2017
这篇博客写的比较详细了,图文并茂:
https://blog.csdn.net/rebekahq/article/details/78691343
这里补充一些可能会遇到的问题:
1.与博客中不同之处:下载Microsoft JDBC Driver 4.0 for SQL Server时:
选择第三个,下载完成之后博客中sqljdbc4即为你下载的sqljdbc42,其余操作步骤与博客中的相同。
2.若在运行如下代码时报错:抛出 java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 异常
1 新建包 新建class Main
2
3 package p;
4
5 import java.sql.*;
6
7 public class Main
8 {
9 public static void main(String[] args)
10 {
11 String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎
12 String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=数据库名";//数据源 !!!!注意若出现加载或者连接数据库失败一般是这里出现问题
13 String Name="你的用户名,比如sa";
14 String Pwd="你的密码";
15 try
16 {
17 Class.forName(driverName);
18 Connection conn=DriverManager.getConnection(dbURL,Name,Pwd);
19 System.out.println("连接数据库成功");
20 }
21 catch(Exception e)
22 {
23 e.printStackTrace();
24 System.out.println("连接失败");
25 }
26 }
27 }
解决方法:
需要导入 javax.xml.bind.jar 去下载一个即可
网址:http://www.java2s.com/Code/Jar/j/Downloadjavaxxmlbindjar.htm
3.解决抛出异常的另一个方法(在走投无路的情况下,一位姓刘的大佬给我解决的方法!!!):
因为是缺少javax.xml.bind,可以下载与之对应的jdk版本。
http://www.itcast.cn/news/20191113/11025871604.shtml
我是下载了jdk-8u202-windows-x64,并设置Eclipse更改jdk版本为它。
https://jingyan.baidu.com/article/e75057f20dee21ebc91a89f5.html
myeclipse 与sqlserver2008通过jdbc方式连接
1.若遇到这中情况,说明你加载的外部jar包路径改变了。 这时我们要重新加载jar包。你的工程属性-java build path-Add External JARs添加你的jar 2.在用jdbc 连接 数据库sqlserver2008时,我们应使用sqljdbc4.jar 3.遇到这种情况时,说明,你建的表不在你所指
1.若遇到这中情况,说明你加载的外部jar包路径改变了。
这时我们要重新加载jar包。你的工程属性->java build path->Add External JARs添加你的jar
2.在用jdbc连接数据库sqlserver2008时,我们应使用sqljdbc4.jar
3.遇到这种情况时,说明,你建的表不在你所指定的数据库中。请正确检查表所建的位置。
4.遇到这中情况时,说明你的jar包没有导入,或是你jar包导入的位置不对。在myeclipse2014中,导入外部jar包的方式是通过方式2实现的。
我之前是简单的将sqljdbc4.jar复制到我的工程中,本以为jar包已导入,其实不然。
今天的关于sqlserver中如何以IP+端口号的方式连接到局域网数据库和sql server使用ip连接的分享已经结束,谢谢您的关注,如果想了解更多关于(轉)用API得到局域网中可用SqlServer服务器列表、Eclipse 使用 JDBC 方式连接 SQLServer2008、Eclipse使用JDBC方式连接SQLServer2017、myeclipse 与sqlserver2008通过jdbc方式连接的相关知识,请在本站进行查询。
本文标签: