感觉这里学费是大了点
但是教我们的老师还是很不错的
整天灌输的都是三层结构的思想
何为三层结构 三层结构应该算是未来程序的一个趋势
三层结构三个工程 可以灵活 方便的实现调用
让程序员的编程思想更加规范 更加清晰(当然这是我自己的理解)
这也能让将来在工作中进行团队合作的时候更加的方便 让别人一目了然你做的东西
我一些前辈给我说:从三层结构 和封包意识就能看出一个人的水平
讲讲吧:
1.实体类(包含要使用字段和属性)
这个你最好是属性做的和数据库中存放的字段名一致
当你调用的时候会感觉一切都是这么方便
一定要做到一张表一个实体类
----- 以下为实例----------:
using System;
using System.Collections.Generic;
using System.Text;
namespace WindowsApplication1.Modle
{
public class Music
{
int _Id;
/// <summary>
/// 歌曲ID(整型)
/// </summary>
public int Id
{
get { return _Id; }
set { _Id = value; }
}
string _MusicName;
/// <summary>
/// 歌曲名(字符串类型)
/// </summary>
public string MusicName
{
get { return _MusicName; }
set { _MusicName = value; }
}
string _Singer;
/// <summary>
/// 歌手名(字符串类型)
/// </summary>
public string Singer
{
get { return _Singer; }
set { _Singer = value; }
}
string _Album;
/// <summary>
/// 歌曲专辑(字符串类型)
/// </summary>
public string Album
{
get { return _Album; }
set { _Album = value; }
}
int _TypeId;
/// <summary>
/// 歌曲类型ID(整型)
/// </summary>
public int TypeId
{
get { return _TypeId; }
set { _TypeId = value; }
}
int _Popularity;
/// <summary>
/// 歌曲人气(整型)
/// </summary>
public int Popularity
{
get { return _Popularity; }
set { _Popularity = value; }
}
string _Path;
/// <summary>
///歌曲在本地存放的路径(字符串类型)
/// </summary>
public string Path
{
get { return _Path; }
set { _Path = value; }
}
}
------以上为实例------
2.数据访问类
这个类干神马事情捏?
答:当然是进行你的数据访问
神马是数据访问?
答:增删改查不知道呀 呵呵对了 和数据挂钩的无非就是增删改查
这个类按以前做会很麻烦 表一多的话自己会很混乱
当然现在就简单咧
比如增加 它返回的类型是什么 那肯定是整型 增加成功的行数
它需要的参数呢 我们可以直接把和它相对应的实体类仍进去
进行数据执行时候参数可以吧我们的实体类里的对应数据字段的属性仍进去
每一张表的增删改查 你可以做成一个独立类
比如增加 它返回的类型是什么 那肯定是整型 增加成功的行数
它需要的是什么 是所有的字段值
using System;
using System.Collections.Generic;
using System.Text;
using WindowsApplication1.Modle;
using System.Data.SqlClient;
using System.Data;
namespace WindowsApplication1.DAL
{
public class MusicService
{
ConnMusicDB connmusic = new ConnMusicDB();
#region 添加音乐数据
/// <summary>
/// 添加音乐数据到数据库
/// </summary>
/// <param name="music">Music实体类对象</param>
/// <returns>(返回类型整型)添加成功数据的行数</returns>
public int AddMusic(Music music)
{
SqlConnection Conn = connmusic.conn();
SqlCommand Comm = Conn.CreateCommand();
Comm.CommandType = CommandType.StoredProcedure;
SqlParameter[] ps ={
new SqlParameter("@MusicName",music.MusicName),
new SqlParameter("@Singer",music.Singer),
new SqlParameter("@Album",music.Album),
new SqlParameter("@TypeId",music.TypeId),
new SqlParameter("@Popularity",music.Popularity),
new SqlParameter("@Path",music.Path)
};
Comm.CommandText = "AddMusic";------------这里我将数据库语句写成了存储过程
Comm.Parameters.AddRange(ps);
Conn.Open();
int x = Comm.ExecuteNonQuery();
Conn.Close();
return x;
}
#endregion
}
}
-----存储过程-------
create procedure AddMusic --添加音乐
@MusicName nvarchar(50),
@Singer nvarchar(50),
@Album nvarchar(50),
@TypeId int,
@Popularity int,
@Path nvarchar(50)
as
insert into dbo.Musices(MusicName, Singer, Album, TypeId, Popularity,Path)values(@MusicName,@Singer,@Album,@TypeId,@Popularity,@Path)
go
----------------------
这样和数据库的字段都一一对应 很爽吧 呵呵
3.业务逻辑类
这个类其实就是个封包 方便调用的类
它干神马事呢 讲数据访问类的方法拿出来封包 方便我们的窗体调用
我要做一个别的数据表业务逻辑类呢 会很方便 ctrl+c一下
只需要改个类名 实例化数据访问类那一步改成我要访问的类
哈哈 下面应该不用说了吧
sing System;
using System.Collections.Generic;
using System.Text;
using WindowsApplication1.DAL;
using WindowsApplication1.Modle;
namespace WindowsApplication1.BLL
{
public class MusicManager
{
//实例化一个数据库访问类
MusicService musicservice = new MusicService();
#region 添加音乐数据
/// <summary>
/// 添加音乐数据到数据库
/// </summary>
/// <param name="music">Music实体类对象</param>
/// <returns>(返回类型整型)添加成功数据的行数</returns>
public int AddMusic(Music music)
{
int x= musicservice.AddMusic(music);
return x;
}
#endregion
}
}
非要添一个的话就是窗体了
窗体干的事情无法就是取窗体控件值 调用业务逻辑类吧那些值添里面
简单的说 三层结构用熟练了 不需要很强的思维逻辑 很清晰的记忆力 你也可以写很复杂的东西