关于数据连接的问题

builderman 2004-03-22 11:56:24
我怎么去做一个全局的Connection.
像Delphi一样,可以把Connection放在数据模块中,再让其它在主窗口启去之前运行就可以啦.
还有,VB.NET中好像也有全局变量的概念.
在C#中怎么做呢.
...全文
41 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
builderman 2004-03-27
  • 打赏
  • 举报
回复
楼上的,难道就不考虑濒繁连接数据库所用的时间了的吗?
showtimenow 2004-03-22
  • 打赏
  • 举报
回复
不应该这样,这样会浪费数据库资源
应该是当你的程序要读取或写入数据时,把数据库打开。
然后就马上关闭
builderman 2004-03-22
  • 打赏
  • 举报
回复
那我在什么时候打开这个Connection,
什么时候断开这个Connection呢.
我想应该是在程序运行的时候就打开,在最后程序退出的时候才Close;
但具体怎么实现我还不是很明白.
还请指教.谢谢
lzyang 2004-03-22
  • 打赏
  • 举报
回复
将连接字符串配置在Config 文件中,写一个公用类在系统程序启动时把值读出来,保存在全局变量中
superryu 2004-03-22
  • 打赏
  • 举报
回复
在一个类里定义一个公共的静态变量即可,可以用这个类存放所有的全局变量
wuyi8808 2004-03-22
  • 打赏
  • 举报
回复
class PubVar
{
public static string strConn = "...";
}

class MyClass
{
void MyProc
{
// ...
SqlConnection conn = new SqlConnection(PubVar.strConn);
// ...
}
}
hychieftain 2004-03-22
  • 打赏
  • 举报
回复
C#全局变量 public static string strConn;
marvelstack 2004-03-22
  • 打赏
  • 举报
回复
现在是ado.net,要用的时候打开,用完了可马上关闭。
可以生成DataSet,填充完数据后就可以关闭了,这就是所谓的断开式连接。
using System;
using System.Data;
using System.Data.OleDb;

namespace ZZ.DAL
{
/// <summary>
/// AccessDbHelper 的摘要说明。
/// </summary>
public class AccessDbHelper
{
private static string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GMS.mdb;Persist Security Info=False;";

/// <summary>
/// 获取单个值
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public static object ExecuteScalar(string strSql)
{
object o = null;
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
try
{
myConn.Open();
o = myComm.ExecuteScalar();
}
catch(Exception e)
{
e.ToString();
}
finally
{
myConn.Close();
}
return o;
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="strSql"></param>
public static int ExecuteNonQuery(string strSql)
{
int count = -1;
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
try
{
myConn.Open();
count = myComm.ExecuteNonQuery();
}
catch(Exception e)
{
e.ToString();
}
finally
{
myConn.Close();
}
return count;
}
/// <summary>
/// 获取数据读取器
/// </summary>
/// <param name="strSql"></param>
public static OleDbDataReader ExecuteReader(string strSql)
{
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
myConn.Open();
return myComm.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 获取数据集
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public static DataSet ExecuteDataSet(string strSql)
{
DataSet ds = new DataSet();
OleDbConnection myConn = new OleDbConnection(strConn);
try
{
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
OleDbDataAdapter myAda = new OleDbDataAdapter(myComm);
myAda.Fill(ds,"TableName");
}
catch(Exception e)
{
e.ToString();
ds = null;
}
finally
{
myConn.Close();
}
return ds;
}
}
}

t0h 2004-03-22
  • 打赏
  • 举报
回复
public class mySql ()
{
private mySql(){}
static 连接数据库
static 数据操作
static 关闭数据库
....
}

public class someClassUsingSql
{
mySql.连接数据库
mySql. 数据操作
....
mySql.关闭数据库
}
builderman 2004-03-22
  • 打赏
  • 举报
回复
但以前我们用别的语言写的时候不是这样的啊.
都是程序一开始运行就连上数据库.

能帮忙说说这两种方法的利与弊吗?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