收藏 分享(赏)

.net与数据操作.ppt

上传人:无敌 文档编号:1369838 上传时间:2018-07-05 格式:PPT 页数:67 大小:15.06MB
下载 相关 举报
.net与数据操作.ppt_第1页
第1页 / 共67页
.net与数据操作.ppt_第2页
第2页 / 共67页
.net与数据操作.ppt_第3页
第3页 / 共67页
.net与数据操作.ppt_第4页
第4页 / 共67页
.net与数据操作.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、ADO.NET与数据操作,1.1 ADO.NET简介1.2 数据库与数据库访问工具1.3 ADO.NET数据访问对象1.4 数据绑定技术1.5 DataGridView控件1.6 数据处理1.7存储过程,1.1 ADO.NET简介,ADO.NET是在ADO(ActiveX Data Objects)基础上发展的新一代数据存取技术,是微软.NET平台下提出的新的数据访问模型。ADO.NET设计了一系列对各类数据的访问形式,并提供了对应的类,类中提供了与对应数据交互的属性和方法,我们可以通过这些属性和方法对各种数据进行存取操作。,数据访问操作的发展,采用ODBC(开发式数据互连)数据访问形式。这种

2、访问方式的前提是,只要公司提供某个数据库的数据驱动程序,就可以在程序中对这个数据库操作。但是这种方式只能对结构化数据操作,对于非结构化数据无能为力。采用OLE DB数据访问形式。该方式设计了一个抽象层,由抽象层负责对不同类型的数据提供统一的形式,程序与数据源打交道均经过抽象层。达到了对结构化、非结构化数据均能按统一的方式进行操作。采用ADO数据模型。该模型在OLE DB的基础上又重新设计了访问层,对高级语言编写的程序提供了统一的以“行”为操作目标的数据访问形式。采用ADO.NET数据访问模型。该模型重新整合OLE DB和ADO,并在此基础上构造了新的对象模型。该模型既提供了保持连接的数据访问形

3、式,又提供了松耦合的、以DataSet对象为操作目标的数据访问形式。,ADO.NET数据访问模型,VS2008开发环境下使用的是ADO.NET 2.0。在ADO.NET 2.0中,SQL数据提供程序使用统一的SQL数据访问模型实现对各种使用SQL语句的数据库的数据访问支持。例如Oracle、SQL Server、DB2、Access等。,1.2 数据库与数据库访问工具,1.2.1 SQL Server 数据库的分类 VS2008中有3种与SQL Server数据库的连接形式,分别为“SQL Server”、“SQL Server Compact 3.5”和“SQL Server数据库文件”。1

4、Microsoft SQL Server 该选项用于和远程服务器上的数据库连接。2Microsoft SQL Server数据库文件 该选项用于和SQL Server Express数据库文件建立连接。本章的所有例子均用SQL Server Express来讲解。,1.2.1 SQL Server 数据库的分类,3Microsoft SQL Server Compact 3.5 SQL Server Compact 3.5是一个更简单的SQL Server数据库版本,数据库扩展名为.sdf,该版本是基于文件的数据库,而不是基于服务的数据库,这种类型的数据库一般用于移动设备应用程序。4本地数据库

5、文件 不论是哪种数据库文件,只要是保存在本地计算机上,就称其为本地数据库文件。 在“新建项”模板中,本地数据库文件又分为“本地数据库”和“基于服务的数据库”,模板中的“本地数据库”是指SQL Server Compact 3.5的.sdf文件,“基于服务的数据库”是指SQL Server Express的.mdf文件。5数据库文件的属性设置 项目中本地数据库文件的【复制到输出目录】属性的默认值如下: (1)对于.sdf文件,其默认值为“如果较新则复制”。 (2)对于.mdf文件,其默认值为“始终复制”。,1.2.2 数据访问可视化工具,1服务器资源管理器2数据集设计器3数据源,本章选用示例数据

6、库,数据库MyDatabase.mdf数据表:MyTable1学院编码对照表MyTable2基本情况表MyTable3家庭成员表数据类型说明:char、VarcharNchar、NvarcharDatetimeImage、Binary、VarBinaryText、NText,MyDatabase.mdf,1.3 ADO.NET数据访问对象,ADO.NET常用的对象模型: (1) Connection对象 (2) Command对象 (3) DataReader对象 (4) DataAdapter对象 (5) Parameter对象 (6) Transaction对象这些对象提供了对数据库的各种

