‘壹’ 用SOCKET传输数据库文件
如果是在不同的机器上传输,有可能是目标机器上没安装相应的数据库或Excel软件。 可以在自己的机器上给自己传,以排除这种情况。 在程序中,确保传输数据的顺序一致,大小一致。
‘贰’ Socket远程连接数据库
一般来说相应的数据库会提供驱动程序,不需要自己实现Socket,但是肯定是用TCP的。考虑效率就用连接池技术减少TCP的频繁连接断开。
‘叁’ 无法连接到Mysql数据库使用的松鼠问题,怎么解决
分析:这是典型的socket没有正确设置的情况。
连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库。
解决:首先要看本机MySQL的socket套接字文件在哪里,查看命令是:
mysqld --verbose --help | grep socket
输出结果显示套接字文件的位置,比如:这台服务器显示的是
socket /var/run/mysqld/mysqld.sock
然后修改php的配置文件php.ini与之对应起来就好了。
找到这一项:
mysql.default_socket =
一般来说这一项都是空的,改成:
mysql.default_socket = /var/run/mysqld/mysqld.sock
这里应写上一步查询到的文件,根据你的情况设置。至此php配置就修改好了,如果是CLI(命令行)方式或者CGI方式的话,立即就生效,如果是FASTCGI方式,需要重启一下fastcgi进程。
‘肆’ socket传输数据库查出来的数据
我的client法度榜样中应用了serversocket控件向server法度榜样(应用了clientsocket控件)发送数据库法度榜样,当建立连接后,也就是已经有套接子了。可是当我在client法度榜样中按下发送的按钮发送数据时,就缺点讲没有套接子存在的,数据不克不及发送。可是我须要先让法度榜样server法度榜样连接到长途的数据客户机上再敕令客户机发送数据的,到底是为什么呀,难道要用clientsocket控件向serversocket控件发送才行吗?难道我须要用两个套接子吗?感谢,我恳请大大侠帮帮我!!!
‘伍’ 如何实现基于Socket的数据库编程
问题阐述
在使用Socket进行网络编程时,也经常需要将一些信息保存到数据库中,这种程序也
通常称为基于Socket的数据库编程。那么该如何实现基于Socket的数据库编程呢
专家解答
通过Socket将客户端的信息发送到服务器端,然后服务器端对接收到的信息进行处理,并通过JDBC-ODBC桥的方式连接到Access数据库,然后通过JDBC技术将数据信息保存到数据库中。下面的程序实现了基于Socket的数据库编程。(1)新建项目,在项目中创建一个DAO类,用于加载数据库驱动及建立到数据库的连接,该类的关键代码如下:
//加载数据库驱动
.getMessageQ);
//定义数据库连接
publicDAO(){try{
Class.forName(,fsun.jdbc.odbcJdbcOdbcDriverff);
}catch(ClassNotFoundExceptione){
JOptionPane.showMessageDialog(null,数据库驱动加载失败。
}
> publicstaticConnectiongetConn(){try{
Connectionconn=null;
//数据库db_picture.mdb的URL
Stringurl=ffjdbc:odbc:E)river={MicrosoftAccessDriver(*.mdb)};DB(rc/database/dbj)icture.mdbfStringusername=”"; //数据库的用户名
Stringpassword= //数据库密码
conn=DriverManager.getConnection(url,username,password);//建立连接returnconn; //返回连接
}catch(Exceptione){
JOptionPane.showMessageDialog(null,”数据库连接失败。\n+e.getMessageO);
returnnull;
>
(2)在项目中创建一个继承自JFrame类的服务器窗体类DatabaseServerFrame和一个客户端窗体类DatabaseClientFrame。
(3)在服务器窗体类DatabaseServerFrame中定义一个getClientInfo()方法,用于接收
‘陆’ socket 操作数据库
SOCKET接受到的数据存放在一个缓冲区中,然后再写进数据库中,需要了解SOCKET编程和数据库SQL相关知识,多看看书吧,有好处的,学无止境
‘柒’ 如何使用Socket快速判断数据库连接
先用Socket来判断与服务器是否连接成功,然后在进行数据库操作。
[csharp] view plain print?
#region 采用Socket方式,测试服务器连接
/// <summary>
/// 采用Socket方式,测试服务器连接
/// </summary>
/// <param name="host">服务器主机名或IP</param>
/// <param name="port">端口号</param>
/// <param name="millisecondsTimeout">等待时间:毫秒</param>
/// <returns></returns>
public static bool TestConnection(string host, int port, int millisecondsTimeout)
{
TcpClient client = new TcpClient();
try
{
var ar = client.BeginConnect(host, port, null, null);
ar.AsyncWaitHandle.WaitOne(millisecondsTimeout);
return client.Connected;
}
catch (Exception e)
{
throw e;
}
finally
{
client.Close();
}
}
#endregion
下面是数据库的操作,可以根据自己的情况修改。
[csharp] view plain print?
/// <summary>
/// 数据库连接操作,可替换为你自己的程序
/// </summary>
/// <param name="ConnectionString">连接字符串</param>
/// <returns></returns>
private static bool TestConnection(string ConnectionString)
{
bool result = true;
try
{
SqlConnection m_myConnection = new SqlConnection(ConnectionString);
m_myConnection.Open();
//数据库操作......
m_myConnection.Close();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
result = false;
}
return result;
}
我这里用winForm来测试的。
[csharp] view plain print?
private void btnSocket_Click(object sender, EventArgs e)
{
string strCon = "Data Source=192.168.24.566;Initial Catalog=qmaster;User ID=sa;password=123456";
string[] s=strCon.Split(';');
s = s[0].Split('=');
//获取IP
string strIP =s[1];
//发送数据,判断是否连接到指定ip
if (TestConnection(strIP , 1433, 500))
{
//连接成功
MessageBox.Show("Socket Link Succeed","连接服务器");
// 数据库操作,我这里用了连接测试。可根据你的系统自行修改
if (TestConnection(strCon))
MessageBox.Show("Sql Link Succeed","连接数据库");
else
MessageBox.Show("Sql Link Failed", "连接数据库");
}
else
MessageBox.Show("Socket Link Failed","连接服务器");
}
‘捌’ c#socket多线程与数据库同时读写的连接问题
加个判断
if(SqlHelper.connection.State==System.Data.ConnectionState.Closed)
SqlHelper.connection.Open();
else(SqlHelper.connection.State==System.Data.ConnectionState.Broken)
{
SqlHelper.connection.Close();
SqlHelper.connection.Open();
}
‘玖’ socket服务端如何连接上mysql数据库来保存数据
加载数据库驱动:Class.forName("org.gjt.mm.mysql.Driver"); //加载数据库驱动
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passowrd = "123456";
获取数据库连接Connection con数=DriverManager.getConnection(url,user,password)
获取SQL执行器 PreparedStatement prepare = con.prepareStatement("SQL语句")
执行SQL语句,得到结果集 ResultSet result = prepare.executeQuery();
while(result.next()){
//读取结果
}
最后不要忘记导入jdbc驱动包
纯工手打字,请采纳哈