SQL数据库操作步骤及代码.doc

上传人:scccc 文档编号:12395552 上传时间:2021-12-03 格式:DOC 页数:49 大小:1.13MB
返回 下载 相关 举报
SQL数据库操作步骤及代码.doc_第1页
第1页 / 共49页
SQL数据库操作步骤及代码.doc_第2页
第2页 / 共49页
SQL数据库操作步骤及代码.doc_第3页
第3页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SQL数据库操作步骤及代码.doc》由会员分享,可在线阅读,更多相关《SQL数据库操作步骤及代码.doc(49页珍藏版)》请在三一文库上搜索。

1、第2章数据库高级编程ADO.NET是为.NET框架而创建的,是对 ADO (ActiveX Data Objects )对象模型的 扩充。ADO.NET提供了一组数据访问服务的类, 可用于对 Microsoft SQL Server 、Oracle 等数据源的一致访问。ADO.NET模型分为.NET Data Provider (数据提供程序)和DataSet 数据集(数据处理的核心)两大主要部分。.NET数据提供程序提供了四个核心对象,分别 是Conn ection 、Comma ndDataReader 和DataAdapter对象。功能如表 2-1所示。表2-1 ADO.NET核心对象对

2、象功能ConnectionVJ IJ u提供和数据源的连接功能Comma nd提供访问数据库命令,执行查询数据或修改数据的功能,例如运行SQLDataReader从数据源中读取只向前的且只读的数据流DataAdapter是DataSet对象和数据源间的桥梁。 DataAdapter 使用4个Comma nd对象米运行查询、新建、修改、删除的 SQL命令,把数据加载到DataSet,2.1 SQL Server 相关配置在使用C#访问数据库之前,首先创建一个名为“chap2 ”的数据库,此数据库作为2.1 节及2.2节中例题操作的默认数据库。然后创建数据表Products,表结构如表2-2所示。

3、创建完毕后可录入初始化数据若干条。表2-2 Products表表结构序号列名字段说明数据类型长度主键允许空1ProductID商品编号char4主键否2ProductName商品名称nvarchar40否3SupplierName供应商名称nvarchar40否4CategoryName商品类别名称nvarchar40否5UnitPrice单价money否6UnitsInStock库存量smallint否7Discount是否折扣char1否下面首先介绍几个 SQL Server 2012的常用操作。这些操作都是初学者在实践环节及上机课的操作中出现问题较多的地方。1 .身份验证方式SQL Se

4、rver 2012在安装时默认是使用Windows 验证方式的,但是安装过后用户可随时修改身份验证方式。启动SQL Server 2012 ManagementStudio,在"连接到服务器”对话框中选择I | L*i.Ji畔F 囱L1矗皐富兰-邓I网1TA“ Win dows身份验证”连接服务器,连接成功后,在窗体左侧的“对象资源管理器”中右 键单击服务器实例节点,并在弹出的快捷菜单中选择“属性”菜单项,系统将弹出“服务器 属性”窗体,切换至“安全性”选项卡,如图2-1所示。¥i*l”*1辿吕於世_J Fl :2ES Kl -IO i rr-.耳伸HiE心舍s*冬-7 W

5、IWMMlfeff IZJ.很慣站旬堂录U>4fefctiEti*ir*T ii軒舌告七的1=T円衲黑询见已:iJLZ-JIF1): 4 > I.M * “*再合期诵冃黑件厦I自円C2卒梅聊番屯I岂的畦曲相崔堆iiR图2-1“服务器属性”对话框-“安全性”选项卡在“服务器身份验证”部分选择“SQL Server和Windows身份验证模式”选项,并单击【确定】按钮。系统将提示需要重新启动SQL Server以使配置生效,如图2-2所示。图2-2 系统提示框右键单击“对象资源管理器”的服务器实例节点,在弹出的快捷菜单中选择 “重新启动”菜单项,SQL Server将重新启动服务,重启