7、不同的访问功能对于不同的数据库,区别仅是前缀不同,例如: SQL Server数据库:SqlConnection、SqlDataAdapter Oracle数据库:OracleConnection、OracleDataAdapter,1.3.1 SqlConnection对象,ADO.NET使用SqlConnection对象与SQL Server进行连接。连接字符串的常用形式有两种:(1)使用Windows集成安全身份验证,例如: string connectionString = Integrated Security=SSPI; Database=MyDatabase.mdf; Serve

8、r=localhost;(2)使用用户名、密码形式,例如:string connectionString = “ server=localhost; uid=sa; pwd=123; database=MyDatabase.mdf”; 但是这种连接方式的安全性不高,比较容易受到黑客的攻击,1.3.1 SqlConnection对象(续),如果与SQL Server Express Edition创建连接,可以直接使用附加数据库名的方式。连接字符串的一般形式为:string connectionString =“Data Source=.SQLEXPRESS; AttachDbFilename=

9、|DataDirectory|DatabaseName; + Integrated Security=True; Connect Timeout=60; User Instance=True“ 例如,下一页,1.3.1 SqlConnection对象(续),string connectionString =Data Source=.SQLEXPRESS; AttachDbFilename=|DataDirectory|MyDataBase.mdf; + Integrated Security=True; Connect Timeout=60; User Instance=True; SqlCo

10、nnection conn = new SqlConnection(connectionString);实际上,连接字符串是可以自动生成的。在使用创建数据库之后,系统会自动生成一个连接字符串,并保存到配置文件中例如: Properties.Settings.Default.MyDatabaseConnectionString 确定连接字符串后,就可以创建SqlConnection对象。,1.3.1 SqlConnection对象(续),为了简化书写,还需要在代码中添加对命名空间的引用: using System.Data.SqlClient; 可通过连接字符串直接创建SqlConnection

11、对象, 例如:SqlConnection conn = new SqlConnection(connString); 或者:SqlConnection conn = new SqlConnection(); conn.ConnectionString = connString;,1.3.2 SqlCommand对象,在ADO.NET中,有两种操作数据库的方式:(1)采用无连接的方式。(2)采用保持连接的方式。不论采用哪种方式,都可以通过SqlCommand对象提供的方法传递对数据库操作的命令,并返回命令执行的结果。,1.3.2 SqlCommand对象(续),在保持连接的方式下操作数据库的一般

12、步骤为:1) 创建SqlConnection的实例;2) 创建SqlCommand的实例;3) 打开连接;4) 执行命令;5) 关闭连接。SqlCommand对象提供了多种完成对数据库操作的方法。常用有: 1. ExecuteNonQuery 该方法执行SQL语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。 2.ExecuteReader:返回一个SqlDataReader对象。,1.3.2 SqlCommand对象(续),3. ExecuteScaler() 该方法用于执行SELECT查询,得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和

13、等。,SQL语句中使用参数,SqlParameter对象表示SqlCommand的参数。其中参数名称不区分大小写。使用方法 /声明一个参数SqlParameter parameter = cmd.Parameters.Add( CategoryName, SqlDbType.NVarChar, 15); /为参数赋值 parameter.Value = Beverages; 或者: cmd.Parameters.Add( CategoryName, SqlDbType.NVarChar, 15); cmd.Parameters“CategoryName”.Value= Beverages;,1

14、.3.2 SqlCommand对象(续),【例1-2】演示SqlCommand对象的用法。,练习题1,使用保持连接方式编写程序,计算各年级平均成绩,并显示结果使用保持连接方式编写程序,查询MyTable2中不及格学生的学号、姓名、性别和成绩。并将结果在ListBox中显示出来,1.3.3 SqlDataAdapter对象,SqlDataAdapter对象通过无连接的方式完成数据库和本地DataSet之间的交互。一般步骤:1) 创建SqlConnection的实例;2) 创建SqlDataAdapter的实例,需要的话,根据select语句生成其他SQL语句;3) 创建DataSet的实例;4)

