DBServerClassLibrary.Dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;namespace DBServerClassLibrary
{
public class DBServerClassLibrary : MarshalByRefObject
{
private string strConn;
private string strServer;
private string strDb;
private string strUser;
private string strPsw;
public SqlConnection sqlConn;
public SqlTransaction transaction;
public DBServerClassLibrary()
{
sqlConn = null;
}
~
DBServerClassLibrary()
{
} public int ConnectSQLserver()
{
strConn = "Data Source=ptz;Initial Catalog=water;User ID=sa;Password=water";
sqlConn =new SqlConnection(strConn);
try
{
if (sqlConn.State != ConnectionState.Open)
{
sqlConn.Open();
}
}
catch
{
return -1;
}
return 0;
} public void StartTransaction()
{
transaction = sqlConn.BeginTransaction();
}
public void CommitTransaction()
{
transaction.Commit();
}
public void RollBackTransaction()
{
if (transaction == null)
return;
transaction.Rollback();
} public int Execute(string pszSQL, bool isTransaction)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
}
SqlCommand sqlComm = new SqlCommand(pszSQL, sqlConn);
if (isTransaction)
sqlComm.Transaction = transaction;
sqlComm.ExecuteNonQuery();
}
catch
{
return -1;
} return 0;
} public int Execute(string pszSQL)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
}
SqlCommand sqlComm = new SqlCommand(pszSQL, sqlConn);
sqlComm.ExecuteNonQuery();
}
catch
{
//System.Windows.Forms.MessageBox.Show(sqlEx.Message);
return -1;
} return 0;
}
public DataSet ExecuteQuery(string strSQLquery, string strTable)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
} SqlDataAdapter sqlDa = new SqlDataAdapter(strSQLquery, sqlConn);
DataSet ds = new DataSet(strTable);
sqlDa.Fill(ds, strTable);
return ds;
}
catch
{
// System.Windows.Forms.MessageBox.Show(sqlEx.Message);
return null;
} } public DataSet ExecuteQuery(string strSQLquery, string strTable, bool isTransaction)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
}
SqlCommand sqlComm = new SqlCommand(strSQLquery, sqlConn);
if (isTransaction)
sqlComm.Transaction = transaction;
SqlDataAdapter sqlDa = new SqlDataAdapter();
sqlDa.SelectCommand = sqlComm;
DataSet ds = new DataSet(strTable);
sqlDa.Fill(ds, strTable);
return ds;
}
catch
{
return null;
}
}
服务端代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace DBServerClassLibrary
{
public partial class FmServer : Form
{
public FmServer()
{
InitializeComponent();
} private void FmServer_Load(object sender, EventArgs e)
{
TcpServerChannel channel = new TcpServerChannel(8888);
ChannelServices.RegisterChannel(channel,false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(DBServerClassLibrary), "DBServerClassLibrary", WellKnownObjectMode.SingleCall);
DBServerClassLibrary db = new DBServerClassLibrary();
/*if (db.ConnectSQLserver() < 0)
{
MessageBox.Show("数据库连接失败!");
return;
}*/
}
}
}客户端代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
//using DBServerClassLibrary;
using System.Data.SqlClient;namespace DBServerClassLibrary
{
public partial class FmClient : Form
{
//private DBServerClassLibrary obj;
public FmClient()
{
InitializeComponent();
} private void FmClient_Load(object sender, EventArgs e)
{
string strSQL; DBServerClassLibrary g_conn = new DBServerClassLibrary();
g_conn = (DBServerClassLibrary)Activator.GetObject(typeof(DBServerClassLibrary), "tcp://Ptz:8888/DBServerClassLibrary"); if (g_conn.ConnectSQLserver() < 0)
{
MessageBox.Show("连接数据库失败!");
}
else
{
MessageBox.Show("连接数据库成功!");
}
strSQL = "Select*From Client_Info";
DataSet ds = new DataSet();
try
{
ds = g_conn.ExecuteQuery(strSQL, "Client_Info");
if (ds == null)
return;
dgvlogin.DataSource = ds.Tables["Client_Info"]; }
catch (Exception )
{
MessageBox.Show("网络掉线,请重新打开软件!");
}
}
}
}
服务端用Singleston激活时,客户端ds能返回正确的数据集,其他地方不动,改为SingleCall激活则返回Null值!真心求解,这问题困扰我一周了!在此先谢了!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;namespace DBServerClassLibrary
{
public class DBServerClassLibrary : MarshalByRefObject
{
private string strConn;
private string strServer;
private string strDb;
private string strUser;
private string strPsw;
public SqlConnection sqlConn;
public SqlTransaction transaction;
public DBServerClassLibrary()
{
sqlConn = null;
}
~
DBServerClassLibrary()
{
} public int ConnectSQLserver()
{
strConn = "Data Source=ptz;Initial Catalog=water;User ID=sa;Password=water";
sqlConn =new SqlConnection(strConn);
try
{
if (sqlConn.State != ConnectionState.Open)
{
sqlConn.Open();
}
}
catch
{
return -1;
}
return 0;
} public void StartTransaction()
{
transaction = sqlConn.BeginTransaction();
}
public void CommitTransaction()
{
transaction.Commit();
}
public void RollBackTransaction()
{
if (transaction == null)
return;
transaction.Rollback();
} public int Execute(string pszSQL, bool isTransaction)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
}
SqlCommand sqlComm = new SqlCommand(pszSQL, sqlConn);
if (isTransaction)
sqlComm.Transaction = transaction;
sqlComm.ExecuteNonQuery();
}
catch
{
return -1;
} return 0;
} public int Execute(string pszSQL)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
}
SqlCommand sqlComm = new SqlCommand(pszSQL, sqlConn);
sqlComm.ExecuteNonQuery();
}
catch
{
//System.Windows.Forms.MessageBox.Show(sqlEx.Message);
return -1;
} return 0;
}
public DataSet ExecuteQuery(string strSQLquery, string strTable)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
} SqlDataAdapter sqlDa = new SqlDataAdapter(strSQLquery, sqlConn);
DataSet ds = new DataSet(strTable);
sqlDa.Fill(ds, strTable);
return ds;
}
catch
{
// System.Windows.Forms.MessageBox.Show(sqlEx.Message);
return null;
} } public DataSet ExecuteQuery(string strSQLquery, string strTable, bool isTransaction)
{
try
{
if (sqlConn.State != ConnectionState.Open)
{
ConnectSQLserver();
}
SqlCommand sqlComm = new SqlCommand(strSQLquery, sqlConn);
if (isTransaction)
sqlComm.Transaction = transaction;
SqlDataAdapter sqlDa = new SqlDataAdapter();
sqlDa.SelectCommand = sqlComm;
DataSet ds = new DataSet(strTable);
sqlDa.Fill(ds, strTable);
return ds;
}
catch
{
return null;
}
}
服务端代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace DBServerClassLibrary
{
public partial class FmServer : Form
{
public FmServer()
{
InitializeComponent();
} private void FmServer_Load(object sender, EventArgs e)
{
TcpServerChannel channel = new TcpServerChannel(8888);
ChannelServices.RegisterChannel(channel,false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(DBServerClassLibrary), "DBServerClassLibrary", WellKnownObjectMode.SingleCall);
DBServerClassLibrary db = new DBServerClassLibrary();
/*if (db.ConnectSQLserver() < 0)
{
MessageBox.Show("数据库连接失败!");
return;
}*/
}
}
}客户端代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
//using DBServerClassLibrary;
using System.Data.SqlClient;namespace DBServerClassLibrary
{
public partial class FmClient : Form
{
//private DBServerClassLibrary obj;
public FmClient()
{
InitializeComponent();
} private void FmClient_Load(object sender, EventArgs e)
{
string strSQL; DBServerClassLibrary g_conn = new DBServerClassLibrary();
g_conn = (DBServerClassLibrary)Activator.GetObject(typeof(DBServerClassLibrary), "tcp://Ptz:8888/DBServerClassLibrary"); if (g_conn.ConnectSQLserver() < 0)
{
MessageBox.Show("连接数据库失败!");
}
else
{
MessageBox.Show("连接数据库成功!");
}
strSQL = "Select*From Client_Info";
DataSet ds = new DataSet();
try
{
ds = g_conn.ExecuteQuery(strSQL, "Client_Info");
if (ds == null)
return;
dgvlogin.DataSource = ds.Tables["Client_Info"]; }
catch (Exception )
{
MessageBox.Show("网络掉线,请重新打开软件!");
}
}
}
}
服务端用Singleston激活时,客户端ds能返回正确的数据集,其他地方不动,改为SingleCall激活则返回Null值!真心求解,这问题困扰我一周了!在此先谢了!
解决方案 »
- 哪个有Visual Basic 程序开发范例宝典(第2版 )
- MOSS添加Outlook Web Access 的“我的邮箱”webPart到我的页面里面去后,Exchange已实现单点登录。不同用户登录网站邮件地址没变
- SqlDataAdapter事务处理发生问题。。
- 散分了,在vs.net2003 MSDN安装过程中提示没有setup.hlp文件,后搜索东西总是提示"windows正在配置vs.net2003-chs,请稍侯"
- 是bug吗?vs2005 DataGridView的滚动条
- 菜鸟问题,关于connection的
- 想用C#做一个简单的论坛,没有头绪。请求支援!
- 读取64位系统下注册表的问题
- 一个关于winform界面的问题
- namespace
- 如何将Unicode编码转换成ASCII
- 在C#里用什么函数可以实现IplImage结构转化为BMP图片数据?
{
ConnectSQLserver();
}把这个去了就行,每一次都是新建 对象,意味着你每次都要新建连接。不要加判断了,直接连就可以了