当前位置:   article > 正文

第五章,人脸识别与管理系统开发之登录窗体实现(密码登录)_wpf人脸识别登录

wpf人脸识别登录

摘要:通过人脸识别与管理系统界面的开发(WinForm界面增强,OpenCV-Python智能识别),我将以一个用户登录窗体的两种不同登录验证方式向各位同学介绍如何利用WinForm开发出漂亮的应用程序窗体,为我们后面的各个章节中的窗体开发打下基础。另外也会向各位同学介绍WinForrm窗体如何调用Python程序让OpenCV-Python程序嵌入到我们的登录窗体中,从而实现人脸识别的。博文提供了完整的Python代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。本博文目录如下:

本章节主要介绍的内容如下:

一,如何利用WinForm三层架构(表现层UI,业务逻辑层BLL,数据访问层DAL,实体类Model)实现用户登录。

目录

一,如何利用WinForm三层架构(表现层UI,业务逻辑层BLL,数据访问层DAL,实体类Model)实现用户登录。

1,创建数据库表

2,数据库维护工具 SQLiteStudio

3,实体类Model 创建

4,数据访问层DAL 创建

5,业务逻辑层BLL 创建

6,数据库操作帮助类

7,UI层调用

8,登录成功后进入主窗体

9,源码分享,教学ppt分享

10,写在最后

========================================================================
1,创建数据库表

        本系统使用的数据库为Sqlite3,创建表 sql如下:

  1. PRAGMA foreign_keys = off;
  2. BEGIN TRANSACTION;
  3. -- Table: UserInfo
  4. CREATE TABLE UserInfo (ID VARCHAR (25) PRIMARY KEY, UserName VARCHAR (50), Pwd VARCHAR (25), Tel VARCHAR (25), Gender VARCHAR (25), Email VARCHAR (50), Idcard VARCHAR (50), Faceinfo VARCHAR (400));
  5. INSERT INTO UserInfo (ID, UserName, Pwd, Tel, Gender, Email, Idcard, Faceinfo) VALUES ('1', 'chenjq', '111111', '13545250214', 'N', '554951056@qq.com', '420982198407189834', NULL);
  6. -- Index: sqlite_autoindex_UserInfo_1
  7. CREATE INDEX sqlite_autoindex_UserInfo_1 ON UserInfo (ID COLLATE BINARY);
  8. COMMIT TRANSACTION;
  9. PRAGMA foreign_keys = on;

2,数据库维护工具 SQLiteStudio

3,实体类Model 创建

  1. /// <summary>
  2. /// UserInfo:实体类(属性说明自动提取数据库字段的描述信息)
  3. /// </summary>
  4. [Serializable]
  5. public partial class UserInfo
  6. {
  7. public UserInfo()
  8. { }
  9. #region Model
  10. private string _id;
  11. private string _username;
  12. private string _pwd;
  13. private string _tel;
  14. private string _gender;
  15. private string _email;
  16. private string _idcard;
  17. /// <summary>
  18. ///
  19. /// </summary>
  20. public string ID
  21. {
  22. set { _id = value; }
  23. get { return _id; }
  24. }
  25. /// <summary>
  26. ///
  27. /// </summary>
  28. public string UserName
  29. {
  30. set { _username = value; }
  31. get { return _username; }
  32. }
  33. /// <summary>
  34. ///
  35. /// </summary>
  36. public string Pwd
  37. {
  38. set { _pwd = value; }
  39. get { return _pwd; }
  40. }
  41. /// <summary>
  42. ///
  43. /// </summary>
  44. public string Tel
  45. {
  46. set { _tel = value; }
  47. get { return _tel; }
  48. }
  49. /// <summary>
  50. ///
  51. /// </summary>
  52. public string Gender
  53. {
  54. set { _gender = value; }
  55. get { return _gender; }
  56. }
  57. /// <summary>
  58. ///
  59. /// </summary>
  60. public string Email
  61. {
  62. set { _email = value; }
  63. get { return _email; }
  64. }
  65. /// <summary>
  66. ///
  67. /// </summary>
  68. public string IdCard
  69. {
  70. set { _idcard = value; }
  71. get { return _idcard; }
  72. }
  73. #endregion Model
  74. }

