关于c#程序在别的电脑上运行的问题 c#数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、首先确保连接字符串正确2、设置sql服务器允许远程访问 你在另外一台机器上,用odbc连数据库,看是否能连的上?如果连不上,确认一下:1、sql server是否设置成运行远程连接2、sql server服务器的防火墙是否开着(如果开着,关掉) 你在另外一台机器上,用odbc连数据库,看是否能连的上?如果连不上,确认一下:1、sql server是否设置成允许远程连接2、sql server服务器的防火墙是否开着(如果开着,关掉) 如果你仅仅是做一个客户端程序,建议使用LocalDB代替SQL Server,它的运行时很小,分发和配置也简单。也可以用Access SQLite SqlCE等等。 你做一个界面,在客户端连接不上的时候可以随时配置,把连接保存在配置文件里面, if (this.txtDBName.Text.Trim() != "" && this.txtLoginUser.Text.Trim() != "" && this.txtServerName.Text.Trim() != "" && this.txtUserPwd.Text.Trim() != "") { string values = "server=" + this.txtServerName.Text.Trim() + "; DataBase=" + this.txtDBName.Text.Trim() + "; Persist Security Info=True;uid=" + this.txtLoginUser.Text.Trim() + ";pwd=" + this.txtUserPwd.Text.Trim() + ""; if (MessageBox.Show("确定保存数据库配置吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { // 保存 Applicationi 范围的设置 string configFileName = Application.ExecutablePath + ".config"; System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.Load(configFileName); string configString = @"configuration/applicationSettings/exe.Properties.Settings/setting[@name='AppConnection']/value"; System.Xml.XmlNode configNode = doc.SelectSingleNode(configString); if (configNode != null) { configNode.InnerText = DES.DESEncrypt(values, "XXXWWWYY"); doc.Save(configFileName); // 刷新应用程序设置,这样下次读取时才能读到最新的值。 Properties.Settings.Default.Reload(); MessageText = "数据库配置保存成功,请重新运行!"; MessageBox.Show(MessageText, "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //this.Dispose(); //Application.Exit(); } else { MessageText = "数据库配置失败!"; MessageBox.Show(MessageText, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); } } this.Dispose(); Application.Exit(); } else { MessageBox.Show("请将信息输入完整。"); } } 用的是sql,而且我已经开启远程服务了,可以在通过iP在本机上访问,我现在怀疑是,打包的时候,是不是有些查件没有打包进去。程序的功能一遇到访问数据库的时候就无法访问,其他的功能都可以实现。谁有过程序打包经验的,希望给点意见 1、你先搞清楚,客户端能不能连数据库服务器。拿odbc试下,实在不行,你在客户端装一个sql server,看能够通过ip访问数据库服务器不能。数据库访问的接口,都是.net framework封装好的,只要客户端安装的framework框架,都是可以访问数据库的,你打包不涉及打不打访问数据库的东东。你可以写一个简单的访问程序,就做一件事事情,执行select * from username,查询你数据库的某张表,看能否访问。2、打包的工具,很多visual studio本身可以打包,另外可以使用nsis、installshield等 程序打包和远程访问SQL可没有什么必然的联系哦!!除非你是用插件!!建议你还是从网络方面入手吧,首先检查下对方的电脑能不能ping通数据库所在电脑的IP,如果ping的通,就检查下你SQL是否允许远程访问。再不行就检查下对方的防火墙,这一点是比较坑的地方,如果对方防火墙开启,但你装的程序却没有被例外的话,也会出现这种问题!!可能还有我没想到的,想到了再和你说!! 你的这个IP是局域网IP还是外网IP? 问一个无限级TreeView 问题 高手进,隐藏外部程序中文本框的内容,显示一不断变化新内容 简单工厂模式?类的设计?迷惑! 记录键盘输入 求高手!!如何导出网页的表格控件里面的数据? 如何在C#窗体代码中添加控件? 关于导出excel 构造函数起什么作用,可以带参数吗? 求一个方法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 请教各位前辈国外有什么比较好的Web Service论坛?或者.NET相关的都行。 winCE 下如何获取datagrid 加载数据总条数 求助。for循环与if判断
2、设置sql服务器允许远程访问
如果连不上,确认一下:
1、sql server是否设置成运行远程连接
2、sql server服务器的防火墙是否开着(如果开着,关掉)
如果连不上,确认一下:
1、sql server是否设置成允许远程连接
2、sql server服务器的防火墙是否开着(如果开着,关掉)
{
string values = "server=" + this.txtServerName.Text.Trim() + "; DataBase=" + this.txtDBName.Text.Trim() + "; Persist Security Info=True;uid=" + this.txtLoginUser.Text.Trim() + ";pwd=" + this.txtUserPwd.Text.Trim() + ""; if (MessageBox.Show("确定保存数据库配置吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
// 保存 Applicationi 范围的设置
string configFileName = Application.ExecutablePath + ".config";
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(configFileName);
string configString = @"configuration/applicationSettings/exe.Properties.Settings/setting[@name='AppConnection']/value";
System.Xml.XmlNode configNode = doc.SelectSingleNode(configString);
if (configNode != null)
{
configNode.InnerText = DES.DESEncrypt(values, "XXXWWWYY");
doc.Save(configFileName);
// 刷新应用程序设置,这样下次读取时才能读到最新的值。
Properties.Settings.Default.Reload();
MessageText = "数据库配置保存成功,请重新运行!";
MessageBox.Show(MessageText, "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//this.Dispose();
//Application.Exit();
}
else
{
MessageText = "数据库配置失败!";
MessageBox.Show(MessageText, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
this.Dispose();
Application.Exit();
}
else
{
MessageBox.Show("请将信息输入完整。");
}
}
visual studio本身可以打包,另外可以使用nsis、installshield等
除非你是用插件!!
建议你还是从网络方面入手吧,首先检查下对方的电脑能不能ping通数据库所在电脑的IP,如果ping的通,就检查下你SQL是否允许远程访问。
再不行就检查下对方的防火墙,这一点是比较坑的地方,如果对方防火墙开启,但你装的程序却没有被例外的话,也会出现这种问题!!
可能还有我没想到的,想到了再和你说!!