两种常见的断开方式:
1 根据数据库连接字符串设置链接生命周期 会自行断开
2 拿,net环境举例 MySQLDataMySqlClient类库下的 MySqlConnection类 下面有个方法 叫 Close() 即可断开连接;
访问MySqlConnection类下的 Statu (只读的)字段 可以获得当前连接状态
提示 断开后的连接 可以随时 根据需要打开
打开就是调用open方法,关闭就是调用close方法,例如
首先建立连接
sqlconnection conn =new sqlconnection();
然后打开连接
connopen();
中间就是你处理的事情的代码,处理完后看
最后就是关闭连接
connclose();
至于好处就是:
因为如果你没关闭的话,可能打开的多了,数据库连接就满了或者打开的多了速度变慢 。
楼主你可以考虑MYSQL的事务处理功能。
一般来说,事务是必须满足4个条件(ACID)
原子性(Autmic):事务在执行性,要做到“要么不做,要么全做!”,就是说不允许事务部分得执行。即使因为故障而使事务不能完成,在rollback时也要消除对数据库得影响!
一致性(Consistency):事务得 *** 作应该使使数据库从一个一致状态转变倒另一个一致得状态!就拿网上购物来说吧,你只有即让商品出库,又让商品进入顾客得购物篮才能构成事务!
隔离性(Isolation):如果多个事务并发执行,应象各个事务独立执行一样!
持久性(Durability):一个成功执行得事务对数据库得作用是持久得,即使数据库应故障出错,也应该能够恢复!
说白了就是某一个用户进行兑换 *** 作的时候,就把对应的数据表锁定死,只有等 *** 作完成后才解锁。
不安全,给你两个加密解密函数
/// <summary>
/// DES加密,密钥为8位字符
/// </summary>
/// <param name="strEncrypt">需要加密的字符串</param>
/// <param name="strKey">8位的密钥</param>
/// <returns></returns>
public static string DesEncrypt(string strEncrypt, string strKey)
{
if (stringIsNullOrEmpty(strEncrypt)) return null;
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = EncodingDefaultGetBytes(strEncrypt);
desKey = ASCIIEncodingASCIIGetBytes(strKey);
desIV = ASCIIEncodingASCIIGetBytes(strKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desCreateEncryptor(), CryptoStreamModeWrite);
csWrite(inputByteArray, 0, inputByteArrayLength);
csFlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in msToArray())
{
retAppendFormat("{0:X2}", b);
}
retToString();
return retToString();
}
catch
{
return null;
}
}
/// <summary>
/// DES解密,密钥为8为字符
/// </summary>
/// <param name="strDecrypt">需要加密的字符串</param>
/// <param name="strKey">8位的密钥</param>
/// <returns></returns>
public static string DesDecrypt(string strDecrypt, string strKey)
{
if (stringIsNullOrEmpty(strDecrypt)) return null;
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[strDecryptLength / 2];
for (int x = 0; x < strDecryptLength / 2; x++)
{
int i = (ConvertToInt32(strDecryptSubstring(x 2, 2), 16));
inputByteArray[x] = (byte)i;
}
desKey = ASCIIEncodingASCIIGetBytes(strKey);
desIV = ASCIIEncodingASCIIGetBytes(strKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, desCreateDecryptor(), CryptoStreamModeWrite);
csWrite(inputByteArray, 0, inputByteArrayLength);
csFlushFinalBlock();
return SystemTextEncodingDefaultGetString(msToArray());
}
catch
{
return null;
}
}
}
使用方法,先把连接字符串加密
string strConnEnc = DesEncrypt(strConn,'abcd1234');
然后 strConnEnc 就是加密过的了,可以写在配置文件webconfig里头或别的地方
使用的时候
DesDecrypt(strConnEnc,'abcd1234')
调出来结果就是连接字符串了,可以用来连接数据库了
在C#中没有其他的托管语言,没有自动的,决定性的析构的概念,而是有一个垃圾收集器,它会在未来的上时刻释放资源,所以当忘记关闭数据库连接可能传导致NET可执行程序的各种问题。解决的方法是原来在创建Sqlconnection时使用Using (sqlconection conn=new sqlconnection(strSQL))使用using语句,定义一个范围,在范围结束时处理对象。(不过该对象必须实现了IDisposable接口)。其功能和try ,catch,Finally完全相同。using (SqlConnection cn = new SqlConnection(SqlConnectionString)){……}//数据库连接using (SqlDataReader dr = dbGetDataReader(sql)){……}//DataReaderconnopen();
桥接,需要在控制面班-〉管理工具-〉odbc数据源中进行配置。
直连就是在类中直接用url的方式指定驱动器和数据源,不用上面的手工配置步骤,直接 *** 作数据库,当然直连要方便得多。
以上就是关于如何断开MYSQL数据库连接全部的内容,包括:如何断开MYSQL数据库连接、如何打开和关闭数据库连接显示打开和关闭数据库连接有什么好处、php程序如何避免用户同时访问某连接造成的数据错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)