4,数据访问层DAL 创建

  1. /// <summary>
  2. /// 数据访问类:UserInfo
  3. /// </summary>
  4. public partial class UserInfo
  5. {
  6. public UserInfo()
  7. { }
  8. #region BasicMethod
  9. /// <summary>
  10. /// 得到最大ID
  11. /// </summary>
  12. public int GetMaxId()
  13. {
  14. return DbHelperSQLite.GetMaxID("ID", "UserInfo");
  15. }
  16. /// <summary>
  17. /// 是否存在该记录
  18. /// </summary>
  19. public bool Exists(int ID)
  20. {
  21. StringBuilder strSql = new StringBuilder();
  22. strSql.Append("select count(1) from UserInfo");
  23. strSql.Append(" where ID=@ID ");
  24. SQLiteParameter[] parameters = {
  25. new SQLiteParameter("@ID", DbType.String,25) };
  26. parameters[0].Value = ID;
  27. return DbHelperSQLite.Exists(strSql.ToString(), parameters);
  28. }
  29. /// <summary>
  30. /// 增加一条数据
  31. /// </summary>
  32. public bool Add(Model.UserInfo model)
  33. {
  34. StringBuilder strSql = new StringBuilder();
  35. strSql.Append("insert into UserInfo(");
  36. strSql.Append("UserName,Pwd,Tel,Gender,Email,Idcard)");
  37. strSql.Append(" values (");
  38. strSql.Append("@UserName,@Pwd,@Tel,@Gender,@Email,@Idcard)");
  39. SQLiteParameter[] parameters = {
  40. new SQLiteParameter("@Id", DbType.String,25),
  41. new SQLiteParameter("@UserName", DbType.String,50),
  42. new SQLiteParameter("@Pwd", DbType.String,25),
  43. new SQLiteParameter("@Tel", DbType.String,25),
  44. new SQLiteParameter("@Gender", DbType.String,25),
  45. new SQLiteParameter("@Email", DbType.String,50),
  46. new SQLiteParameter("@Idcard", DbType.String,50)};
  47. parameters[0].Value = model.ID;
  48. parameters[1].Value = model.UserName;
  49. parameters[2].Value = model.Pwd;
  50. parameters[3].Value = model.Tel;
  51. parameters[4].Value = model.Gender;
  52. parameters[5].Value = model.Email;
  53. parameters[6].Value = model.IdCard;
  54. int rows = DbHelperSQLite.ExecuteSql(strSql.ToString(), parameters);
  55. if (rows > 0)
  56. {
  57. return true;
  58. }
  59. else
  60. {
  61. return false;
  62. }
  63. }
  64. /// <summary>
  65. /// 更新一条数据
  66. /// </summary>
  67. public bool Update(Model.UserInfo model)
  68. {
  69. StringBuilder strSql = new StringBuilder();
  70. strSql.Append("update UserInfo set ");
  71. strSql.Append("UserName=@UserName,");
  72. strSql.Append("Pwd=@Pwd,");
  73. strSql.Append("Tel=@Tel");
  74. strSql.Append("Gender=@Gender");
  75. strSql.Append("Email=@Email");
  76. strSql.Append("IdCard=@IdCard");
  77. strSql.Append(" where ID=@ID ");
  78. SQLiteParameter[] parameters = {
  79. new SQLiteParameter("@UserName", DbType.String,50),
  80. new SQLiteParameter("@Pwd", DbType.String,25),
  81. new SQLiteParameter("@Tel", DbType.String,25),
  82. new SQLiteParameter("@Gender", DbType.String,25),
  83. new SQLiteParameter("@Email", DbType.String,50),
  84. new SQLiteParameter("@IdCard", DbType.String,50),
  85. new SQLiteParameter("@ID", DbType.String,25)};
  86. parameters[0].Value = model.UserName;
  87. parameters[1].Value = model.Pwd;
  88. parameters[2].Value = model.Tel;
  89. parameters[3].Value = model.Gender;
  90. parameters[4].Value = model.Email;
  91. parameters[5].Value = model.IdCard;
  92. parameters[6].Value = model.ID;
  93. int rows = DbHelperSQLite.ExecuteSql(strSql.ToString(), parameters);
  94. if (rows > 0)
  95. {
  96. return true;
  97. }
  98. else
  99. {
  100. return false;
  101. }
  102. }
  103. /// <summary>
  104. /// 删除一条数据
  105. /// </summary>
  106. public bool Delete(int ID)
  107. {
  108. StringBuilder strSql = new StringBuilder();
  109. strSql.Append("delete from UserInfo ");
  110. strSql.Append(" where ID=@ID ");
  111. SQLiteParameter[] parameters = {
  112. new SQLiteParameter("@ID", DbType.String,25) };
  113. parameters[0].Value = ID;
  114. int rows = DbHelperSQLite.ExecuteSql(strSql.ToString(), parameters);
  115. if (rows > 0)
  116. {
  117. return true;
  118. }
  119. else
  120. {
  121. return false;
  122. }
  123. }
  124. /// <summary>
  125. /// 批量删除数据
  126. /// </summary>
  127. public bool DeleteList(string IDlist)
  128. {
  129. StringBuilder strSql = new StringBuilder();
  130. strSql.Append("delete from UserInfo ");
  131. strSql.Append(" where ID in (" + IDlist + ") ");
  132. int rows = DbHelperSQLite.ExecuteSql(strSql.ToString());
  133. if (rows > 0)
  134. {
  135. return true;
  136. }
  137. else
  138. {
  139. return false;
  140. }
  141. }
  142. /// <summary>
  143. /// 得到一个对象实体
  144. /// </summary>
  145. public Model.UserInfo GetModel(int ID)
  146. {
  147. StringBuilder strSql = new StringBuilder();
  148. strSql.Append("select ID,UserName,Pwd,Tel,Gender,Email,Idcard from UserInfo ");
  149. strSql.Append(" where ID=@ID ");
  150. SQLiteParameter[] parameters = {
  151. new SQLiteParameter("@ID", DbType.String,25) };
  152. parameters[0].Value = ID;
  153. Model.UserInfo model = new Model.UserInfo();
  154. DataSet ds = DbHelperSQLite.Query(strSql.ToString(), parameters);
  155. if (ds.Tables[0].Rows.Count > 0)
  156. {
  157. return DataRowToModel(ds.Tables[0].Rows[0]);
  158. }
  159. else
  160. {
  161. return null;
  162. }
  163. }
  164. /// <summary>
  165. /// 得到一个对象实体
  166. /// </summary>
  167. public Model.UserInfo DataRowToModel(DataRow row)
  168. {
  169. Model.UserInfo model = new Model.UserInfo();
  170. if (row != null)
  171. {
  172. if (row["ID"] != null && row["ID"].ToString() != "")
  173. {
  174. model.ID = row["ID"].ToString();
  175. }
  176. if (row["UserName"] != null)
  177. {
  178. model.UserName = row["UserName"].ToString();
  179. }
  180. if (row["Pwd"] != null)
  181. {
  182. model.Pwd = row["Pwd"].ToString();
  183. }
  184. if (row["Tel"] != null && row["Tel"].ToString() != "")
  185. {
  186. model.Tel = row["Tel"].ToString();
  187. }
  188. if (row["Gender"] != null)
  189. {
  190. model.Gender = row["Gender"].ToString();
  191. }
  192. if (row["Email"] != null)
  193. {
  194. model.Email = row["Email"].ToString();
  195. }
  196. if (row["Idcard"] != null)
  197. {
  198. model.IdCard = row["Idcard"].ToString();
  199. }
  200. }
  201. return model;
  202. }
  203. /// <summary>
  204. /// 获得数据列表
  205. /// </summary>
  206. public DataSet GetList(string strWhere)
  207. {
  208. StringBuilder strSql = new StringBuilder();
  209. strSql.Append("select ID,UserName,Pwd,Tel,Gender,Email,Idcard ");
  210. strSql.Append(" FROM UserInfo ");
  211. if (strWhere.Trim() != "")
  212. {
  213. strSql.Append(" where " + strWhere);
  214. }
  215. return DbHelperSQLite.Query(strSql.ToString());
  216. }
  217. /// <summary>
  218. /// 获取记录总数
  219. /// </summary>
  220. public int GetRecordCount(string strWhere)
  221. {
  222. StringBuilder strSql = new StringBuilder();
  223. strSql.Append("select count(1) FROM UserInfo ");
  224. if (strWhere.Trim() != "")
  225. {
  226. strSql.Append(" where " + strWhere);
  227. }
  228. object obj = DbHelperSQLite.GetSingle(strSql.ToString());
  229. if (obj == null)
  230. {
  231. return 0;
  232. }
  233. else
  234. {
  235. return Convert.ToInt32(obj);
  236. }
  237. }
  238. /// <summary>
  239. /// 分页获取数据列表
  240. /// </summary>
  241. public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
  242. {
  243. StringBuilder strSql = new StringBuilder();
  244. strSql.Append("SELECT * FROM ( ");
  245. strSql.Append(" SELECT ROW_NUMBER() OVER (");
  246. if (!string.IsNullOrEmpty(orderby.Trim()))
  247. {
  248. strSql.Append("order by T." + orderby);
  249. }
  250. else
  251. {
  252. strSql.Append("order by T.ID desc");
  253. }
  254. strSql.Append(")AS Row, T.* from UserInfo T ");
  255. if (!string.IsNullOrEmpty(strWhere.Trim()))
  256. {
  257. strSql.Append(" WHERE " + strWhere);
  258. }
  259. strSql.Append(" ) TT");
  260. strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
  261. return DbHelperSQLite.Query(strSql.ToString());
  262. }
  263. #endregion BasicMethod
  264. }

