如何断开MYSQL数据库连接

如何断开MYSQL数据库连接,第1张

两种常见的断开方式:

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程序如何避免用户同时访问某连接造成的数据错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9679224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存