C#与数据库访问技术总结(七)综合示例
综合示例
说明:前面介绍了那么多,光说不练假把式,还是做个实例吧。
表:首先你要准备一张表,这个自己准备吧。我们以学生表为例。
1、ExecuteScalar方法
ExecuteScalar方法执行返回单个值的命令。例如,如果想获取Student数据库中表studentInfo的学生的总人数,则可以使用这个方法执行SQL查询:
Select count(*) from studentInfo .
(1) 建立Windows Application 应用程序
(2) 在Form1上添加一个按钮Button控件和一个标Label签控件
(3) 双击按钮,自动进入代码编辑界面
首先添加命名空间: using System.Data.SqlClient;
(4)编写按钮的Click事件的处理事件代码:
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;
namespace DataBase
{
  public partial class Form1 : Form
{
public Form1()
{
  InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
  try
  {
    //定义命令文本
    string commandText = "select count(*) from studentInfo";
    //定义连接字符串
    string connString="server=(local);Initial Catalog=Student;Integrated Security=SSPI;";
    //string connString= "server=(local);user id=sa;Initial Catalog=Student;pwd=;";
    //定义Connection对象
    SqlConnection conn = new SqlConnection();
    //设置Connection对象的ConnectionString属性
    conn.ConnectionString = connString;
    //新建Command对象,此时conn对象并不需要打开连接
    SqlCommand cmd = new SqlCommand(commandText, conn);
    //打开连接
    conn.Open();
    //执行命令,返回结果
    string count = cmd.ExecuteScalar().ToString();
    //记得关闭连接
    conn.Close();
    this.label1.Text = "共有" + count + "位学生!";
}
catch (Exception ex)
{
    MessageBox.Show("数据库连接失败" + ex.Message);
}
    }
  }
}
执行结果界面如图:
  
分析代码:
第1步是引入命名空间:System.Data.SqlClient,表示将使用SQL Server.NET 数据提供程序: using System.Data.SqlClient;
第2步是 按钮button1_Click单击事件中首先新建立了连接并设置了其连接字符串属性:
string connString="server=(local);Initial Catalog=Student;Integrated Security=SSPI;";
//string connString= "server=(local);user id=sa;Initial Catalog=Student;pwd=;";
//定义Connection对象
SqlConnection conn = new SqlConnection();
//设置Connection对象的ConnectionString属性
conn.ConnectionString = connString;
第三步,新建Command 对象,并将命名文本和连接对象传递给其构造函数:
SqlCommand cmd = new SqlCommand(commandText, conn);
其中,commandText为最初定义的命名文本:
string commandText = "select count(*) from studentInfo";
此时conn对象没有打开,因为这不是必须的。
第四步 现在需要执行操作了,所以首先要打开连接,然后执行操作:
conn.Open();
string count = cmd.ExecuteScalar().ToString();
由于ExecuteScalar()方法返回类型为object,因此使用了ToString()方法将其转换为string以后赋值给count。
注意:一般使用ExecuteScalar()方法时都必须用到类型转换。
第五步数据库访问完毕以后应该立即关闭连接,这是一个好习惯:
corm.Close();
第六步最后将读取的信息通过label1显示出来:
this.label1.Text="共有"+count+"位学生!";
上面的代码中并没有指定Command对象的CommandType属性,这时CommandType的值将为默认的Text,当然也可以通过如下代码显示指定其类型,但这不是必须的。
cmd.CommandType=CommandType.Text;
C#与数据库访问技术总结(七)综合示例的更多相关文章
- C#与数据库访问技术总结(十八)
		
ADO.NET 代码综合示例 前面已经介绍过OLE DB.NET和SQL Server.NET数据提供者可以用来连接不同的数据源. 以下代码不仅综合演示了使用ADO.NET的这两种数据提供者访问数据库 ...
 - C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看
		
数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...
 - 数据库访问技术 odbc dao rdo uda jet oledb
		
一.UDA(UniversalDataAccess) 这是微软提供的通用数据访问策略.包括ADO.OLEDB和ODBC.它不光提供了数据库的访 问能力,对于其它的数据存储技术也同样支持,如目录服务.E ...
 - c# 窗体开发4 数据库访问技术
		
ADO.NET的名称起源于ADO(ACTIVEX DATA OBJECTS) USING SYSTEM; USING SYSTEM.COLLECTIONS.GENERIC; USING SYSTEM. ...
 - C#与数据库访问技术总结(十七)
		
使用DataSet对象访问数据库 当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为ad ...
 - C#与数据库访问技术总结(十六)之 DataSet对象
		
DataSet对象 DataSet对象可以用来存储从数据库查询到的数据结果,由于它在获得数据或更新数据后立即与数据库断开,所以程序员能用此高效地访问和操作数据库. 并且,由于DataSet对象具有离线 ...
 - C#与数据库访问技术总结(十三)之DataReader对象
		
DataReader对象与数据获取 DataReader对象以“基于连接”的方式来访问数据库. 也就是说,在访问数据库.执行SQL操作时,DataReader要求一直连在数据库上. 这将会给数据库的连 ...
 - C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
		
DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...
 - C#与数据库访问技术总结(十四)之DataAdapter对象
		
DataAdapter对象 DataAdapter对象主要用来承接Connection和DataSet对象. DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connectio ...
 
随机推荐
- C语言 malloc、calloc、realloc的区别
			
三个函数的申明分别是: void* malloc(unsigned size); void* realloc(void* ptr, unsigned newsize); void* calloc(si ...
 - codevs1230 元素查找
			
1230 元素查找 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 给出n个正整数,然后有m个询问,每 ...
 - JS根据服务器时间倒计时
			
原文链接:http://caibaojian.com/daojishi-2.html //获取服务器时间 function getSevertime(){ var xmlHttp = new XMLH ...
 - LightOJ 1285 - Drawing Simple Polygon (几何,极角排序)
			
1285 - Drawing Simple Polygon PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...
 - LeetCode OJ 331. Verify Preorder Serialization of a Binary Tree
			
One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, ...
 - .net下各个数据类型所占用的字节
			
Console.WriteLine(sizeof(int)); Console.WriteLine(sizeof(short)); Console.WriteLine(sizeof(char)); C ...
 - Nginx-->进阶-->Module-->ngx_http_stub_status_module
			
一.模块介绍 The ngx_http_stub_status_module module provides access to basic status information. This modu ...
 - Robolectric 配置
			
费了些工夫,已配好,按记录留记录 按官网操作http://robolectric.org/getting-started/ 1引包 testCompile "org.robolectric: ...
 - mormot orm rest注意事项
			
mORMot创建ORM RestFul,当CreateMissingTables的时候报错,搜了n多资料没搞定,后来胡乱建了个表测试了一通搞定了. ORM对应的每个数据表都需要一个ID字段并设置主键, ...
 - 网站加载css/js/img等静态文件失败
			
网站加载css/js/img等静态文件失败,报网站http服务器内部500错误.而服务器中静态文件存在且权限正常. 从浏览器中直接访问文件,出来乱码.这种问题原因在于iis中该网站mime配置报错,不 ...