C#使用SQLSugar操作oracle的一些坑

1.創建Oracle數據庫
开始-程序-Oracle-配置和移置工具-Database Configuration Assistant...(根据需要进行配置直到完成创建)
如遇到“...要求在当前oracle主目录中配置监听程序”問題,在打开windows任务管理器——服务——找到OracleListener(OracleOraDb11g_home1TNSListener)右击点击重新启动,要是没有该服务,则以管理员身份运行cmd,然后输入“lsnrctl start”开启;

更多创建数据库的问题:http://sz.togogo.net/news/3339.html
2.PL/SQL连接oracle数据库(这一步仅仅是为了测试数据库是否能正常连接)
开始-程序-Oracle-配置和移置工具-網絡組態輔助工具
本地Net服务名配置——添加(服务名一般是刚刚创建的全局数据库名)——主机名(localhost)——测试登录:登录用户(sys,system,dbsnmp,sysman),口令(刚刚创建数据库的口令)
账号被锁(lock):https://www.cnblogs.com/qilin20/p/12400773.html

3.创建winform程序,添加引用

NuGet程序包:SqlSugar,Newtonsoft.Json,Oracle.ManagedDataAccess

4.Sqlhelp类

        public SqlSugarClient db;
        public Sqlhelp()
        {
            //ManagedDataAccess.dll 未安装或者版本冲突, 按下面步骤操作即可 1、从Nuget卸载所有项目的ManagedDataAccess.dll和SqlSugar,用Nuget重新安装即可,如果还报错在最上层 WBE层 用NUGET安装
            db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "Data Source=localhost:1521/test;User ID=lmttlw;Password=lmttlw",//也可用127.0.0.1替换localhost
                DbType = DbType.Oracle,//设置数据库类型
                IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放
                InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息
            });
        }

5.增刪改查

        #region 查询
        /// <summary>
        /// 查询所有
        /// </summary>
        /// <returns></returns>
        public List<STUDENT> QueryAll()
        {
            var list = db.Queryable<STUDENT>().OrderBy(t => t.ID).ToList();
            return (List<STUDENT>)list;
        }
        /// <summary>
        /// 根据主键查询
        /// </summary>
        /// <param name="pkvalue"></param>
        /// <returns></returns>
        public STUDENT QueryFromPkvalue(decimal pkvalue)
        {
            var student = db.Queryable<STUDENT>().InSingle(pkvalue);
            return student;
        }
        /// <summary>
        /// 根据条件查询
        /// </summary>
        /// <param name="Model"></param>
        /// <returns></returns>
        public List<STUDENT> QueryInSingle(STUDENT Model)
        {
            var getByWhere = db.Queryable<STUDENT>().Where(
                o => o.ID == Model.ID &&
                o.NAME == Model.NAME &&
                o.SEX == Model.SEX &&
                o.AGE == Model.AGE
                ).ToList();
            return getByWhere;
        }
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <returns></returns>
        public List<STUDENT> QueryToPageList(STUDENT Model, ref int total)
        {

            var getPage = db.Queryable<STUDENT>().Where(o => o.ID == Model.ID).ToPageList(1, 2, ref total);
            return getPage;
        }
        #endregion

        #region 新增
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="studentModel"></param>
        /// <returns></returns>
        public bool Insert(STUDENT studentModel)
        {
            /*插入*/
            //连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,实在找不到原因请先Google错误信息:'server' 是无效的连接字符串属性.
            return db.Insertable(studentModel).ExecuteCommand() > 0;
            //更多插入用法 http://www.codeisbug.com/Doc/8/1130
        }
        #endregion

        #region 删除
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="pkvalue">主键</param>
        /// <returns></returns>
        public bool Delete(decimal pkvalue)
        {
            return db.Deleteable<STUDENT>(pkvalue).ExecuteCommand() > 0;
        }
        #endregion

        #region 修改
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="pkvalue">主键</param>
        /// <param name="studentModel"></param>
        /// <returns></returns>
        public bool Update(STUDENT studentModel)
        {
            return db.Updateable(studentModel).ExecuteCommand() > 0;
        }
        #endregion

        #region Model
        /// <summary>
        /// 生成Model
        /// </summary>
        /// <returns></returns>
        public string CreateModel()
        {
            try
            {
                string path = FuncHelper.GetPath("Model");
                //path:存放的路径,Common:命名空间
                db.DbFirst.IsCreateDefaultValue().CreateClassFile(path, "Common");
                return "生成Model成功";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
        #endregion
        public static string GetPath(string FolderName)
        {
            string uploadPath = Environment.CurrentDirectory;
            uploadPath = uploadPath.Substring(0, uploadPath.IndexOf("DemoSqlSugar_Form")) + "Common\\" + FolderName;//控制台程序和Windows應用程序
            return uploadPath;
        }

个人感觉挺方便的,那个生成Model直接把所有表都产生了Model实体类,非常的Nice~

猜你喜欢

转载自blog.csdn.net/qq_51502150/article/details/125271317