首页 > 代码库 > 141019●用C#操作SQL数据库
141019●用C#操作SQL数据库
数据库操作:ADO.NET
一、命名空间:
using System.Data;
using System.Data.SqlClient; //针对SqlServer进行优化了的数据访问类的空间
System.Data.OleDB;System.Data.ODBC; //命名空间通用数据访问类的空间。
ODBC——Open DataBase Connection开放式数据互联
二、步骤:
1、建立链接对象——建一个通向数据库的通道。
2、打开通道
3、操作数据库
4、关闭通道
三、类及使用
链接字符串
方法一:server=.;database=mydb;uid=sa;pwd=123
方法二:菜单栏中“视图”→“服务器资源管理器”→右键→“添加连接”→选择“Sql Server”→VS窗口右边的“属性”→“链接字符串”
(一)、链接对象:
SqlConnection:链接数据库的类
1、构造函数:
SqlConnection()
SqlConnection(string connectionString)
2、属性:
ConnectionString:字符串类型,连接字符串
State:连接状态
3、方法:
Open()
Close()
CreateCommand(); //生成一个通过本链接对象来访问数据库的SqlCommand实例。
4、举例
string connectionString = "server=.;database=mydb;uid=sa;pwd=123";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
//操作
conn.Close();
(二)、命令对象
SqlCommand:数据库操作的命令对象
1、构造函数:
SqlCommand(); //推荐
SqlCommand(string sql)
SqlCommand(string sql,SqlConnection conn)
2、属性:
CommandText:字符串类型,要执行的SQL语句、存储过程
CommandType:CommandType枚举类型。CommandType.Text--要执行的是SQL语句(默认);CommandType.StoredProcedure——要执行的是存储过程。
如何调用存储过程?
1.把CommandText赋为存储过程的名。
2.把CommandType赋为CommandType.StoredProcedure
3.使用cmd.Parameters.AddWithValue()为存储过程参数赋值。
Connection:SqlConnection类型,通过哪个链接通道访问数据库
Parameters:对CommandText中的SQLServer局部变量进行赋值或取值
3.方法:
ExecuteNonQuery(); //执行增删改的方法,返回影响的行数。
ExecuteReader(); //用来执行查询的方法,返回SqlDataReader对象,用来执行查询。
ExecuteScalar(); //返回首行首列,一般用来执行统计查询。
int count=(int)ExecuteScalar();
4、举例:
string connectionString = "server=.;database=mydb;uid=sa;pwd=123";
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "Sql语句";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
(三)、读取器对象。在内存中只占一条数据的空间。获取数据库中数据。SqlDataReader
1、构造函数
无法new出来。原因是,它的构造函数是非public的。
它只有一种实例化的方式:SqlDataReader dr = cmd.ExecuteReader();
2、属性
.HasRows //返回bool型数据,判断读取器中是否能读取数据。
3、方法
.Read(); //把数据读取到SqlDataReader对象中来。如果读取成功,返回true;否则返回false。
dr.Close(); //关闭读取器。关闭链接时,读取器随之关闭。
dr[“列名”]; //读取内存中当前SqlDataReader对象中的某列数据,读出来的数据是Object类型。
dr[索引号]; //读取内存中当前SqlDataReader对象中的某列数据,读出来的数据是Object类型。
dr.GetString(索引号),dr.Getint(索引号)……
4、举例:
string connectionString = @"server=.\sqlexpress;database=mydb;uid=sa;pwd=sa";
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from info";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine(dr["Code"].ToString()+dr["Name"].ToString());
}
conn.Close();
服务——服务器管理器
装箱(Boxing)
把数据从值类型变成引用类型;把数据从栈空间转型到堆空间。
拆箱(Unboxing)
把数据从引用类型变成值类型;把数据从堆空间转型到栈空间。
int n=19;
object obj=n; //装箱。
n=20;
int m=(int)obj; //拆箱。
坏处:
1、装箱,占空间,占时间,运行慢。
2、拆箱,占用时间,可能出现类型异常。
异常处理
异常,与正常情况有差异,不一定是错误。
try
{
可能会出现异常的代码;
}
[catch[(异常类型 异常对象)]
{
一旦出现异常,将会进入此处,
对错误信息进行处理;
}]
[finally //不论程序是否运行正常,最后一定执行,常用来关闭链接通道。
{
}]
141019●用C#操作SQL数据库