⑴ jdbc socketread阻塞,怎么破
你好,提示很清楚嘛,I/O异常:读取失败:连接超时。
可能的情况包括:网线没有插好;其他原因导致和数据库服务器的网络断开;连接数据库的URI不正确;数据库没有正确配置;数据库挂了。
总之一点,没有连上数据库。
⑵ sql server 2012 sa无法登录 error establish socket;
你打开sql server configuration manager 展开 sql server 网络配置,
你看看里面的 tcp/ip 是否启用,然后右击 → 属性 可以设置 IP、端口
⑶ MyEclipse6.5 连接sqlserver2005报错
打相应的补丁。MyEclipse
DB连接数据库:
打开MyEclipse,在菜单栏中选择窗口→显示视图→其他→选择MyEclipse
Database文件夹下的DB
Browser确定后,就打开DB的视图窗口了,右键
MyEclipse
Derby,选择New...,
Driver
template:这里选择主流数据库
Driver
name:自定义名
Connection
URL:“<>”把这个符号去掉,默认端口号为:1433
User
name:一般为sa
Password:密码为空
Driver
JARs:
这里点Add
JARs添加3个jar文件,这3个文件名为:msbase.jar,mssqlserver.jar,msutil.jar,然后点TestDriver
测试连接,提示输入密码,密码为空直接确定,会提示错误Error...,这时候我们需要“SQLserver2000数据库sp3补丁”,解压安装,运行sql2ks3目录下的setup.bat批处理文件,打完补丁后,将SQL2000的服务管理器打开,这时候在点TestDriver
测试连接,提示:Database
connection
successfully
established.就连接上数据库了.
我装的是
sql
server
2000
4合1
简体中文版].psql2k_4in1
个人版的,装完以后,直接安装SQLserver2000数据库sp3补丁,补丁打完后,我直接进入MyEclipse
7.1
连接失败,提示:Error
while
performing
database
login
with
the
pubs
driver:[Microsoft][SQLServer
2000
Driver
for
JDBC]Error
establishing
socket.原来是忘记启动SQL
Server
服务管理器,我的服务器名:PC-WWDZ
这时候我在点击Test
Driver
提示:Enter
your
password
因为我sa帐户的密码为空,我直接回车,这时候提示:Database
connection
successfully
estalished.
成功连接数据库。
注意:
1.Connection
URL:jdbc:microsoft:sqlserver://localhost:1433
2.Driver
JARs
文件:3个文件分别是
msbase.jar,mssqlserver.jar,msutil.jar。
⑷ 如何把socket接收的数据写入sqlserver数据库
这个应该不难啊,接到数据就往数据库写
⑸ socket closed错误是怎么回事
1. Windows服务器运行自动更新。具体为什么自动更新运行后,就会消耗系统这么多的SOCKET
连接,我还搞不清楚。但是有一点,自动更新肯定会占用网络带宽和CPU,在服务器上,我觉得应该是关闭自动更新的,采用人工更新的方法。
2.机器中了木马。木马会打开很多后门,创建大量的连接,包括局域网肉鸡上的,还有外网的。这也会导致机器出现无法上网,或者程序无法连接。在搜索到的结果中,大量的结果都是采用的SQLSERVER数据库服务器,这是很容易招来木马和病毒的服务器,大部分是SQLSERVER出问题,不是偶然的。
3.虚拟内存配置过低。第一次发现这个问题后,我到现场打开机器,确实报了一个虚拟内存的错误,说虚拟内容不足。
4.有不当程序创建了大量的短连接,由于程序的不健壮,导致
SOCKET处于忙碌或者TIME_WAIT状态,或者服务器和客户端有一方出现异常,而另一方没有得到通知,还在连接,持续不断的做写操作。
⑹ sqlserver数据库长连接和短连接的区别
其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。
通常的短连接操作步骤是:
连接-》数据传输-》关闭连接;
而长连接通常就是:
连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;
这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了
什么时候用长连接,短连接?
长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Socket连接也是对资源的浪费。
但是对于服务端来说,长连接也会耗费一定的资源,需要专门的线程(unix下可以用进程管理)来负责维护连接状态。
总之,长连接和短连接的选择要视情况而定。
⑺ Java socket编程服务器端能接收到客户端的数据,但是服务器端使用数据采用JDBC连接SQL server时出错
你把SQL Server报错的异常贴一下,这样可以看一下具体是什么问题,才能对症解决
⑻ 如何用c#实现把socket接收的数据写入sqlserver数据库
Asp.net中C#使用Socket发送和接收TCP数据的方法。
具体程序代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Net;
usingSystem.Net.Sockets;
usingSystem.Text;
namespaceConsoleApplication1
{
publicstaticclassSocketTest
{
privatestaticEncodingencode=Encoding.Default;
///<summary>
///监听请求
///</summary>
///<paramname="port"></param>
publicstaticvoidListen(intport)
{
SocketlistenSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
listenSocket.Bind(newIPEndPoint(IPAddress.Any,port));
listenSocket.Listen(100);
Console.WriteLine("Listen"+port+"...");
while(true)
{
SocketacceptSocket=listenSocket.Accept();
stringreceiveData=Receive(acceptSocket,5000);//5secondstimeout.
Console.WriteLine("Receive:"+receiveData);
acceptSocket.Send(encode.GetBytes("ok"));
DestroySocket(acceptSocket);//import
}
}
///<summary>
///发送数据
///</summary>
///<paramname="host"></param>
///<paramname="port"></param>
///<paramname="data"></param>
///<returns></returns>
publicstaticstringSend(stringhost,intport,stringdata)
{
stringresult=string.Empty;
SocketclientSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
clientSocket.Connect(host,port);
clientSocket.Send(encode.GetBytes(data));
Console.WriteLine("Send:"+data);
result=Receive(clientSocket,5000*2);//5*2secondstimeout.
Console.WriteLine("Receive:"+result);
DestroySocket(clientSocket);
returnresult;
}
///<summary>
///接收数据
///</summary>
///<paramname="socket"></param>
///<paramname="timeout"></param>
///<returns></returns>
privatestaticstringReceive(Socketsocket,inttimeout)
{
stringresult=string.Empty;
socket.ReceiveTimeout=timeout;
List<byte>data=newList<byte>();
byte[]buffer=newbyte[1024];
intlength=0;
try
{
while((length=socket.Receive(buffer))>0)
{
for(intj=0;j<length;j++)
{
data.Add(buffer[j]);
}
if(length<buffer.Length)
{
break;
}
}
}
catch{}
if(data.Count>0)
{
result=encode.GetString(data.ToArray(),0,data.Count);
}
returnresult;
}
///<summary>
///销毁Socket对象
///</summary>
///<paramname="socket"></param>
(Socketsocket)
{
if(socket.Connected)
{
socket.Shutdown(SocketShutdown.Both);
}
socket.Close();
}
}
}
⑼ 利用Java编写一个程序利用Socket,实现网络的点对点文件传输并且能实现聊天,发个给我学习下,好吗
这个时比较简单的。
package QQ;
import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class QQServer {
public static void main(String args[]) {
try {
HashMap<String , Socket> hm = new
HashMap<String , Socket>() ;
// 服务器到8000端口监听(1)
ServerSocket ss = new ServerSocket
(8000);
while (true) {
System.out.println("服务器正在
8000端口监听.....");
Socket s = ss.accept();
MyService t = new MyService();
t.setSocket(s) ;
t.setHashMap(hm) ;
t.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyService extends Thread {
private Socket s ;
private HashMap<String , Socket> hm ;
public void setHashMap(HashMap<String , Socket> hm){
this.hm = hm ;
}
public void setSocket(Socket s){
this.s = s ;
}
public void run() {
try {
// 接收客户端发送来的用户名和密码(2)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader
(is);
BufferedReader br = new BufferedReader(isr);
String uandp = br.readLine();
// 拆分用户名和密码(4)
String u = "";
String p = "";
try{
u = uandp.split("%")[0];
p = uandp.split("%")[1];
}catch(Exception e){}
// 到数据库中验证(5)
Class.forName
("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection cn = DriverManager
.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=qq2",
"sa", "123");
PreparedStatement ps = cn
.prepareStatement("select
username from username where username=? and password=?");
ps.setString(1, u);
ps.setString(2, p);
ResultSet rs = ps.executeQuery();
// 发送确认信息到客户端(7)
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new
OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw, true);
if (rs.next()) {
pw.println("ok");
//将自己的名字发送给HashMap中的其他人
(13)
for(Socket ts : hm.values()){
OutputStream tos =
ts.getOutputStream() ;
OutputStreamWriter tosw = new
OutputStreamWriter(tos) ;
PrintWriter tpw = new
PrintWriter(tosw , true) ;
tpw.println("user%"+u) ;
}
//将其他人的名字发送给自己(13)
for(String tu : hm.keySet()){
pw.println("user%"+tu) ;
}
//将用户名和对应的Socket存入HashMap
(13)
hm.put(u, s) ;
// 接收客户端发送来的信息(11)
while (true) {
String message = br.readLine
();
if(message.equals("exit")){
for(Socket ts :
hm.values()){
OutputStream
tos = ts.getOutputStream() ;
OutputStreamWriter tosw = new OutputStreamWriter(tos) ;
PrintWriter
tpw = new PrintWriter(tosw , true) ;
tpw.println
("exit%"+u);
}
hm.remove(u);
}
String to = message.split
("%")[0];
String mess = message.split
("%")[1];
Socket ts = hm.get(to);
OutputStream tos =
ts.getOutputStream();
OutputStreamWriter tosw = new
OutputStreamWriter(tos);
PrintWriter tpw = new
PrintWriter(tosw, true);
tpw.println("mess%"+mess
+"\n");
System.out.println(message);
}
} else {
pw.println("err");
}
} catch (Exception e) {}
}
}