15、 使用Fill方法将数据库中的表填充到DataSet表中;5) 利用DataGridView或者其他控件对象编辑或显示数据;6) 需要的话,使用Update方法更新数据库。,1.3.3 SqlDataAdapter对象(续),SqlDataAdapter对象通过SelectCommand、Insert Command、UpdateCommand和DeleteCommand属性为后台数据库提供对应的操作命令,并传递需要的参数。一般情况下,只需要提供SELECT语句和连接字符串创建SqlDataAdapter对象,然后利用SqlCommandBuilder对象生成InsertCommand、Upd

16、ateCommand和DeleteCommand属性。,1.3.3 SqlDataAdapter对象(续),【例1-3】根据选择的表名打开数据库表,并将表中数据通过DataGridView显示出来。设计界面如下:,练习题2,保持无连接的方式下,新建一工程,在窗体中同时显示MyTable1,MyTable2和MyTable3的数据,可以编辑,并可以更新,1.3.4 DataTable对象,ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源。DataTable对象表示保存在本机内存中的表,它提供了

17、对表中行列数据对象的各种操作。可以直接将数据从数据库填充到DataTable对象中,也可以将DataTable对象添加到现有的DataSet对象中。,1.3.4 DataTable对象(续),在断开连接的方式下,DataSet对象提供了和关系数据库一样的关系数据模型,代码中可以直接访问DataSet对象中的DataTable对象,也可以添加、删除DataTable对象。创建DataTable对象,可以使用如下两种方式:1)使用DataTable类的构造函数创建DataTable对象,例如:DataTable table= new DataTable();2)调用DataSet的Tables对象

18、的Add方法创建DataTable对象,例如:DataSet dataset=new DataSet();DataTable table=dataset.Tables.Add(“MyTableName”),1.3.4 DataTable对象(续),在DataTable对象中添加列 调用DataTable对象的Column中的Add方法。添加后的每一列都是一个DataColumn对象. DataTable table=new DataTable(“table1”); table.Columns.Add(“姓名”,typeof(System.Data.SqlTypes.SqlString));说明

19、:由于SQL SERVER数据库中的有些数据类型和公共语言运行库(CLR)不相同,要将创建的表保存到SQL Server数据库中,则需要使用System.Data.SqlTypes命名空间中提供的SQL数据类型。,1.3.4 DataTable对象(续),设置DataTable对象的主键:通过DataTable对象的PrimaryKey属性设置DataTable的主键,主键可以是一个或者多个DataColumn对象组成的数组。 DataColumn key=DataColumn1; key0=dt.Columns0; dt.PrimaryKey=key; 在DataTable对象中创建行:利用

20、DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对象添加到表中。 DataRow row=dt.NewRow(); row“姓名”=”张三”;row“年龄”=20; dt.Rows.Add(row);,1.3.4 DataTable对象(续),将SQL Server数据库中的表填充到DataTable中:通过DataAdapter对象的Fill方法将SQL Server数据库中的表填充到DataTable对象中。 DataTable table=new DataTable(); adapter.Fill(table)

21、;,1.3.4 DataTable对象(续),【例1-4】自定义一个DataTable对象,直接创建行列信息,并在DataGridView中显示创建的内容。,1.3.5 DataSet对象,1. 创建DataSet对象 使用创建的DataSet对象可以完成各种数据操作。注意:1)利用向导生成的数据库数据源是一个强类型的DataSet以及一对或多对强类型的DataTable和TableAdapter的组合。2)也可以直接创建一般的DataSet对象,例如: DataSet mydataset=new DataSet();2. 填充DataSet对象 创建DataSet后,就可以使用SqlData

22、Adapter对象把数据导入到DataSet对象中,比如通过Fill方法将数据填充到DataSet中的某个表中。,1.3.5 DataSet对象(续),string connectstring=Properties.Settings.Default.MyDatabaseConnectionString;SqlConnection conn=new SqlConnection(connectstring);SqlDataAdapter adapter=new SqlDataAdapter(“select * from MyTable2”,conn);DataSet dataset=new Dat

23、aSet();/如果不指定表名,则系统自动使用默认的表名adapter.Fill(dataset);/可以使用索引引用生成的表dataGridView1.DataSource=dataset.Tables0;,1.4 数据绑定技术,数据绑定是指在程序运行时,窗体上的控件自动将其属性和数据源关联在一起。数据绑定技术是数据操作中使用最频繁的技术,利用数据绑定技术能极大地提高项目开发的效率。简单数据绑定与复杂数据绑定。数据源组件。导航控件。,1.4.1 简单数据绑定与复杂数据绑定,Windows窗体提供了两种类型的数据绑定:简单数据绑定和复杂数据绑定。1.简单数据绑定指将一个控件的某个属性绑定到单个

