cc# 关于在vs2010中如何连接数据库SQL SERVER2008的问题
类似于这样一段代码(在vs中创建窗体程序,做一个按钮判断是否连上了数据库),关于连接的问题,我记录如下:
private void button1_Click(object sender, EventArgs e)
{
string SqlStr = “Data Source=WIN-16DM53KENEA\SQLEXPRESS;Intial Catalog=demo1; Integrated Security=True;”;
SqlConnection con = new SqlConnection(SqlStr);
con.Open();
if (con.State == ConnectionState.Open)
MessageBox.Show(“连接成功”);
else
MessageBox.Show(“连接失败”);
}
这么几种写法
1、 string SqlStr = “Data Source=WIN-16DM53KENEA\SQLEXPRESS;Intial Catalog=demo1; Integrated Security=True;”;
解释:直接写机器名,然后打两个斜杠,写上SQLEXPRESS。
这是连接数据库的字符串。
Data Source(数据源)为“机器名\下面的数据库服务器”,EXPRESS是一个SQL的免费版本,亦或是vs自带这样,如果你装的是企业版,就没这挖格,如果你是随便装的,都是默认选项,可能就有,没关系,一开始,咱用的都是小型项目,不影响;\SQLEXPRESS是必须要有两个斜杠的,因为一个\代表转义字符;
Intial Catalog(最开始的目录)为“数据库”,你可以写上你新建的数据库的名字,它跟DataBase没有什么区别,就跟曾用名和现在的名字,是一个概念,都是叫你;
Integrated Security(综合安全设置),可识别的值为 true、false、yes、no 以及与 true 等效的 sspi(强烈推荐)。填上true,表示用当前windows账户凭据进行身份验证;填上false,将在连接中指定用户 ID 和密码;填上SSPI,表示以当前WINDOWS系统用户身去登录SQL SERVER服务器;
这三个部分,只写Data Source=WIN-16DM53KENEA\SQLEXPRESS; Integrated Security=True;也是可以连接数据库的……
2、 string SqlStr = “Data Source=.\SQLEXPRESS;Intial Catalog=demo1; Integrated Security=True;”;
.表示本机的机智写法,多省事啊……
3、 string SqlStr = “Data Source=(local)\SQLEXPRESS;Intial Catalog=demo1; Integrated Security=True;”;
LOCAL,这个单词就是本地的意思,注意要打括号;
4、 string SqlStr = “Data Source=LOCALHOST\SQLEXPRESS;Intial Catalog=demo1; Integrated Security=True;”;
LOCALHOST,等同于(LOCAL),注意不打括号,可以理解为本地服务器,localhost&(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。访问localhost也不会解析成ip,不会占用网卡、网络资源。
以上适用于SQL Server数据库的访问模式为Windows认证的情况。
5、string SqlStr = “Server=127.0.0.1;DataBase=demo1; User ID=sa; Pwd=123456;”;
127.0.0.1在系统的正确解释是:本机地址(本机服务器);127.0.0.1是需要通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制;这就是为什么有时候用localhost可以访问,但用127.0.0.1就不可以的情况。
User ID,用户ID;
适用于SQL Server数据库的访问模式为SQL Server认证的情况。
6、string SqlStr = “Server=192.168.43.156;DataBase=demo1; User ID=sa; Pwd=123456;”;
填写自己的本机IP,也是可以访问的。
另外补充一下数据库默认端口号:
SQL Server 1433
Oracle 1521
MySQL 3306
如果无法访问数据库,检查几个地方:
1、如果local不起作用,试试SQL Server配置管理器中SQL Server网络配置的SQLEXPRESS的协议中,上面三个已启用,Shared Memory,Named Pipes,TCP/IP;
2、如果127.0.0.1不起作用,试试在SQL Server配置管理器中SQL Server网络配置的SQLEXPRESS的协议中,双击TCP/IP,弹出属性框,选到IP地址,下面有一个已启用,把它打开试试。
3、如果localhost不起作用,试试在SQL Native Client10.0配置中新建一个别名。

Attention:所有操作都需要停止,再启动SQL server。
By the way:我不认为先装SQL Server,或者先装vs,会对最后结果有影响,毕竟都是同一家公司出来的产品,兼容性应该是蛮好的,当然也有可能在注册表当中没删干净,导致不能安装等问题,总而言之,现在这一把,我是先装的vs2010,再装Sql Server2008的。
留个爪印,以待后面不记得了的时候,翻一翻。
补充一下:有人之前一直挺好的,突然有一天,SQL SERVER连不上了……
弹出如下框框:
数据库内部都可以正常连接,操作,考虑前阵子正常连接,是突然出现的问题;所以可能是设置出了问题,或者软件冲突。
检查LSP:
系统的 winsock 设置,重置一下
win+r键,输入cmd确定,然后输入重置命令:netsh winsock reset
问题解决……