本次内容
在上一次的教程中我们已经完成了对于系统功能的分析和系统数据库的设计,从这次教程开始,我们开始着手实现这个小的实战项目,今天我们的主要任务是搭建出这个小系统的一个整体框架。
主要任务
将AdminLTE前台框架移入本系统当中
完成对于数据库操作的工具类
完成一个基本的数据操作类
配置一下整个项目的信息
AdminLTE
解压下载的adminLTE后,我们可以看到这么几个文件
根据官方文档的显示,我们需要将这么几个文件夹引入到我们的项目当中
当然,除了这几个文件夹之外,我们还需要引入bootstrap的源码
在项目中新建一个文件夹,命名为"AdminLTE",并将我们需要的文件都复制粘贴到这个文件夹中
在网站的根目录中新建一个Demo页面,并用adminLTE中的starter.html页面替换该页面的内容:
注意事项
aspx页面头部的那一段标签不可删除
starter.html中body标签内的东西应该全部放到Demo.aspx的form表单中
将原页面中的所有form标签全部替换为div标签
需要修改原页面中所有引用的路径(本案例中将所有的css、js、图片都放到了AdminLTE中所有需要在这些引用路径的前面加上“/AdminLTE/”)
AdminLTE页面结构说明
右键选中Demo.aspx浏览器查看
操作数据库的工具类
需要引入Newtonsoft.Json.dll做一些json的操作
如果需要这个dll的可以在评论上说一声,文章中不能发链接。。。。
上干货
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class MicrosoftSQLServer
{
SqlConnection MSCon;//数据库连接对象
public string ConnectionString;//数据库连接字符串
///
/// 构造方法
///
/// 数据库连接字符串
public MicrosoftSQLServer(string ConnStr)
{
ConnectionString = ConnStr;
MSCon = new SqlConnection(ConnectionString);
}
///
/// 将json字符串转换为字典
///
/// json字符串
/// 字典
void ParametersSerialize(string JSONText, ref Dictionary
DataParameters) {
DataParameters = JsonConvert.DeserializeObject
>(JSONText); }
#region 执行存储过程-返回执行结果(return)值
///
/// 执行存储过程-返回执行结果(return)值
///
///
存储过程名称///
public object Exec_Proc_Result(string ProcName)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(ProcName, MSCon);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter par = new SqlParameter();
par.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(par);
cmd.ExecuteNonQuery();
MSCon.Close();
return par.Value;
}
///
/// 执行带参数的存储过程
///
/// 存储过程名称
/// 参数(json字符串)
///
public object Exec_Proc_Result(string ProcName, string Parameters)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(ProcName, MSCon);
cmd.CommandType = CommandType.StoredProcedure;
Dictionary
DataPars = new Dictionary (); ParametersSerialize(Parameters, ref DataPars);
foreach (var dic in DataPars)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
SqlParameter par = new SqlParameter();
par.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(par);
cmd.ExecuteNonQuery();
MSCon.Close();
return par.Value;
}
///
/// 执行带参数的存储过程
///
/// 存储过程名称
/// 参数(字典)
///
public object Exec_Proc_Result(string ProcName, Dictionary
Parameters) {
MSCon.Open();
SqlCommand cmd = new SqlCommand(ProcName, MSCon);
cmd.CommandType = CommandType.StoredProcedure;
foreach (var dic in Parameters)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
SqlParameter par = new SqlParameter();
par.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(par);
cmd.ExecuteNonQuery();
MSCon.Close();
return par.Value;
}
#endregion
#region 执行查询-返回响应行数
///
/// 执行sql语句
///
/// sql语句
///
public int Execute_NonQuery(string SQLText)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLText, MSCon);
int result = cmd.ExecuteNonQuery();
MSCon.Close();
return result;
}
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 参数(json)
/// 是否为存储过程
///
public int Execute_NonQuery(string SQLText, string Parameters, bool IsProc)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLText, MSCon);
if (IsProc)
{
cmd.CommandType = CommandType.StoredProcedure;
}
Dictionary
DataPars = new Dictionary (); ParametersSerialize(Parameters, ref DataPars);
foreach (var dic in DataPars)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
int result = cmd.ExecuteNonQuery();
MSCon.Close();
return result;
}
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 参数(字典)
///
是否为存储过程///
public int Execute_NonQuery(string SQLText, Dictionary
Parameters, bool IsProc) {
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLText, MSCon);
if (IsProc)
{
cmd.CommandType = CommandType.StoredProcedure;
}
foreach (var dic in Parameters)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
int result = cmd.ExecuteNonQuery();
MSCon.Close();
return result;
}
#endregion
#region 执行查询-返回首行首列
///
/// 执行sql语句
///
/// sql语句
///
public object Execute_Scalar(string SQLText)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLText, MSCon);
object result = cmd.ExecuteScalar();
MSCon.Close();
return result;
}
///
/// 执行sql语句
///
/// sql语句
/// 参数(json)
///
public object Execute_Scalar(string SQLText, string Parameters)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLText, MSCon);
Dictionary
DataPars = new Dictionary (); ParametersSerialize(Parameters, ref DataPars);
foreach (var dic in DataPars)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
object result = cmd.ExecuteScalar();
MSCon.Close();
return result;
}
///
/// 执行sql语句
///
/// sql语句
/// 参数(字典)
///
public object Execute_Scalar(string SQLText, Dictionary
Parameters) {
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLText, MSCon);
foreach (var dic in Parameters)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
object result = cmd.ExecuteScalar();
MSCon.Close();
return result;
}
#endregion
#region 执行查询-返回DataTable数据
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 是否为存储过程
///
public DataTable Execute_Select_ResultTable(string SQLSelectText, bool IsProc)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLSelectText, MSCon);
if (IsProc)
{
cmd.CommandType = CommandType.StoredProcedure;
}
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable result = new DataTable();
sda.Fill(result);
MSCon.Close();
sda.Dispose();
return result;
}
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 参数(json)
/// 是否为存储过程
///
public DataTable Execute_Select_ResultTable(string SQLSelectText, string Parameters, bool IsProc)
{
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLSelectText, MSCon);
if (IsProc)
{
cmd.CommandType = CommandType.StoredProcedure;
}
Dictionary
DataPars = new Dictionary (); ParametersSerialize(Parameters, ref DataPars);
foreach (var dic in DataPars)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable result = new DataTable();
sda.Fill(result);
MSCon.Close();
sda.Dispose();
return result;
}
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 参数(字典)
/// 是否为存储过程
///
public DataTable Execute_Select_ResultTable(string SQLSelectText, Dictionary
Parameters, bool IsProc) {
MSCon.Open();
SqlCommand cmd = new SqlCommand(SQLSelectText, MSCon);
if (IsProc)
{
cmd.CommandType = CommandType.StoredProcedure;
}
foreach (var dic in Parameters)
{
cmd.Parameters.AddWithValue(dic.Key, dic.Value);
}
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable result = new DataTable();
sda.Fill(result);
MSCon.Close();
sda.Dispose();
return result;
}
#endregion
#region 执行查询-返回表的JSON数据
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 是否为存储过程
///
public string Execute_Select_ResultTableJSON(string SQLSelectText, bool IsProc)
{
return JsonConvert.SerializeObject(Execute_Select_ResultTable(SQLSelectText, IsProc));
}
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 参数(json)
/// 是否为存储过程
///
public string Execute_Select_ResultTableJSON(string SQLSelectText, string Parameters, bool IsProc)
{
return JsonConvert.SerializeObject(Execute_Select_ResultTable(SQLSelectText, Parameters, IsProc));
}
///
/// 执行sql语句或存储过程
///
/// sql语句或存储过程名称
/// 参数(字典)
/// 是否为存储过程
///
public string Execute_Select_ResultTableJSON(string SQLSelectText, Dictionary
Parameters, bool IsProc) {
return JsonConvert.SerializeObject(Execute_Select_ResultTable(SQLSelectText, Parameters, IsProc));
}
#endregion
}
数据工具类
继续上干货,这个类现在暂时只有一些操作时间戳的方法,之后会逐步完善(同样需要
Newtonsoft.Json.dll)using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
///
/// 用于数据处理及转换的一些类
///
public class DataTools
{
///
/// 获取当前时间戳
///
///
public string getTimeStamp()
{
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Convert.ToInt64(ts.TotalMilliseconds).ToString();
}
///
/// 将时间戳转为时间
///
/// 时间戳(从DateTime(1970, 1, 1, 0, 0, 0, 0)开始)
///
public string timeStampToDate(string time)
{
DateTime defaultTime = new DateTime(1970, 1, 1, 0, 0, 0);
long defaultTick = defaultTime.Ticks;
long timeTick = defaultTick + Convert.ToInt64(time) * 10000;
//// 东八区 要加上8个小时
DateTime datatime = new DateTime(timeTick).AddHours(8);
return datatime.ToString();//报名时间
}
///
/// 获取当前时间
///
///
public string getDateTime()
{
return timeStampToDate(getTimeStamp());
}
///
/// 把DataTable中的时间戳转为时间
///
/// DataTable
/// 时间戳列的下标
///
public DataTable dataTableTimeStampToDate(DataTable dt, int temp)
{
DataTable dt_result = new DataTable();
for (int i = 0; i < dt.Columns.Count; i++)
{
dt_result.Columns.Add(dt.Columns[i].ColumnName);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt_result.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j == temp)
{
string time = timeStampToDate(dt.Rows[i][j].ToString());
dr[j] = time;
continue;
}
dr[j] = dt.Rows[i][j].ToString();
}
dt_result.Rows.Add(dr);
}
return dt_result;
}
}
配置项目信息
在Web.config文件中添加下面的信息
新建一个类,SystemInfo,将刚才添加到配置文件中的信息读入到程序中
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
///
/// SystemInfo 的摘要说明
///
public class SystemInfo
{
public static string systemName = ConfigurationManager.AppSettings["SystemName"].ToString();
public static string developer = ConfigurationManager.AppSettings["Developer"].ToString();
public static string version = ConfigurationManager.AppSettings["Version"].ToString();
public static string conString = ConfigurationManager.AppSettings["ConString"].ToString();
public SystemInfo()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
让我们把这些配置信息加入到刚才的Demo页面中
方法:以这样标签的信息输出到相应的位置
到此,基本的框架就已经搭建完成了
最后的话
今天的教程完成了图书管理系统项目框架的搭建,一些关键的和常用的方法我们都已经封装成了类,更便于之后的开发,在接下来的教程中我们会逐步的利用这些方法以及之前所学习的东西来完成这个系统~~~
今天的教程就到这里了,有需要源码参考或是有别的什么需要的可以在评论那给我留言~~
閱讀更多 騎著豬豬的CodeMonkey 的文章