24、值。这种类型的绑定适用于只显示单个值的控件,一般将这些控件绑定到数据库中某个记录的一个字段。比如TextBox等控件。2.复杂数据绑定指将一个控件绑定到多个值。这种类型的绑定适用于显示多个值的控件,例如DataGridView控件、ListBox控件和ComboBox控件等。,1.4.1 简单数据绑定与复杂数据绑定,从实现数据绑定的方式上,有3种实现方法:在设计界面下通过鼠标拖放实现常用属性的数据绑定;1)将数据源中的数据表字段直接拖放到设计窗体上,让系统自动创建和该表字段绑定的控件。2)将数据源中的表直接拖放到设计窗体上,让系统自动创建和该表绑定的控件。3)将数据源中的字段直接拖放到窗体上已

25、有的控件上,该控件即自动绑定到拖放的表字段。,1.4.1 简单数据绑定与复杂数据绑定(续),在设计界面下设置控件的DataBindings属性,然后利用可视化界面实现各种属性的数据绑定; 提示:工具箱中提供的每个控件,都有一个DataBindings属性,用于绑定数据源。方法:1)在窗体中,选择该控件并显示属性窗口,然后展开(DataBindings)属性,此时可看到与控件对应的默认绑定属性。(实际上,用鼠标拖放所绑定的属性都是自动绑定到默认的属性)。2)单击(Advanced)属性右边”.”按钮,显示(格式设置和高级绑定)对话框,在此对话框中,选择要绑定的数据源和被绑定的属性即可。,1.4.

26、1 简单数据绑定与复杂数据绑定(续),直接编写代码实现数据绑定。1)从工具箱中拖放一个BindingSource组件、一个自动生成的强类型的DataSet组件、一个强类型的DataAdapter组件到设计窗体上。如果窗体上已经有这些对象,则不需要此步骤。2)从工具箱中拖放一个被绑定的控件到设计窗体上,修改控件的Name属性为有意义的名称。3)添加绑定代码,1.4.1 简单数据绑定与复杂数据绑定,【例1-5】演示常用控件的数据绑定方法。,1.4.2 BindingSource组件,1、BindingSource组件 用统一的数据绑定中间层绑定不同数据源。 用法: (1)将BindingSourc

27、e组件绑定到实际数据源 (2)将控件绑定的数据源设置为BindingSource组件,1.4.2 BindingSource组件(续),BindingSource组件常用的属性主要有: 1) DataSource属性:获取或设置绑定到BindingSource的数据源。 2) Sort属性:获取或设置数据源中各列的排序字符串。 3) Filter属性:获取或设置数据源中记录筛选条件字符串。 4) Current属性:指绑定列表中的当前项。BindingSource组件绑定数据源的两种形式:1)2),BindingSource bindingSource1=new BindingSource()

28、;bindingSource1.DataSource=table;/数据源为DataTable对象,BindingSource bindingSource1=new BindingSource();bindingSource1.DataSource=dataset;/数据源为DataSet对象bindingSource1.DataMember=”表名”;/DataSet中的表名,BindingSource组件的常用属性、方法和事件,1.4.2 BindingSource组件(续),【例1-6】设计一个Windows应用程序,显示本机当前支持的所有字体。左图为设计界面,右图为运行效果。,1.4.

29、3 BindingNavigator组件,BindingNavigator组件同时提供了两种功能:提供了对窗体中的数据进行导航控制和常用数据操作的方法提供了一个ToolStrip控件形式的导航条。常用属性:1) BindingSource:指定组件所要绑定的BindingSource对象。2) Dock:确定BindingNavigator组件提供的ToolStrip在窗体设计器中的位置。,1.4.3 BindingNavigator组件,【例1-7】设计一个Windows窗体应用程序,自动将MyDatabase.mdf中包含的所有表的名称显示出来供用户选择,同时在界面中提供记录导航和添加、删

