VS2005 C#连接一个SQL SERVER数据库,程序运行报错 无法建立数据连接:实例失败。这是我照书编写的第一个程序,卡壳4天了,求各位帮帮我,不胜感激!

suanlidanzi 2009-06-19 08:41:31
奇怪的是我的程序在别人的电脑里运行没问题,可到我这就报错,点击登陆界面的前三个按钮想跳到其他三个界面,都报这样的错误。第四个按钮能跳转到另一个界面,我的第四个界面是用报表实现的,我的app.configure
<connectionStrings>
<add name="Explore700Store.Properties.Settings.Explore700StoreConnectionString"
connectionString="Data Source=.\\SQLEXPRESS;Initial Catalog=Explore700Store;Integrated Security=True;
AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA;" providerName="System.Data.SqlClient" />
</connectionStrings>
第一个界面(登陆界面)的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
protected SqlConnection conn;
protected SqlCommand cmd;
protected Explore700StoreDataSetTableAdapters.Explore700TableAdapter adapter;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Explore700Form frm1=new Explore700Form();
frm1.Show();
this.Visible = false;
}

private void button2_Click(object sender, EventArgs e)
{
CustomerForm frm1 = new CustomerForm();
frm1.Show();
this.Visible = false;
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button3_Click(object sender, EventArgs e)
{
SellForm frm1 = new SellForm();
frm1.Show();
this.Visible = false;
}

private void button4_Click(object sender, EventArgs e)
{
ReportForm frm1 = new ReportForm();
frm1.Show();
this.Visible = false;
}
}
}
第二个界面的部分代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;


