谢谢大家。我就是接着.net的例子操作的就出这个错, Visual Basic 和 Visual C# 概念   演练:Windows 窗体中的简单数据访问,大家帮我看看啊

解决方案 »

  1.   

    若要完成本演练,您需要: 访问带有 Pubs SQL Server 示例数据库的服务器。 
    演练被分成若干较小的部分: 创建 Windows 窗体。 
    创建并配置将要针对其绑定窗体的数据集。这包括创建一个通过数据库填充数据集的查询。 
    向窗体添加 DataGrid 控件,并将其绑定到数据。 
    添加代码来填充数据集。 
    添加将数据集更改发送回数据库的代码。 
    在完成演练后,将有一个与下面所示类似的窗体。创建项目和窗体
    第一步是创建 Windows 窗体。创建项目和窗体 从“文件”菜单上指向“新建”,然后选择“项目”。 
    在“项目类型”窗格中选择“Visual Basic 项目”或“Visual C# 项目”,然后在“模板”窗格中选择“Windows 应用程序”。 
    如果已经打开了解决方案,请选择“关闭解决方案”。 
    注意 在生产项目中,经常会在同一个解决方案中有多个项目。但是在本演练中,您将关闭任何已打开的解决方案,并与项目一起创建一个新的解决方案,使在此执行的操作与任何现有窗体、数据集等之间不存在任何冲突。
    赋予项目符合所使用的命名规则的唯一名称。例如,可以将此项目命名为 Walkthrough_Simple1。 
    当分配名称并指定新的解决方案后,请单击“确定”。 
    Visual Studio 创建一个新项目,并在 Windows 窗体设计器中显示新窗体。 创建和配置数据集
    与 Windows 窗体应用程序中的大多数数据访问方案一样,您将要用到数据集。数据集是一个保存您想要处理的记录的容器(缓存)。注意 使用数据集只是访问数据的一种方法,它在有些情况下并不是最佳的选择。然而在 Windows 窗体应用程序中,数据集通常是正确的选择,在本演练中就将使用一个数据集。有关更多信息,请参阅数据访问策略建议。
    在本演练中,您将向窗体添加数据集。不过,并不因为该数据集尚不存在,您就手动向窗体添加该数据集。相反,您将执行下列一组步骤: 使用向导创建数据适配器。该适配器包含用于读取和写入数据库信息的 SQL 语句。该向导帮助您定义所需的 SQL 语句。如有必要,该向导还创建与数据库的连接。 
    生成数据集架构。在此过程中,您将让 Visual Studio 基于您正在访问的表和列创建一个新的类型化数据集类。在生成数据集类时,您还将向窗体中添加该类的一个实例。 
    遵循本节中的所有过程很重要。否则,窗体将不具有在本演练的随后部分中将使用的数据集。有关数据适配器的更多信息,请参阅数据适配器介绍。有关数据集的更多信息,请参阅数据集介绍。
      

  2.   


    配置数据连接和数据适配器
    若要开始,请创建一个包含稍后用于填充数据集的 SQL 语句的数据适配器。作为此过程的一部分,定义连接以访问数据库。使用向导配置数据适配器,该向导使创建数据访问所需的 SQL 语句变得容易。 注意 向导完成后,您必须继续下一部分操作,以便生成数据集并完成窗体的数据访问部分。
    创建数据连接和数据适配器 从“工具箱”的“数据”选项卡中,将 OleDbDataAdapter 对象拖到窗体上。 
    注意 您还可以使用 SqlDataAdapter,它为用于 SQL Server 7.0 或更高版本进行了优化。在本演练中使用 OleDbDataAdapter,因为它更通用,可以提供对任何与 OLE DB 兼容的数据源的 ADO.NET 访问。
    “数据适配器配置向导”启动,它将帮助您创建连接和适配器。 在该向导中,执行下列操作: 
    在第二个窗格中,创建或选择一个指向 SQL Server Pubs 数据库的连接。 
    在第三个窗格中,指定您要使用 SQL 语句来访问数据库。 
    在第四个窗格中创建以下 SQL 语句: 
    SELECT au_id, au_lname, au_fname, city, state, phone, contract
    FROM authors
    为了便于生成 SQL 语句,请单击“查询生成器”以启动“查询生成器”。 注意 在本演练中,将用 authors 表中的所有行填充该数据集。在生产应用程序中,通常通过创建只返回所需列和行的查询来优化数据访问。有关示例,请参阅演练:使用参数化查询在 Windows 窗体中显示数据。
    向导创建一个连接 (OleDbConnection1),它包含有关如何访问数据库的信息。您还将具有包含一个查询的数据适配器 (OleDbDataAdapter1),该查询定义您要访问的数据库中的表和列。 向导完成后,基于在该过程中创建的 SQL 查询生成数据集。有关更多信息,请参阅下一节。 
    创建数据集
    建立连接到数据库的方法并指定所需的信息(通过数据适配器中的 SQL 命令)后,可以让 Visual Studio 创建数据集。Visual Studio 可以基于您为数据适配器指定的查询自动生成数据集。数据集是基于相应 XML 架构(.xsd 文件)的 DataSet 类的实例,该架构描述类的元素(表、列和约束)。有关数据集与架构之间关系的更多信息,请参阅 ADO.NET 数据访问介绍。生成数据集 从“数据”菜单中选择“生成数据集”。 
    提示 如果看不到“数据”菜单,请在窗体中单击;该窗体必须具有焦点,该菜单才会出现。
    显示“生成数据集”对话框。 选择“新建”选项,将数据集命名为 dsAuthors。 
    在“选择要添加到数据集中的表”下面的列表中,应选择“authors”表。 确保“将此数据集添加到设计器”已选中,然后单击“确定”。 
    Visual Studio 生成某类型化数据集类 (dsAuthors) 和定义该数据集的架构。您将在“解决方案资源管理器”中看到新架构 (dsAuthors.xsd)。 提示 在“解决方案资源管理器”中,单击“显示所有文件”以查看架构文件的相关 .vb 或 .cs 文件,该文件包含定义新数据集类的代码。
    最后,Visual Studio 将新数据集类的一个实例 (dsAuthors1) 添加到窗体中。 此时,已完成为从数据库中获取信息并将信息转移到数据集所需的全部设置。准备创建一个显示数据的窗体。添加显示数据的 DataGrid 控件
    在本演练中,您将添加一个控件(即 DataGrid 控件),它可以同时显示数据集内的所有记录。另一个方法是使用文本框等单个控件一次显示一个记录。该策略随后会要求您向窗体添加导航功能。因此,为了简便起见,应将使用数据网格。注意 有关如何使用单个文本框显示数据集的记录的示例,请参阅演练:使用参数化查询在 Windows 窗体中显示数据。
    数据网格必须绑定到数据集才能显示数据。 向窗体添加绑定 DataGrid 控件 如果尚未这样做,请单击当前窗口顶部的选项卡以切换到窗体设计器。 
    从“工具箱”的“Windows 窗体”选项卡中,将 DataGrid 控件拖到窗体上。 
    按 F4 键以显示“属性”窗口。 
    在 DataSource 属性中,选择“DsAuthors1”作为数据源。(请勿选择“DsAuthors1.Authors”。) 
    在 DataMember 属性中选择“authors”。 
    设置这两个属性会将 DsAuthors1 数据集内的 authors 数据表绑定到网格。 调整网格的大小,以便可以看到所有列。更改其高度,以便能够看到多个作者记录。 
    填充 DataGrid 控件
    尽管数据网格被绑定到所创建的数据集,但是,数据集本身不会被自动填写。相反,您必须自己调用数据适配器方法来填充数据集。有关填充数据集的更多信息,请参阅数据集介绍。填充 DataGrid 控件 从“工具箱”的“Windows 窗体”选项卡中,将 Button 控件拖到窗体上。 
    将该按钮命名为 btnLoad,通过设置其 Text 属性将标题更改为 Load。 
    双击该按钮以创建其 Click 事件的事件处理方法。 
    在该方法中,清除所创建的数据集,然后调用数据适配器的 Fill 方法,向该方法传递要填充的数据集。 
    下面的示例显示完整的方法: ' Visual Basic
    Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
       DsAuthors1.Clear()
       OleDbDataAdapter1.Fill(DsAuthors1)
    End Sub// C#
    private void btnLoad_Click(object sender, System.EventArgs e)
    {
       dsAuthors1.Clear();
       oleDbDataAdapter1.Fill(dsAuthors1);
    }
    更新数据库
    当用户在网格进行更改后,控件自动在数据集内保存更新的记录。在 Windows 窗体中,数据绑定结构将数据绑定控件的值写入这些控件所绑定到的数据行。 注意 在 Web 窗体页中,数据绑定的工作方式略有不同。有关 Web 窗体页中数据绑定的逐步骤示例,请参阅演练:在 Web 窗体页中显示数据和演练:在 Web 窗体中使用数据库更新查询更新数据。
    但是,当使用数据集时,更新需要两个步骤。当数据在数据集内后,您仍必须将其从数据集发送到数据库。数据适配器可通过其 Update 方法完成此操作,该方法检查数据集内所指定数据表中的每个记录,如果某记录已更改,则向数据库发送相应的“更新”(Update)、“插入”(Insert) 或“删除”(Delete) 命令。有关更多信息,请参阅数据集更新介绍。在本演练中,将向窗体添加一个按钮,当用户想将其更新发送到数据库时,可以按该按钮。更新数据库 从“工具箱”的“Windows 窗体”选项卡中,将 Button 控件拖到窗体上。 
    将该按钮命名为 btnUpdate,通过设置其 Text 属性将标题更改为 Save Changes in Database(在数据库中保存更改)。 
    双击该按钮以创建其 Click 事件的事件处理方法。 
    在该方法中调用数据适配器的 Update 方法,向该方法传递数据集,该数据集包含要发送到数据库中的更新。使用“消息框”(MessageBox) 对象显示确认文本。 
    下面的示例显示完整的方法: ' Visual Basic
    Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
       OleDbDataAdapter1.Update(DsAuthors1)
       MessageBox.Show("Database updated!")
    End Sub// C#
    private void btnUpdate_Click(object sender, System.EventArgs e)
    {
       oleDbDataAdapter1.Update(dsAuthors1);
       MessageBox.Show("Database updated!");
    }
    测试
    现在可以测试该窗体,以确保它在网格中显示作者数据,并且用户可以进行更新。测试窗体 按 F5 键运行该窗体。 
    在窗体显示后,单击“加载”按钮。 
    在网格中显示一个作者列表。 对网格中的一个记录进行更改。 
    在移动到网格中的另一个记录时,所做更改将保留。请在心中记住所做更改。 再次单击“加载”按钮。 
    这将从数据库重新加载该数据集并刷新网格。注意,因为未将更改从数据集保存到数据库,所以您在第 3 步中所做的更改未被保留。 再次对网格中的一个记录进行更改。 
    单击“保存数据库中的更改”按钮。 
    将看到显示消息框,但网格中没有任何更改。 
      

  3.   

    未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll //
    你在处理数据库操作时出错了,具体信息要看你的Code
      

  4.   

    oleDbDataAdapter1.Fill(dsAuthors1);就这句出错的
      

  5.   

    报sql语句中表名加上方括号[]
    例如:select * from [tablename]
      

  6.   

    极可能是SQL语句有错,建议把SQL复制到查询分析器中试试,调试正常后再写入C#中。
      

  7.   

    你可以把操作数据库的SQL语句帖出来看看。
      

  8.   

    楼主这个教程是在哪里得到的呀。我也是通过这样做的,但是是自己摸索出来的。。而且没有那么多button,你把oleDbDataAdapter1.Fill(dsAuthors1);改成oleDbDataAdapter1.Fill(dsAuthors1 ,"authors");试一试吧~~