C#系列---③在C#中使用ADO.NET技术进行数据库操作(包括增删改查)
发布时间
阅读量:
阅读量
VB与C#机房系统重构关联
相同点分析
1、机房的运作机制保持一致,其核心在于上下机流程以及消费时长计算的逻辑并未发生任何变动。
2、界面的整体排版基本保持相似。
3、数据连接的方式均为通过实例化对象,并借助对象所提供的方法实现连接。
差异特征分析
1、系统耦合度分析
VB模块间关联性较强:所有功能实现代码均集中于单一窗体内部进行编写。
C#模块间关联性较弱:通过引入七层架构模式实现数据交互与传输。
2、面向对象设计与实现
程序设计视角:VB更倾向于采用过程化的设计理念
对象导向特性:C#的重构工作则更加注重对象导向的设计模式
3、数据库连接方式
在模块内部设计一个函数:VB通过调用模块中所构建的ExecuteSQL函数来实现连接操作。
ADO.NET技术的应用:在C#编程语言中,通常借助ADO.NET技术,通过生成连接实例与命令实例的方式完成数据库连接。
在先前的几篇博客文章中,我们已经讲解了三层架构的相关内容,而七层架构则是在三层架构基础上进一步细化和扩展的结构。
ADO.NET数据库连接机制解析


代码展示与实现
1、连接数据库
#region 连接数据库
//1、创建连接字符串(告诉连接哪个服务器,账号密码是什么,查哪个数据表)
//服务器:Data Source=ELSA/SQLS(本机服务器)
//连接的数据库名称:Initial Catalog=charge_sys;
//有的时候改为server=ELSA/SQLS;database=charge_sys;uid=sa;pwd=123456
string constr = @"Data Source=ELSA\SQLS;Initial Catalog=charge_sys;User ID=sa;Password=123456";
//2、创建连接对象
using (SqlConnection conn = new SqlConnection(constr)) //相当于手动调dispose
{
//测试打开连接
//3、打开连接
conn.Open();
Console.WriteLine("打开连接成功");
//4、关闭连接
//conn.dispose()/conn.close()
}
2、向数据库插入一条数据
#region 向数据库中插入一条数据
//1、连接字符串
string constr = @"Data Source=ELSA\SQLS;Initial Catalog=charge_sys;User ID=sa;Password=123456";
//2、创建连接对象
using (SqlConnection con = new SqlConnection(constr))
{
//3、编写sql语句
string sql = "Insert into User_Info values(12,12,'管理员','索隆',12)";
//4、创建一个连接sql语句的对象(命令对象)Sqlcommand,创建的一定要释放,所以用using
using (SqlCommand cmd = new SqlCommand(sql, con)) //参数表示连接语句为sql,连接的哪个对象指定con
{
//5、打开连接
con.Open();
//6、开始执行sql语句
int r = cmd.ExecuteNonQuery();
Console.WriteLine("成功插入了{0}行数据", r);
//cmd.ExecuteNonQuery()这个方法有一个返回值是int类型,表示执行insert,delete,update语句后,所影响的行数。
}
}
#endregion
3、从数据库中删除一条数据
#region 从数据库中删除一条语句
//1、连接字符串
string constr = @"Data Source=ELSA\SQLS;User ID=sa;Password=123456;Initial Catalog=charge_sys;";
//2、创建连接对象
using (SqlConnection con = new SqlConnection(constr))
{
//3、sql语句
string sql = "delete from User_Info where userID=12";
//4、创建SQLCommand对象
SqlCommand cmd = new SqlCommand(sql, con);
//5、打开连接
con.Open();
//6、执行
int r = cmd.ExecuteNonQuery();
Console.WriteLine("成功删除{0}行数据", r);
}
#endregion
4、从数据库中修改一条数据
#region 从数据库中修改一条数据
//1、连接字符串
string constr = @"Data Source=ELSA\SQLS;User ID=sa; Password=123456;Initial Catalog=charge_sys";
//2、创建连接对象
using (SqlConnection con = new SqlConnection(constr))
{
//3、sql语句
string sql = "update User_Info set userID=12,PWD=12 where userID=11";
//4、创建SQLCommand对象
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//5、打开连接
con.Open();
//6、执行
int r = cmd.ExecuteNonQuery();
Console.WriteLine("已成功修改{0}行数据", r);
}
}
5、查询出表的记录条数
#region 查询出表中的记录条数
string constr = @"Data Source=ELSA\SQLS;User ID=sa;Password=123456;Initial Catalog=charge_sys";
using (SqlConnection con = new SqlConnection(constr))
{
string sql = "select count(*) from User_Info";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
con.Open();
Object count = Convert.ToInt32(cmd.ExecuteScalar());
Console.WriteLine("User_Info表中共有{0}行数据",count);
Console.Read();
}
}
#endregion
6、获取多行数据
static void Main(string[] args) //但凡创建对象都在using里创建,这样我们就不用手动释放了。
{
//1、连接字符串
string constr = @"Data Source =ELSA\SQLS;User ID=sa;Password=123456;Initial Catalog=charge_sys";
//2、建立连接对象
using (SqlConnection con = new SqlConnection(constr))
{
//3、sql语句
string sql = "select * from User_Info";
//4、建立命令对象
using (SqlCommand cmd = new SqlCommand(sql, con))
{ //5、打开数据库
con.Open();
//6、读取数据
using (SqlDataReader reader = cmd.ExecuteReader())
{
//通过reader对象一条一条获取数据
//1、在获取数据之前,先判断本次执行查询后,是否查询到了数据
if(reader.HasRows) //如果有数据,则为true,否则为false
{
//2、如果有数据,那么接下来就要一条一条获取数据
while (reader.Read())
{
//获取当前reader指向的数据
//reader.FieldCount可以获取当前查询语句查询出的列的个数
for (int i = 0; i < reader.FieldCount; i++)
{
//通过reader[]索引器可以使用列名来获取列的值
Console.Write(reader[i]+"|");
}
Console.WriteLine();
}
}
else
{
Console.WriteLine("没有查到任何数据!");
}
}
}
}
Console.Read();
}
全部评论 (0)
还没有任何评论哟~