5,业务逻辑层BLL 创建

  1. public partial class UserInfo
  2.     {
  3.         private readonly DAL.UserInfo dal = new DAL.UserInfo();
  4.         public UserInfo()
  5.         { }
  6.         #region  BasicMethod
  7.         /// <summary>
  8.         /// 得到最大ID
  9.         /// </summary>
  10.         public int GetMaxId()
  11.         {
  12.             return dal.GetMaxId();
  13.         }
  14.         /// <summary>
  15.         /// 是否存在该记录
  16.         /// </summary>
  17.         public bool Exists(int ID)
  18.         {
  19.             return dal.Exists(ID);
  20.         }
  21.         /// <summary>
  22.         /// 增加一条数据
  23.         /// </summary>
  24.         public bool Add(Model.UserInfo model)
  25.         {
  26.             return dal.Add(model);
  27.         }
  28.         /// <summary>
  29.         /// 更新一条数据
  30.         /// </summary>
  31.         public bool Update(Model.UserInfo model)
  32.         {
  33.             return dal.Update(model);
  34.         }
  35.         /// <summary>
  36.         /// 删除一条数据
  37.         /// </summary>
  38.         public bool Delete(int ID)
  39.         {
  40.             return dal.Delete(ID);
  41.         }
  42.         /// <summary>
  43.         /// 删除一条数据
  44.         /// </summary>
  45.         public bool DeleteList(string IDlist)
  46.         {
  47.             return dal.DeleteList(IDlist);
  48.         }
  49.         /// <summary>
  50.         /// 得到一个对象实体
  51.         /// </summary>
  52.         public Model.UserInfo GetModel(int ID)
  53.         {
  54.             return dal.GetModel(ID);
  55.         }
  56.         / <summary>
  57.         / 得到一个对象实体,从缓存中
  58.         / </summary>
  59.         //public Model.UserInfo GetModelByCache(int ID)
  60.         //{
  61.         //    string CacheKey = "UserInfoModel-" + ID;
  62.         //    object objModel = Common.DataCache.GetCache(CacheKey);
  63.         //    if (objModel == null)
  64.         //    {
  65.         //        try
  66.         //        {
  67.         //            objModel = dal.GetModel(ID);
  68.         //            if (objModel != null)
  69.         //            {
  70.         //                int ModelCache = Maticsoft.Common.ConfigHelper.GetConfigInt("ModelCache");
  71.         //                Maticsoft.Common.DataCache.SetCache(CacheKey, objModel, DateTime.Now.AddMinutes(ModelCache), TimeSpan.Zero);
  72.         //            }
  73.         //        }
  74.         //        catch { }
  75.         //    }
  76.         //    return (Maticsoft.Model.UserInfo)objModel;
  77.         //}
  78.         /// <summary>
  79.         /// 获得数据列表
  80.         /// </summary>
  81.         public DataSet GetList(string strWhere)
  82.         {
  83.             return dal.GetList(strWhere);
  84.         }
  85.         /// <summary>
  86.         /// 获得数据列表
  87.         /// </summary>
  88.         public List<Model.UserInfo> GetModelList(string strWhere)
  89.         {
  90.             DataSet ds = dal.GetList(strWhere);
  91.             return DataTableToList(ds.Tables[0]);
  92.         }
  93.         /// <summary>
  94.         /// 获得数据列表
  95.         /// </summary>
  96.         public List<Model.UserInfo> DataTableToList(DataTable dt)
  97.         {
  98.             List<Model.UserInfo> modelList = new List<Model.UserInfo>();
  99.             int rowsCount = dt.Rows.Count;
  100.             if (rowsCount > 0)
  101.             {
  102.                 Model.UserInfo model;
  103.                 for (int n = 0; n < rowsCount; n++)
  104.                 {
  105.                     model = dal.DataRowToModel(dt.Rows[n]);
  106.                     if (model != null)
  107.                     {
  108.                         modelList.Add(model);
  109.                     }
  110.                 }
  111.             }
  112.             return modelList;
  113.         }
  114.         /// <summary>
  115.         /// 获得数据列表
  116.         /// </summary>
  117.         public DataSet GetAllList()
  118.         {
  119.             return GetList("");
  120.         }
  121.         /// <summary>
  122.         /// 分页获取数据列表
  123.         /// </summary>
  124.         public int GetRecordCount(string strWhere)
  125.         {
  126.             return dal.GetRecordCount(strWhere);
  127.         }
  128.         /// <summary>
  129.         /// 分页获取数据列表
  130.         /// </summary>
  131.         public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
  132.         {
  133.             return dal.GetListByPage(strWhere, orderby, startIndex, endIndex);
  134.         }
  135.         /// <summary>
  136.         /// 分页获取数据列表
  137.         /// </summary>
  138.         //public DataSet GetList(int PageSize,int PageIndex,string strWhere)
  139.         //{
  140.         //return dal.GetList(PageSize,PageIndex,strWhere);
  141.         //}
  142.         #endregion  BasicMethod
  143.         #region  ExtensionMethod
  144.         #endregion  ExtensionMethod
  145.     }