namespace WindowsApplication1
{
public partial class CustomerForm : Form
{
protected SqlConnection conn;
protected SqlCommand cmd;
public CustomerForm()
{
InitializeComponent();
}

private void CustomerForm_Load(object sender, EventArgs e)
{
try
{
SqlConnectionStringBuilder sb1=new SqlConnectionStringBuilder ();
sb1 .DataSource ="(Local)";
sb1 .InitialCatalog ="Explore700Store";
sb1 .IntegratedSecurity =true ;
conn = new SqlConnection(sb1 .ConnectionString);
cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
this.InitData();
}
catch (Exception exp)
{
MessageBox.Show("无法建立数据连接:" + exp.Message);
this.Close();
}

}
...全文
982 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenzaohui 2009-12-07
  • 打赏
  • 举报
回复
单步调试!!
suanlidanzi 2009-07-01
  • 打赏
  • 举报
回复
非常感谢您这么详细的给我讲解,因为我是菜鸟,2楼的我根本听不懂,我还是喜欢你给我解释的 给我很多启发 再次感谢!真的希望您以后还能给我指点迷津 嘿嘿 不胜感激!!!
xzheng523 2009-06-25
  • 打赏
  • 举报
回复
其实2楼周公的比较详细,我只是概括一下哈,个人感觉这个问题主要就是:AttachDbFilename的属性有问题,应该具体到某个文件,如:AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Explore700Store.mdf,你的是AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA
xzheng523 2009-06-25
  • 打赏
  • 举报
回复
应该还是你的数据库连接字符串有点问题,连接connectionString="Data Source=.\\SQLEXPRESS;Initial Catalog=Explore700Store;Integrated Security=True;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA;"

可能一:你的Data Source名字有问题,因为VS2005自带一个SQL Server2005 Express版,它的数据源名字一般是.\\SQLEXPRESS这样的,而你如果自己安装了SQL Server2005的话,数据源一般是DataSource=.就行了。至于你说的那个企业管理器,其实就是数据库的可视化管理工具,可以有一个登陆框登录到数据库,你观察一下你的登陆框里面数据源的名称,用.\\SQLEXPRESS作为服务器名,看通过Windows方式登录,能否登陆进去。如果行的话,数据源设定是没有问题的。

可能二:你的数据库存不存在,具体说就是你建立的那个库:Explore700Store,在不在SQL Server2005 Express里,如果没有,你就得把那个数据附加上(你照着书敲得,应该有数据文件)。

可能三:就是数据库的存放路径问题,就是我第三个地方红色地方标记的,看看你的路径是否一致。

另外:Sql Server Express版的一般是为了方便用户学习测试,甚至前期的开发的方便,绑定在VS2005里,它能拥有SQL Server2005其他版(如个人版,企业版)的大部分功能,能应付一般的开发。企业版的话,就是用于实际的项目中,性能上好一些,功能更强大一些,一般个人学习的话,电脑配置一般的话,用Express版的就可以了。

呵呵,我的一点愚见,祝顺利!
zengxin2008 2009-06-25
  • 打赏
  • 举报
回复
装好VS2005后,你到网上下载一个SQL2005插件安装,那个SQL2005 就可以用了
ppyyhh 2009-06-23
  • 打赏
  • 举报
回复
请你先搞明白,你要连接的数据库是不是已经存在。如果没有的话,你连哪儿啊?
suanlidanzi 2009-06-22
  • 打赏
  • 举报
回复
问题补充:我安装了VS2005,里边自带了一个SQL SERVER ,但是没有企业管理器 ,我就又在网上下载了一个企业管理器 ,但是没有装SQL SERVER ,会不会问题出在这啊?我是不是需要装一个SQL SERVER 啊?
周公 2009-06-20
  • 打赏
  • 举报
回复
asp.net夜话之七:ADO.NET介绍收藏



Asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。
以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。
我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。在这里数据库就是顶级对象,我们引用创建数据库时所用到的名词database来表示(因为创建数据库的SQL语句是create database),在一个数据库里可以包含有多个表(table)和视图(view),除此之外还可以包含有一些外键关系等。在一个表(table)或者视图(view)里可以包含多个列(column)和行(row)。
在ADO.NET中对上面提到的对象都在内存中进行了模拟,在内存中的数据库对象称之为DataSet,一个内存中的数据库(DataSet)可以包含多个在内存中的表(DataTable)和内存中的视图(DataView),并且也允许在表存在一些关系(DataRelation)。同时在一个内存中的表(DataTable)或者内存中的视图(DataView)中也允许存在行(DataRow)和列(DataColumn)。
物理数据库与内存数据库之间的各对象的对应关系如下:

在上图中颜色相同的表示二者基本上是一种对应关系。

在本篇将讲述6个ADO.NET中的常用对象:
Connection对象
Command对象
DataReader对象
DataAdapter对象
DataSet对象
DataTable对象
DataRow对象
DataColumn对象
参数化SQL语句
分页查询SQL语句

严格地说,在.net类库中并没有Connection、Command、DataAdapter和DataReader对象的,这是对相关的对象做了一个抽象。在实际的开发中,我们经常用到的数据库有Access、SQL Server、Oracle、MySQL等,尽管大部分都遵循SQL国际化标准,但是它们在遵循标准的前提下又做了一些扩充,并且即使遵循了相同的标准,但是实现方法并不相同,所以在某些情况下实现相同的功能可能在不同的数据库中SQL语句并不相同。
于是,在ADO.NET也定义了一套用于访问数据库的标准,当然这个标准是以接口(interface)的形式提供的,各数据库厂商只要实现了这个接口就能在ADO.NET下正常工作(这也是接口的作用,接口就是用于指定规范,自己本身并不实现,在Java中针对数据库访问也有一套接口留待各数据库来实现)。当然在.net类库中微软已经提供对Access、SQL Server和Oracle数据库对上面提到的接口的实现。
在ADO.NET中定义的这一套接口是IDbConnection、IDbCommand、IDbDataAdapter和IDataReader,并且还有一套实现这些接口的抽象类,分别是DbConnection、DbCommand、DbDataAdapter和DataReader。

上图最上面的是数据库访问接口,紧接着的是数据库访问抽象类,下面是针对不同数据库中实现这些接口的类,并且在括号中注明了其所在的命名空间,比如针对MySQL数据的数据库访问类就位于MySql.Data.MySqlClient命名空间下,关于MySql的数据库访问类需要到MySql数据库的官方网站去下载,它的官方网站是http://www.mysql.com。其它的数据库访问类都在.net类库中自带了。
注意:访问SQL Server7.0以下版本的SQL Server数据库时需要用System.Data.OleDb命名空间下一套数据库访问类,虽然这一套数据库访问类同样也能访问SQL Server2000以上版本,但是没有办法利用SQL Server数据库的一些新特性,所以不建议使用System.Data.OleDb命名空间下的类访问SQL Server2000以上的版本。
在本篇的讲述中,针对SQL Server数据库讲述Connection、Command、DataAdapter和DataReader对象的用法,它们在其它数据库中也有对应的类,除了有些SQL语句语法不一样之外,用法是基本一样的。

Connection对象
Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类。
Connection对象有两个重要属性:
ConnectionString:表示用于打开 SQL Server 数据库的字符串;
State:表示 Connection 的状态,有Closed和Open两种状态。
Connection对象有两个重要方法:
Open()方法:指示打开数据库;
Close()方法:指示关闭数据库。
在实际开发中很多朋友经常询问数据库连接字符串该怎么写,其实有一个很简单的技巧,我们可以在Visual Studio 2005工具箱中找到数据分组,如下图:

打开或新建一个asp.net页面,在设计视图下双击SqlDataSource控件就会添加一个SqlDataSource到当前页面,如下图:

当我们用鼠标单击SqlDataSouce控件时会出现一个小三角箭头,如上图所示,当我们点击这个三角箭头时会出现如下图所示的界面:

点击“配置数据源”时会出现下面的界面:

点“新建连接”后出现如下界面:

在这个界面中默认是连接到SQL Server数据库,其实我们还可以利用这个向导连接到其它数据库的,我们点击“数据源”旁边的“更改”按钮出现如下图所示的界面:

从上面的界面中我们可以看出可以利用这个连接向导配置连接到Access数据库文件、ODBC数据源、SQL Server数据库、SQL Server手机版数据库、SQL Server数据库文件、Oracle数据库文件及其它数据库。
在这里我们选择Microsoft SQL Server选项,连接到SQL Server数据库。如果我们在局域网中,我们可以点击“添加连接”界面中的刷新按钮来查看局域网中有哪些SQL Server数据库可以连接。连接到数据库可以用下面的方式:
(1)如果要连接的数据库服务器与开发者的机器在同一个局域网里,可以使用局域网IP地址或者局域网中的电脑主机名;
(2)如果要连接的数据库服务器与开发者的机器不在同一个局域网内,那么就要求数据库服务器必须有一个公网IP,我们可以使用公网IP来连接,如果数据库服务器还有互联网域名,那么用互联网域名也是可以的。
(3)如果要连接的数据库服务器与开发者所使用的机器是同一台机器,那么可以使用以下几种方式之一:”(local)”或者”.”或者”127.0.0.1”。
需要注意的是,如果在一台机器上运行者同一种数据库的不同版本,比如说在”zhoufoxcn”这台主机上同时运行着SQL 2000、SQL 2005和SQL Express三种版本,并且它们所使用的Windows服务名分别为”SQL2000”、”SQL2005”和”SQLExpress”,那么我们要连接到SQL 2000这个数据库上所使用的服务器名就应该填写”zhoufoxcn\SQL2000”这种“主机名\实例名”的方式或者“主机IP\实例名”,这种情况在同时安装了Visual Studio 2005和SQL 2005的朋友那里很常见,因为SQL Express是针对学生的功能有限的免费版本,这个版本的数据库在安装Visual Studio 2005时默认是一同安装的。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhoufoxcn/archive/2008/10/13/3066799.aspx
周公 2009-06-20
  • 打赏
  • 举报
回复
asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
chen20040403 2009-06-20
  • 打赏
  • 举报
回复
Data Source=.\\SQLEXPRESS;database=;Integrated Security="

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