
首先检查你的用户名,密码,以及连接数据库的各个字符是否都正确。如果你用的是自己的 \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网络断开重新连接后连接数据库的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)