今晚刚刚上了点ADO.NET的内容,下课后,我通过自学,看文档,找资料,掌握了ADO.NET的基本操作
首先,先介绍下各个对象的具体作用
1、SqlConnection对象:与数据源建立连接
2、SqlCommand 对象:对数据源执行SQL命令并返回结果
3、SqlDataReader对象: 读取数据源的数据,只能将数据源的数据一次遍历
4、SqlDataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。
5、DataSet对象:服务器内存中的数据库
就这5个对象,就可以完成数据库的基本操作
我具体演示下
首先创建数据库
代码如下
use master
go
if exists(select * from sysdatabases where name='student')
drop database student
go
create database student
on primary
(
name='student',
filename='D:/student.mdf',
size=3,
maxsize=5,
filegrowth=1
)
log on
(
name='studentLog',
filename='D:/student.ldf',
size=3,
maxsize=5,
filegrowth=1
)
go
use student
go
create table StuInfo
(
id int identity primary key,
name nvarchar(20) not null,
dvpplatform nvarchar(20) not null
)
go
insert into StuInfo
select 'Sean','Java' union
select 'Tom','.net' union
select 'Cat','C++' union
select 'Joy','Oracel'
go
现在要做的是,用不同的方法,读取刚刚创建的数据库的数据
方法一:用SqlDataReader
代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace test
{
class Program
{
static void Main(string[] args)
{
//数据库连接字符串
String sqlconn = "Integrated Security=SSPI;database=student;server=.";
//SQL语句
String sql = "select * from stuInfo";
//连接数据库
SqlConnection conn = new SqlConnection(sqlconn);
//打开数据库
conn.Open();
//获得SQL语句命令对象
SqlCommand cmd = new SqlCommand(sql,conn);
//执行SQL语句,将返回集存在SqlDataReader里
SqlDataReader reader = cmd.ExecuteReader();
//显示结果集
try
{
Console.WriteLine("ID/t" + "name/t" + "platform/t/n");
while (reader.Read())
{
Console.Write(reader.GetInt32(0) + "/t");
Console.Write(reader.GetString(1) + "/t");
Console.Write(reader.GetString(2) + "/t");
Console.WriteLine();
}
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
//关闭所有连接对象
if (reader != null)
{
reader.Close();
}
if (conn != null)
{
conn.Close();
}
}
}
}
}
运行结果
方法二:使用SqlDataAdapter和DataSet
代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace test
{
class Program
{
static void Main(string[] args)
{
String sqlconn = "Integrated Security=SSPI;database=student;server=.";
String sql = "select * from stuInfo";
SqlConnection conn = new SqlConnection(sqlconn);
conn.Open();
//执行SQL语句,返回结果集
SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, conn);
//实例化DataSet
DataSet dataSet = new DataSet();
//将结果集填充到DataSet
dataAdapter.Fill(dataSet, "stuInfo");
//显示数据
try
{
Console.WriteLine("使用SqlDataAdapter和DataSet");
Console.WriteLine("ID/t" + "name/t" + "platform/t/n");
foreach (DataRow pRow in dataSet.Tables["stuInfo"].Rows)
{
Console.Write(pRow["Id"]+"/t");
Console.Write(pRow["name"] + "/t");
Console.Write(pRow["dvpplatform"] + "/t");
Console.WriteLine();
}
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
if (conn != null)
{
conn.Close();
}
}
}
}
}
运行结果
两种方法皆可以访问数据库,个人认为第一种比较直接。
第二种主要用于断开的数据库