6、成功后即可使用混合验证方式登录SQL Server服务器。2 添加登录账户大部分初学者都习惯于使用SQL Server的系统管理员账号“ sa”来登录数据库服务器,而在实际工作环境中使用sa账号登录服务器是不合理的。因为很多情况下系统的数据库是部署在租用的数据库服务器上的,此时数据库设计人员或编程人员都不可能具有sa账号的使用权限,因此在将身份验证方式修改为SQL Server和Windows 混合验证后,需要为某应用程序创建一个专用的登录账户。其操作步骤描述如下。(1) 使用 Windows 身份验证登录SQL Server,在对象资源管理器中点击“安全性”节点前面的加号“ + ”,在展开后

7、的“登录名”子节点上单击右键,如图2-3所示,并在弹出的快捷菜单中选择“新建登录名”选项。图2-3 登录名节点的右键菜单(2)系统弹出“登录名一新建”对话框中,如图2-4所示。首先在登录名输入框中填写需要创建的用户名,此处以“zd ”为例;将身份验证方式选为“SQL Server身份验证”,为新建账户设置密码为“ 123 ”,同时去除“强制实施密码策略”和“用户在下次登录时必 须更改密码”选项;最后为账户选择默认数据库“chap2 ”。图2-4“登录名-新建”对话框“常规”选项卡(3)服务器角色节点不予配置。有关SQL Server服务器角色请参考相关资料,此处不再详细介绍。(4)在对话框左侧

8、选项卡中选择“用户映射”节点,如图2-5所示,在“映射到此登录名的用户”列表中,勾选此前创建好的数据库“chap2 ”,在窗体右下方的“数据库角色成员身份”框里选择“ db_Owner ”,即数据库拥有者。图2-5“登录名-新建”对话框“用户映射”选项卡(5 )安全对象节点一般不予配置。(6)在对话框左侧选项卡中选择“状态”节点,如图2-6所示,将“是否允许连接到数据库引擎”选项设为“授予”,同时将“登录”选项设为“启用”。以上各节点配置完成后单击【确定】按钮,即完成了对账户的创建工作。图2-6“登录名-新建”对话框“状态配置”选项卡(7)新建账户完成后,重新连接SQL Server,如图2-

9、7所示,选择SQL Server身份验证方式,输入前面设置的登录名“zd ”及密码“123 ”,点击【连接】按钮,即可完成登录。登录成功后在对象资源管理器中可看到服务器实例名后面显示的登录用户名,如图2-8 所示。SQL Server皋冠窑摆on廷7SfId曲口mA帧仙"图2-8对象资源管理器图2-7“连接到服务器”对话框2.2使用ADO.NET访问数据库连接数据库在对数据源进行操作之前,首先需建立到数据源的连接,可使用Connection 对象显式创建到数据源的连接。【例2-1】 设计一个 Windows 应用程序,能通过"Windows 验证"和"W

10、indows 和SQL Server混合验证”两种方式建立到数据库的连接。图2-9“连接数据库”窗体控件 Tab顺序实现过程如下。(1)新建一 Win dows 应用程序,命名为conn ection ,将创建的默认窗体名更名为frmConnect ,窗体的Text属性设置为"连接数据库”,界面设计如图2-9所示。frmConnect 窗体中的主要控件,按 Tab键顺序,描述如表 2-3所示。表2-3“连接数据库”窗体控件及说明Tab顺序控件类型控件名称说明主要属性属性名属性值0ButtonbtnConnect1Windows身份验证方式连接数据库TextWindows 验证1btn

11、Connect2混合验证方式连接数据库Text混合验证(2)主要程序代码说明:本节内所有例题代码均需引用命名空间,代码如下:/ 添加对 SQL Server 数据访问对象的引用后续例题不再逐一说明。 由于篇幅所限,本节中所有例题的异常捕获代码都省略了,读者需自行添加获取控件输入及访问数据库等处的异常捕获代码。双击【Windows 验证】按钮,进入其 Click事件处理函数,代码如下:/Windows方式连接数据库private void btnConnect1_Click(object sender, EventArgs e)string strConn = "server=XP-4

12、;database=chap2;integrated security=true"/ 连接字符串SqlConnection conn = new SqlConnection(strConn);/ 创建连接对象conn.Open();/ 打开连接/如连接成功则弹岀消息框提示MessageBox.Show(”数据库已通过集成验证方式连接成功",”连接状态对话框");conn.Close();/使用完毕后关闭数据库连接双击【混合验证】按钮,进入其 Click事件处理函数,填写代码如下。/SQL Server + Windows方式连接数据库private void bt