30、除等功能,并能保存修改后的结果。左图为设计效果,右图为运行效果。,1.5 DataGridView控件,用途:显示与编辑二维表数据1.默认功能如果绑定了数据源,则会自动为数据源中的每个字段单独创建一列。自动使用字段名称作为列标题。列标题是固定的,即在列表中向下移动滚动条时列标题不会滚动出视图。支持自动排序。在列标题中单击或双击,该字段中的值就会按升序或降序排序。字母顺序区分大小写。单击DataGridView左上角的方块可以选择整个表。支持自动调整大小功能。在标题之间的列分隔符上双击,该分隔符左边的列就会自动按照单元格的内容展开或收缩。,1.5 DataGridView控件,2.绑定数据源利用

31、DataGridView控件操作数据库中的数据时,一般都是利用数据绑定技术来实现。步骤如下。(1)将数据库中的表数据读到DataSet或者DataTable中;(2)创建一个BindingSource对象,将BindingSource对象绑定到DataSet或者直接绑定到DataTable;(3)将DataGridView绑定到BindingSource对象。,1.5 DataGridView控件,3.标题及行列控制DataGridView提供了两个关键集合Columns和Rows,用于处理整个数据集。其中Columns是DataGridViewColumn对象的集合,Rows是DataGri

32、dViewRow对象的集合,每个DataGridViewRow对象又都包含一组DataGridViewCell对象。,DataGridView应用格式设置时的优先级顺序,由高到低DataGridViewCell.StyleDataGridViewRow.DefaultCellStyleDataGridView.AlternatingRowsDefaultCellStyleDataGridView.RowsDefaultCellStyleDataGridViewColumn.DefaultCellStyleDataGridView.DefaultCellStyle,1.5 DataGridVie

33、w控件,1.5 DataGridView控件,标题控制: 设置标题DataGridViewColumn对象的HeaderText属性; 不显示标题列代码示例datagridview1.ColumnHeadersVisible=false;隔行显示背景色datagridview1.RowsDefaultCellStyle.BackColor=Color.Bisque;/奇数行 datagridview1.AlternatingRowsDefaultCellStyle.BackColor=Color.Beige;/偶数行防止添加和删除行 datagridview1.AllowUserToAddRo

34、ws=false;/禁止用户自动添加行 datagridview1.AllowUserToDeleteRows=false;/禁止用户自动删除行 datagridview1.AllowUserToOrderColumns=false;/禁止用户对列排序判断用户同时选择了哪些行: 遍历DataGridView控件的SelectedRows集合显示/隐藏指定的列: 通过设置列的Visible属性实现,1.5 DataGridView控件,将某些列设为只读 通过设置列的ReadOnly属性来实现更改列的显示顺序 通过设置列的DisplayIndex属性来实现固定左边的某些列使用列对象的Frozen属

35、性,如果该属性设置为true,则该列及其左边的列将始终可见并且固定在表的左侧。自动调整各列宽度dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);/根据字段和标题的最大长度调整单元格宽度,1.5 DataGridView控件,4.单元格控制判断用户同时选择了哪些单元格 利用DataGridView的SelectedCells集合突出显示单元格利用DataGridView的CurrentCell属性日期时间显示格式控制 利用DataGridView的DataGridViewColumn对象,1.5 D

