本次內容
在上一次的教程中我們已經完成了對於系統功能的分析和系統數據庫的設計,從這次教程開始,我們開始著手實現這個小的實戰項目,今天我們的主要任務是搭建出這個小系統的一個整體框架。
主要任務
將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 的文章