6,数据库操作帮助类

  1. /// <summary>
  2. /// 数据访问基础类(基于SQLite)
  3. /// 可以用户可以修改满足自己项目的需要。
  4. /// </summary>
  5. public abstract class DbHelperSQLite
  6. {
  7. //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
  8. public static string connectionString = CreateConnectionString();
  9. public DbHelperSQLite()
  10. {
  11. }
  12. private static string CreateConnectionString()
  13. {
  14. string dbName = ConfigurationManager.AppSettings["SQLiteDB"];
  15. string sqlLitePath = "data source=" + System.Environment.CurrentDirectory + "\\" + dbName + ";version=3";
  16. return sqlLitePath;
  17. }
  18. #region 公用方法
  19. public static int GetMaxID(string FieldName, string TableName)
  20. {
  21. string strsql = "select max(" + FieldName + ")+1 from " + TableName;
  22. object obj = GetSingle(strsql);
  23. if (obj == null)
  24. {
  25. return 1;
  26. }
  27. else
  28. {
  29. return int.Parse(obj.ToString());
  30. }
  31. }
  32. public static bool Exists(string strSql)
  33. {
  34. object obj = GetSingle(strSql);
  35. int cmdresult;
  36. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  37. {
  38. cmdresult = 0;
  39. }
  40. else
  41. {
  42. cmdresult = int.Parse(obj.ToString());
  43. }
  44. if (cmdresult == 0)
  45. {
  46. return false;
  47. }
  48. else
  49. {
  50. return true;
  51. }
  52. }
  53. public static bool Exists(string strSql, params SQLiteParameter[] cmdParms)
  54. {
  55. object obj = GetSingle(strSql, cmdParms);
  56. int cmdresult;
  57. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  58. {
  59. cmdresult = 0;
  60. }
  61. else
  62. {
  63. cmdresult = int.Parse(obj.ToString());
  64. }
  65. if (cmdresult == 0)
  66. {
  67. return false;
  68. }
  69. else
  70. {
  71. return true;
  72. }
  73. }
  74. #endregion
  75. #region 执行简单SQL语句
  76. /// <summary>
  77. /// 执行SQL语句,返回影响的记录数
  78. /// </summary>
  79. /// <param name="SQLString">SQL语句</param>
  80. /// <returns>影响的记录数</returns>
  81. public static int ExecuteSql(string SQLString)
  82. {
  83. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  84. {
  85. using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))
  86. {
  87. try
  88. {
  89. connection.Open();
  90. int rows = cmd.ExecuteNonQuery();
  91. return rows;
  92. }
  93. catch (System.Data.SQLite.SQLiteException E)
  94. {
  95. connection.Close();
  96. throw new Exception(E.Message);
  97. }
  98. }
  99. }
  100. }
  101. /// <summary>
  102. /// 执行多条SQL语句,实现数据库事务。
  103. /// </summary>
  104. /// <param name="SQLStringList">多条SQL语句</param>
  105. public static void ExecuteSqlTran(ArrayList SQLStringList)
  106. {
  107. using (SQLiteConnection conn = new SQLiteConnection(connectionString))
  108. {
  109. conn.Open();
  110. SQLiteCommand cmd = new SQLiteCommand();
  111. cmd.Connection = conn;
  112. SQLiteTransaction tx = conn.BeginTransaction();
  113. cmd.Transaction = tx;
  114. try
  115. {
  116. for (int n = 0; n < SQLStringList.Count; n++)
  117. {
  118. string strsql = SQLStringList[n].ToString();
  119. if (strsql.Trim().Length > 1)
  120. {
  121. cmd.CommandText = strsql;
  122. cmd.ExecuteNonQuery();
  123. }
  124. }
  125. tx.Commit();
  126. }
  127. catch (System.Data.SQLite.SQLiteException E)
  128. {
  129. tx.Rollback();
  130. throw new Exception(E.Message);
  131. }
  132. }
  133. }
  134. /// <summary>
  135. /// 执行带一个存储过程参数的的SQL语句。
  136. /// </summary>
  137. /// <param name="SQLString">SQL语句</param>
  138. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  139. /// <returns>影响的记录数</returns>
  140. public static int ExecuteSql(string SQLString, string content)
  141. {
  142. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  143. {
  144. SQLiteCommand cmd = new SQLiteCommand(SQLString, connection);
  145. SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String);
  146. myParameter.Value = content;
  147. cmd.Parameters.Add(myParameter);
  148. try
  149. {
  150. connection.Open();
  151. int rows = cmd.ExecuteNonQuery();
  152. return rows;
  153. }
  154. catch (System.Data.SQLite.SQLiteException E)
  155. {
  156. throw new Exception(E.Message);
  157. }
  158. finally
  159. {
  160. cmd.Dispose();
  161. connection.Close();
  162. }
  163. }
  164. }
  165. /// <summary>
  166. /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
  167. /// </summary>
  168. /// <param name="strSQL">SQL语句</param>
  169. /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
  170. /// <returns>影响的记录数</returns>
  171. public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
  172. {
  173. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  174. {
  175. SQLiteCommand cmd = new SQLiteCommand(strSQL, connection);
  176. SQLiteParameter myParameter = new SQLiteParameter("@fs", DbType.Binary);
  177. myParameter.Value = fs;
  178. cmd.Parameters.Add(myParameter);
  179. try
  180. {
  181. connection.Open();
  182. int rows = cmd.ExecuteNonQuery();
  183. return rows;
  184. }
  185. catch (System.Data.SQLite.SQLiteException E)
  186. {
  187. throw new Exception(E.Message);
  188. }
  189. finally
  190. {
  191. cmd.Dispose();
  192. connection.Close();
  193. }
  194. }
  195. }
  196. /// <summary>
  197. /// 执行一条计算查询结果语句,返回查询结果(object)。
  198. /// </summary>
  199. /// <param name="SQLString">计算查询结果语句</param>
  200. /// <returns>查询结果(object)</returns>
  201. public static object GetSingle(string SQLString)
  202. {
  203. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  204. {
  205. using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))
  206. {
  207. try
  208. {
  209. connection.Open();
  210. object obj = cmd.ExecuteScalar();
  211. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  212. {
  213. return null;
  214. }
  215. else
  216. {
  217. return obj;
  218. }
  219. }
  220. catch (System.Data.SQLite.SQLiteException e)
  221. {
  222. connection.Close();
  223. throw new Exception(e.Message);
  224. }
  225. }
  226. }
  227. }
  228. /// <summary>
  229. /// 执行查询语句,返回SQLiteDataReader
  230. /// </summary>
  231. /// <param name="strSQL">查询语句</param>
  232. /// <returns>SQLiteDataReader</returns>
  233. public static SQLiteDataReader ExecuteReader(string strSQL)
  234. {
  235. SQLiteConnection connection = new SQLiteConnection(connectionString);
  236. SQLiteCommand cmd = new SQLiteCommand(strSQL, connection);
  237. try
  238. {
  239. connection.Open();
  240. SQLiteDataReader myReader = cmd.ExecuteReader();
  241. return myReader;
  242. }
  243. catch (System.Data.SQLite.SQLiteException e)
  244. {
  245. throw new Exception(e.Message);
  246. }
  247. }
  248. /// <summary>
  249. /// 执行查询语句,返回DataSet
  250. /// </summary>
  251. /// <param name="SQLString">查询语句</param>
  252. /// <returns>DataSet</returns>
  253. public static DataSet Query(string SQLString)
  254. {
  255. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  256. {
  257. DataSet ds = new DataSet();
  258. try
  259. {
  260. connection.Open();
  261. SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection);
  262. command.Fill(ds, "ds");
  263. }
  264. catch (System.Data.SQLite.SQLiteException ex)
  265. {
  266. throw new Exception(ex.Message);
  267. }
  268. return ds;
  269. }
  270. }
  271. #endregion
  272. #region 执行带参数的SQL语句
  273. /// <summary>
  274. /// 执行SQL语句,返回影响的记录数
  275. /// </summary>
  276. /// <param name="SQLString">SQL语句</param>
  277. /// <returns>影响的记录数</returns>
  278. public static int ExecuteSql(string SQLString, params SQLiteParameter[] cmdParms)
  279. {
  280. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  281. {
  282. using (SQLiteCommand cmd = new SQLiteCommand())
  283. {
  284. try
  285. {
  286. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  287. int rows = cmd.ExecuteNonQuery();
  288. cmd.Parameters.Clear();
  289. return rows;
  290. }
  291. catch (System.Data.SQLite.SQLiteException E)
  292. {
  293. throw new Exception(E.Message);
  294. }
  295. }
  296. }
  297. }
  298. /// <summary>
  299. /// 执行多条SQL语句,实现数据库事务。
  300. /// </summary>
  301. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SQLiteParameter[])</param>
  302. public static void ExecuteSqlTran(Hashtable SQLStringList)
  303. {
  304. using (SQLiteConnection conn = new SQLiteConnection(connectionString))
  305. {
  306. conn.Open();
  307. using (SQLiteTransaction trans = conn.BeginTransaction())
  308. {
  309. SQLiteCommand cmd = new SQLiteCommand();
  310. try
  311. {
  312. //循环
  313. foreach (DictionaryEntry myDE in SQLStringList)
  314. {
  315. string cmdText = myDE.Key.ToString();
  316. SQLiteParameter[] cmdParms = (SQLiteParameter[])myDE.Value;
  317. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  318. int val = cmd.ExecuteNonQuery();
  319. cmd.Parameters.Clear();
  320. trans.Commit();
  321. }
  322. }
  323. catch
  324. {
  325. trans.Rollback();
  326. throw;
  327. }
  328. }
  329. }
  330. }
  331. /// <summary>
  332. /// 执行一条计算查询结果语句,返回查询结果(object)。
  333. /// </summary>
  334. /// <param name="SQLString">计算查询结果语句</param>
  335. /// <returns>查询结果(object)</returns>
  336. public static object GetSingle(string SQLString, params SQLiteParameter[] cmdParms)
  337. {
  338. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  339. {
  340. using (SQLiteCommand cmd = new SQLiteCommand())
  341. {
  342. try
  343. {
  344. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  345. object obj = cmd.ExecuteScalar();
  346. cmd.Parameters.Clear();
  347. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  348. {
  349. return null;
  350. }
  351. else
  352. {
  353. return obj;
  354. }
  355. }
  356. catch (System.Data.SQLite.SQLiteException e)
  357. {
  358. throw new Exception(e.Message);
  359. }
  360. }
  361. }
  362. }
  363. /// <summary>
  364. /// 执行查询语句,返回SQLiteDataReader
  365. /// </summary>
  366. /// <param name="strSQL">查询语句</param>
  367. /// <returns>SQLiteDataReader</returns>
  368. public static SQLiteDataReader ExecuteReader(string SQLString, params SQLiteParameter[] cmdParms)
  369. {
  370. SQLiteConnection connection = new SQLiteConnection(connectionString);
  371. SQLiteCommand cmd = new SQLiteCommand();
  372. try
  373. {
  374. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  375. SQLiteDataReader myReader = cmd.ExecuteReader();
  376. cmd.Parameters.Clear();
  377. return myReader;
  378. }
  379. catch (System.Data.SQLite.SQLiteException e)
  380. {
  381. throw new Exception(e.Message);
  382. }
  383. }
  384. /// <summary>
  385. /// 执行查询语句,返回DataSet
  386. /// </summary>
  387. /// <param name="SQLString">查询语句</param>
  388. /// <returns>DataSet</returns>
  389. public static DataSet Query(string SQLString, params SQLiteParameter[] cmdParms)
  390. {
  391. using (SQLiteConnection connection = new SQLiteConnection(connectionString))
  392. {
  393. SQLiteCommand cmd = new SQLiteCommand();
  394. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  395. using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd))
  396. {
  397. DataSet ds = new DataSet();
  398. try
  399. {
  400. da.Fill(ds, "ds");
  401. cmd.Parameters.Clear();
  402. }
  403. catch (System.Data.SQLite.SQLiteException ex)
  404. {
  405. throw new Exception(ex.Message);
  406. }
  407. return ds;
  408. }
  409. }
  410. }
  411. private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, SQLiteParameter[] cmdParms)
  412. {
  413. if (conn.State != ConnectionState.Open)
  414. conn.Open();
  415. cmd.Connection = conn;
  416. cmd.CommandText = cmdText;
  417. if (trans != null)
  418. cmd.Transaction = trans;
  419. cmd.CommandType = CommandType.Text;//cmdType;
  420. if (cmdParms != null)
  421. {
  422. foreach (SQLiteParameter parm in cmdParms)
  423. cmd.Parameters.Add(parm);
  424. }
  425. }
  426. #endregion

   7,UI层调用

  1. //连接sqlite进行身份认证登录
  2. string strUserName = txtUserName.Text;
  3. string strUserPwd = TxtUserPwd.Text;
  4. string strwhere = " UserName = '" + strUserName + "' and Pwd = '" + strUserPwd + "'";
  5. int count = bll.GetRecordCount(strwhere);
  6. if (count > 0)
  7. {
  8. App.frmMain = new FrmMain();
  9. App.qx = 1; //标记一下用户
  10. this.Close(); //关闭登陆窗口
  11. }
  12. else
  13. {
  14. MessageBoxEx.Show("用户不存在,请联系管理员!", "登录认证", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
  15. }

8,登录成功后进入主窗体

  9,源码分享,教学ppt分享

人脸识别与管理系统开发之登录窗体实现-基于sqlite验证(第五章)-C#文档类资源-CSDN下载

10,写在最后

        时间对待所有人都是公平的,是努力让每段人生不同。努力,能成全更多小小的梦想,能让你遇见更多可能的自己,能让你在回首时说一句问心无愧。生活会回报真正努力的你。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/894006
推荐阅读
相关标签
  

闽ICP备14008679号