36、ataGridView控件,【1-8】演示DataGridView常用功能。设计界面如下:,1.6 数据处理,1.6.1 图像数据处理1利用SQL语句实现图像导入导出(1)导入图片string connString = Properties.Settings.Default.MyDatabaseConnectionString;string sql = update MyTable2 set 照片=Photo where 姓名=StudentName;using (SqlConnection conn = new SqlConnection(connString) SqlCommand cmd

37、 = new SqlCommand(sql, conn); cmd.Parameters.Add(StudentName, SqlDbType.NVarChar).Value = 王小琳; OpenFileDialog openFileDialog1 = new OpenFileDialog( ); if (openFileDialog1.ShowDialog( ) = DialogResult.OK) Stream myStream = openFileDialog1.OpenFile( ); byte bt = new bytemyStream.Length; myStream.Read(

38、bt, 0, (int)myStream.Length); cmd.Parameters.Add(Photo, SqlDbType.Image).Value = bt; conn.Open( ); cmd.ExecuteNonQuery( ); myStream.Dispose( ); ,1.6.1 图像数据处理,(2)导出图片string connString = Properties.Settings.Default.MyDatabaseConnectionString;string sql = select 照片 from MyTable2 where 姓名=StudentName;us

39、ing (SqlConnection conn = new SqlConnection(connString) SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Add(StudentName, SqlDbType.NVarChar).Value = 王小琳; conn.Open( ); SqlDataReader dr = cmd.ExecuteReader( ); if (dr.Read( ) if (dr0.GetType( ) != typeof(DBNull) byte bs = (byte)dr0; MemoryS

40、tream ms = new MemoryStream(bs); Bitmap image = new Bitmap(ms); Graphics g = this.CreateGraphics( ); g.DrawImage(image, 10, 10); g.Dispose( ); ms.Dispose( ); ,1.6.1 图像数据处理,2利用PictureBox控件实现图像导入导出【例1-9】演示数据库中图像数据的处理方法。设计界面如下:,1.7 存储过程,存储过程是指将常用的或复杂的数据库操作,预先用SQL语句写好并用一个指定的名称存储起来,以后需要完成与已定义好的存储过程的功能相同的

41、数据库操作时,只需调用存储过程的名称即可。 存储过程具有以下优点: 存储过程编辑器事先对存储过程进行了语法检查处理,避免了因SQL语句语法不正确引起运行时出现异常的问题; 只在保存存储过程时数据库服务器才进行编译。,1.7 存储过程(续),在定义或编辑存储过程的时候,可以直接检查运行结果是否正确,提高了开发效率; 避免了查询字符串中包含单引号可能会出现的问题; 一个项目中可能会多处用到相同的sql语句,使用存储过程便于重用; 修改灵活方便,当需要修改完成的功能时,只需要修改定义的存储过程即可,而不必单独修改每一个引用。,1.7 存储过程,1.创建和修改存储过程在VS2008开发环境下,利用【服

42、务器资源管理器】,除了可以直接创建SQL Server数据库和数据库中的表以外,还可以直接创建或修改存储过程。,1.7 存储过程,2.在存储过程中定义参数存储过程可以带参数,也可以不带参数。利用SqlCommand对象的Parameters属性提供的功能,可以传递执行存储过程所用的参数。SQL Server的存储过程如果带参数,参数名必须以“”为前缀。参数的方向:Input:参数是输入参数,可省略。Output:参数是输出参数。InputOutput:参数既能输入,也能输出。ReturnValue:参数表示存储过程的返回值。,1.7 存储过程,1.7 存储过程,3利用SqlDataAdapte

43、r或者SqlCommand调用存储过程 在程序中利用SqlDataAdapter或者SqlCommand调用存储过程时,和定义存储过程中参数的定义一样,程序中也必须指明参数名、参数类型和参数方向。如果参数方向是输入参数,可以省略参数方向,其他情况均不能省略。 参数名不区分大小写,参数类型用SqlDbType枚举表示。,1.7 存储过程,3利用SqlDataAdapter或者SqlCommand调用存储过程 在程序中利用SqlDataAdapter或者SqlCommand调用存储过程时,和定义存储过程中参数的定义一样,程序中也必须指明参数名、参数类型和参数方向。如果参数方向是输入参数,可以省略参

44、数方向,其他情况均不能省略。 参数名不区分大小写,参数类型用SqlDbType枚举表示。,练习,将sqlcommand及sqldataadapter调用带参数的存储过程在一windows上实现,上面的示例,1.7 存储过程,4利用数据集设计器调用存储过程 在程序中利用SqlDataAdapter或者SqlCommand调用存储过程看起来比较方便,但是缺点很多:没有调用代码设计时的支持,而只有在运行程序时执行到相应的语句,才能检查调用的代码是否有问题。 将存储过程变为强类型的对象,这样编译器就可以在编译期间检查所有可能出现的错误。 具体实现办法是,将存储过程从【服务器资源管理器】中直接拖放到数据

45、集设计器中,让系统自动生成对应的组件,并自动生成对应的调用方法。,1.7 存储过程,【例1-11】演示存储过程的用法。设计界面:,CREATE PROCEDURE CountStoredProcedure( maleCount int OUTPUT, femaleCount int OUTPUT)AS/* SET NOCOUNT ON */select maleCount=count(*) from MyTable2 where (性别=男)select femaleCount=count(*) from MyTable2 where (性别=女)RETURN,CREATE PROCEDURE NianjiStoredProcedureAS/* SET NOCOUNT ON */select distinct substring(学号,1,2) as nianji from MyTable2RETURN,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报