13、nConnect2_Click(object sender, EventArgs e)string strConn = "server=XP-4.;database=chap2;uid=zd;pwd=123"/ 连接字符串SqlConnection conn = new SqlConnection(strConn);/ 创建连接对象conn.Open();/ 打开连接/如连接成功则弹岀消息框提示MessageBox.Show(”数据库已通过混合验证方式连接成功",”连接状态对话框");conn.Close();/使用完毕后关闭数据库连接数据库连接字符串包

14、含要连接的数据库的信息,如server属性指定数据库服务器名称,database属性指定数据库名称,使用Win dows身份验证方式只需要给出server 禾口database两个属性的值,并使用“in tegratedsecurity=true指定身份验证方式为Win dows验证;当使用混合验证时则需要使用uid属性指定数据库账户、pwd属性指定该账号的密码。说明:上例中的连接字符串中的用户名“zd ”和密码“123 ”,是以本节“添加登录账户”的方式创建的,读者可自行修改为自己计算机的SQLServer登录名及密码。运行程序,分别单击【Win dows 验证】和【混合验证】两个按钮,如连

15、接成功,将分别弹出不同的连接状态对话框,如图2-10所示。图2-10连接状态对话框对数据库进行添加、修改及删除操作在创建好到数据库的连接之后,可以使用Comma nd 对象对数据库进行更新操作。【例2-2】设计一个 Windows应用程序,能实现对数据库表的添加、修改及删除操作。实现过程:(1)新建一 Windows 应用程序,命名为 operateData ,将创建的默认窗体名更名为 frmCommand ,窗体的Text属性设置为"对数据库执行添加、修改及删除操作”,界面设计如图2-11所示。frmCommand窗体中的主要控件,按Tab键顺序,描述如表2-4所示。图2-11“对

16、数据库进行添加、修改及删除操作”窗体Tab顺序视图表2-4“对数据库执行添加、修改及删除操作”窗体控件及说明Tab顺序控件类型控件名称说明主要属性属性名属性值0Buttonbtnlnsert向数据库表添加一条记录Text添加1btnUpdate修改数据库表中的记录Text修改2btnDelete删除数据库表中的记录Text删除(2)主要程序代码 双击【添加】按钮,进入其 Click事件处理函数,代码如下。/【添加】按钮单击事件处理函数private void btnlnsert_Click(object sender, EventArgs e)/连接字符string strConn = &qu

17、ot;server=XP-4;database=chap2;integratedsecurity=true"串/声明并创建连接对象SqlConnection conn = new SqlConnection(strConn);conn.Open(); /打开数据库连接/向商品表插入一条新记录双层蒸锅,苏泊尔集/声明并创建命令对象团,厨具string strSql="insert into Products values('0012','',129.9,100,'false')"SqlCommand comm = ne

