调试的winform程序总是连接本地数据库失败.erro:40

调试的winform程序总是连接本地数据库失败.erro:40,第1张

首先检查你的用户名,密码,以及连接数据库的各个字符是否都正确。如果你用的是自己的 \SQLEXPRESS这个版本,就要在自己的连接串 server=\SQLEXPRESS,如果不是这个版本,那就可能是sql server的tcp/ip通道处于禁用状态,进sql server配置设置里将这个启动,然后重启服务。应该就没有什么问题了。

string str = "Server=127001;User ID=root;Password=111;Database=student;";

           MySqlConnection con = new MySqlConnection(str);           

           conOpen();        

           string strcmd = "select  from student"; 

           MySqlCommand cmd = new MySqlCommand(strcmd, con);

           MySqlDataAdapter ada = new MySqlDataAdapter(cmd);

           DataSet ds = new DataSet();

           adaFill(ds);

           dataGridView1DataSource = dsTables[0];

dataGridView1DataBind();

            MessageBoxShow("已成功显示", "完成");

           conClose();

private void timer1_Tick(object sender, SystemEventArgs e)

{

try{

//你的代码

}

catch{}

}

因为如果网络断开,是可预知的异常,可以实现做好截获的机制这样程序还能继续运行

不安全,给你两个加密解密函数

/// <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')

调出来结果就是连接字符串了,可以用来连接数据库了

要知道对方的公网IP地址,连接的字符串中IP地址换为对方的公网IP就可以了,当然前提是对方的电脑还要开放1433端口,那个是SQL Server数据库连接的默认端口。

你可以先用telent 21122311 1433 假设对方的IP是21122311,这个是用来测试你能否连接到对方的1433端口上,如果能联入,说明两端的电脑的逻辑连接配置是对的,你程序写好IP就行了,否则要对方配置端口映射、和开启防火墙的配置。

配置好了以后,要重新启动数据库服务。 局域网中还有其他可能,比如,端口封锁,以及一些山寨软件的影响。 自己从细节地方入手调整即可,这不是什么大问题。 如果你实在是搞不定,抽空远程帮你搞定。

以上就是关于调试的winform程序总是连接本地数据库失败.erro:40全部的内容,包括:调试的winform程序总是连接本地数据库失败.erro:40、c#winform连接mysql数据库问题、c# winform网络断开重新连接后连接数据库的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9291060.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存