18、w SqlCommand(strSql, conn);int row = comm.ExecuteNonQuery();/执行SQL语句,并获取受影响的行数if (row > 0)/如果记录插入成功,则弹出消息框提示MessageBox.Show(”插入数据成功","操作状态对话框");conn.Close(); /关闭数据库连接 双击【修改】按钮,进入其 Click事件处理函数,代码如下。/【修改】按钮单击事件处理函数private void btnUpdate_Click(object sender, EventArgs e)string strConn

19、 = "server=XP-4;database=chap2;integrated security=true"SqlConnection conn = new SqlConnection(strConn);conn.Open();/修改商品表中的一条记录string strSql = "update Products set UnitsInStock=500 where ProductlD='0012"SqlCommand comm = new SqlCommand(strSql, conn);int row = comm.ExecuteNon

20、Query();if (row > 0)MessageBox.Show(” 修改数据成功","操作状态对话框”);conn.Close();private void btnDelete_Click(object sender, EventArgs e)string strConn = "server=XP-4;database=chap2;integrated security=true"SqlConnection conn = new SqlConnection(strConn);conn.Open();/删除商品表中的一条记录string st

21、rSql = "delete from Products where ProductlD='OO12":SqlCommand comm = new SqlCommand(strSql, conn);int row = comm.ExecuteNonQuery();if (row > 0)MessageBox.Show(”删除数据成功",”操作状态对话框");conn.Close();运行程序,分别单击【添加】、【修改】和【删除】按钮,如操作成功,将分别弹出不同的操作状态对话框,如图2-12所示。对于数据库记录的修改情况,读者可同时从SQL

22、Server管理控制台访问数据库chap2的Products表进行验证。燔iT奴据磁图2-12操作状态对话框查询数据库中的数据【例2-3】设计一个 Windows 应用程序,使用DataReader查询数据库中的信息并加 载到ComboBox 控件的选项中。实现过程:(1)新建一 Windows 应用程序,命名为 testDataReader ,将创建的默认窗体名更名为frmProducts ,窗体的Text属性设置为"商品类别及名称”,界面设计如图2-13所示。frmProducts 窗体中的主要控件,按Tab键顺序,描述如表 2-5所示。图2-13“商品类别及名称”窗体 Tab键

23、顺序视图表2-5“商品类别及名称”窗体控件及说明Tab顺序控件类型控件名称说明主要属性属性名属性值0comboCategory所有商品类别名称DropDownStyleDropDownList1ComboBoxcomboProducts某商品类别下的商品名称DropDownStyleDropDownList说明:界面中不参与编程的 Label控件不再进行说明,以下各例题均同样处理。(2)主要程序代码 双击窗体标题栏,进入Load事件处理函数,访问数据库,为“商品类别”下拉框加载数据,代码如下。/窗体加载事件处理函数,为“商品类别”组合框加载所有的商品类别数据private void frmPr

24、oducts_Load(object sender, EventArgs e)string strConn = "server=XP-4;database=chap2;integrated security=true"连接字符串SqlConnection conn = new SqlConnection(strConn);/ 声明并创建连接对象conn.Open(); /打开数据库连接string strSql = "select distinct CategoryName from Products"/ 查询SqlCommand comm = new

25、SqlCommand(strSql, conn);SqlDataReader dr = comm.ExecuteReader();while (dr.Read()依次加载数据项至 ComboBoxdr.Close();conn.Close(); 双击商品类别下拉框,进入其SelectedIndexChanged事件处理函数,根据其选项 为“商品名称”下拉框加载数据,代码如下。/ “商品类别”下拉框选项索引变化事件处理函数,/根据商品类别下拉框中的选项加载该类别下的所有的商品名称private void comboCategory_SelectedlndexChanged(object send

26、er, EventArgs e)string strConn = "server=XP-4;database=chap2;integrated security=true"SqlConnection conn = new SqlConnection(strConn);conn.Open();string strSql = "select ProductNamefrom Products whereCategoryName="'+comboCategory.Text+""'SqlCommand comm = new Sq

27、lCommand(strSql, conn);SqlDataReader dr = comm.ExecuteReader();while (dr.Read()dr.Close();conn.Close();【例2-4】使用DataAdaper 和DataSet对象查询数据库中的信息并加载到ComboBox 控件的选项中。实现过程:dataSet,将创建的默认窗体名更名为(1 )新建一 Win dows 应用程序,命名为frmProducts ,窗体及各主要控件的属性设置同例2-3 。(2)主要程序代码双击窗体标题栏,进入其 Load事件处理函数,访问数据库,为“商品类别”下拉框加载数据,代码如

28、下。/窗体加载事件处理函数,为“商品类别”组合框加载所有的商品分类数据。private void frmProducts_Load(object sender, EventArgs e)string strConn = "server=XP-4;database=chap2;integrated security=true" /连接字符串名称SqlConnection conn = new SqlConnection(strConn);string strSql = "select distinct CategoryName from Products"

29、SqlDataAdapter da = new SqlDataAdapter(strSql, conn);DataSet ds = new DataSet();/声明并创建数据集对象/声明并创建连接对象/查询不重复的商品类别/声明并创建数据适配器对象da.Fill(ds); /使用数据适配器填充数据集/设置商品类别下拉框数据源/设置商品类别下拉框的显示属性comboCatagory.DataSource = ds.TablesO;comboCatagory.DisplayMember = "CategoryName"双击“商品类别”下拉框,进入其 SelectedIndex

30、Changed事件处理函数,根据其 选中项为“商品名称”下拉框加载数据,代码如下。/ “商品类别”下拉框选项索引变化事件处理函数,/根据商品类别下拉框中的选项加载该类别下的所有的商品名称private void comboCatagory_SelectedIndexChanged(object sender, EventArgs e)string strConn = "server=XP-4;database=chap2;integrated security=true"SqlConnection conn = new SqlConnection(strConn);/根据“

31、商品类别”下拉框中的选项查询商品名称stringstrSql="selectProductNamefromProductswhereCategoryName='"+comboCategory.Text+""'SqlDataAdapter da = new SqlDataAdapter(strSql, conn);DataSet ds = new DataSet();da.Fill(ds);comboProducts.DataSource = ds.Tables0;/ 设置商品名称下拉框的数据源comboProducts.DisplayMe

32、mber = "ProductName"/ 设置商品名称下拉框的显示属性思考:细心的同学会发现,例2-3和例2-4虽然运行界面完全相同,但是窗体加载之后列表框中选项的情况是有区别的。那么,区别在哪呢?原因又是什么呢?数据绑定控件【例2-5】 设计一个 Windows应用程序,能实现商品信息的维护。本例题中,程序要读取数据库中的数据,加载数据至ListBox和ComboBox 控件,并根据用户在 ListBox控件中选择的数据项再次访问数据库,获取相关记录。另外,本例题还实现了对商品表Products的增加、修改及删除操作。图2-14“商品信息管理”窗体 Tab键顺序视图实现

33、过程:(1)新建一 Win dowsfrmProducts ,窗体的 Text应用程序,命名为 products属性设置为“商品信息管理”,将创建的默认窗体名更名为,界面设计如图2-14所示。frmProducts 窗体中的主要控件,按Tab键顺序,描述如表 2-6所示。表2-6“商品信息管理”窗体控件及说明Tab顺序控件类型控件名称主要属性属性名属性值0TextBoxtxtID输入和显示商品编号ReadonlyTrue1txtName输入和显示商品名称ReadonlyTrue2txtSupplier输入和显示供应商名称ReadonlyTrue3ComboBoxcomboCategory输入和

34、显示商品类别EnabledFalse4TextBoxtxtUnitPrice输入和显示商品单价ReadonlyTrue5txtUnitsInStock输入和显示库存数量ReadonlyTrue6CheckBoxchkDisc输入和显示是否打折EnabledFalse7ButtonbtnInsert添加商品EnabledTrue8btnUpdate修改商品EnabledTrue9btnSave保存数据EnabledFalse10btnCancle取消编辑EnabledFalse11btnDelete删除数据EnabledTrue12ListBoxlstProducts商品名称列表EnabledT

35、rue(2)主要程序代码首先要为该程序添加两个成员变量,代码如下:string strConn = "server=XP-4;database=chap2;integrated security=true"/ 连接字符串string insertORupdate = ""/标识变量,用来记录要保存的是添加还是修改操作自定义方法DataLoad(),访问数据库,加载商品类别列表及商品名称列表,代码如下。/ <summary>/访问数据库,加载商品类别列表及商品名称列表/ </summary>void DataLoad()/以下代码使

36、用DataReader访问数据库SqlConnection conn = new SqlConnection(strConn);/ 创建连接对象conn.Open();/ 打开连接string strSql = "select distinct CategoryName from Products"/ 查询不重复的商品类别名SqlCommand comm = new SqlCommand(strSql, conn);/ 声明并创建命令对象SqlDataReader dr = comm.ExecuteReader();/ 执行查询,用 DataReader 存放数据while

37、 (dr.Read()/如果查询到数据/ 逐项加载商品类别名至ComboBoxdr.Close();/ 关闭 dataReader/以下代码使用 DataAdapter 和DataSet访问数据库strSql = "select ProductName,ProductlD from Products"/ 查询商品名称及商品编号SqlDataAdapter da = new SqlDataAdapter(strSql, conn); / 声明并创建数据适配器对 象DataSet ds = new DataSet();/声明并创建数据集对象da.Fill(ds);/填充数据集I

38、stProducts.DataSource = ds.T ables0; / 设置商品名称列表的数据源IstProducts.DisplayMember = "ProductName"/ 设置显示值属性IstProducts.ValueMember = "ProductID"/ 设置实际值属性conn.Close();/ 关闭连接IstProducts.Selectedlndex = -1;/使商品名称列表没有选中项商品管理窗体的Load事件处理函数,就是调用DataLoad()方法,代码如下。/窗体加载事件处理函数private void frmPro

39、ducts _Load(object sender, EventArgs e) DataLoad(); 声明自定义方法controlEnabled(),控制各输入控件在“查看”和“编辑”操作时的可用性,代码如下。/自定义方法,控制控件的可用性,将控件可用性分为查看”和编辑”两种状态public void controlEnabled(string status)if (status = "show")/当前为查看数据状态,控件都不可编辑btnInsert.Enabled = true;btnUpdate.Enabled = true;btnSave.Enabled = fa

40、lse;btnCancle.Enabled = false;btnDelete.Enabled = true;chkDisc.Enabled = false;comboCategory.Enabled = false;foreach (Control c in this.Controls)if (c is TextBox)TextBox txtb = (TextBox)c); txtb.ReadOnly = true;else /当前为编辑数据状态,控件可用btnlnsert.Enabled = false; btnUpdate.Enabled = false; btnSave.Enabled

41、 = true; btnCancle.Enabled = true; btnDelete.Enabled = false; chkDisc.Enabled = true; comboCategory.Enabled = true; foreach (Control c in this.Controls) if (c is TextBox)TextBox txtb = (TextBox)c); txtb.ReadOnly = false; 双击lstProducts控件,进入其选项索引变化事件处理函数,根据选择的商品,查询 该商品其他信息,并为界面其他控件赋值,代码如下。/商品名称列表选项索引变

42、化事件,根据选择的商品名称加载商品其他信息private void lstProducts_SelectedlndexChanged(object sender, EventArgs e)/用来判断用户是否选中了有效的选项,且保证是数据加载后用户进行的操作if (lstProducts.SelectedIndex != -1)&&获取当前选中商品的商品编号SqlConnection conn=new SqlConnection(strConn);/ 声明并创建连接对象conn.Open();/打开数据库连接string strSql="select * from Pr

43、oducts where Productld="'+pd+""'/ 由商品编号查询该商品其他信息SqlCommand comm=new SqlCommand(strSql,conn);/ 声明并创建命令对象SqlDataReader dr = comm.ExecuteReader();/ 使用 DataReader 获取查询结果if (dr.Read() /如果查询到数据,就将该商品各字段的值赋予窗体各控件用以显示 txtID.Text = dr"P roductlD".ToString();txtName.Text=dr&qu

44、ot;ProductName".ToString();txtSupplier.Text=dr"SupplierName".ToString();comboCategory.Text = dr"CategoryName".ToString();txtUnitPrice.Text=dr"UnitPrice".T oString(); txtUnitslnStock.Text=dr"UnitslnStock".T oString(); chkDisc.Checked = (dr"Discount&qu

45、ot;.ToString()="True"?true:false;dr.Close(); / 关闭 DataReaderconn.Close(); / 关闭连接controlEnabled("show"); /将控件设置为查看状态说明:由于为ListBox控件加载选项时会触发SelectedIndexChanged事件,此时获取到的 值为"”,而不是经用户选择过的商品编号,程序需过滤掉这种情况。只有完成ListBox控件的选项加载后,经用户选择某条商品数据时,程序才进行后续操作,如下代码即可实现这种过滤功能。if (lstProducts.Se

46、lectedIndex != -1)&& 双击btnlnsert按钮,进入其 Click事件处理函数,清空所有输入控件并使其为可编辑状态,设置编辑状态为insert ,真正的插入操作在btnSave的Click事件处理函数中进行。代码如下。/【添加】按钮单击事件处理函数private void btnInsert_Click(object sender, EventArgs e)insertORupdate = "insert"/设置标识变量为添加操作controlEnabled("edit"); /将控件设置为编辑状态/清空所有控件foreach (Control c in this.Controls)if (c is TextBox)TextBox txtb = (

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1