很简单的企业管理器---我写程序的方式,几个自定义控件。

这里呢我利用我常用的东东写个实例,抛砖引玉,大家也都来批批,帮助我提高嘛。 我常用的呢是 数据访问层(简单理解是SQLHelp,但是绝不等于)、分页控件等自定义控件、UserControl等。 实例呢就是做一个很简单的“企业管理器”,等等,不要想的太远,我没想做那么大,我只想达到如下几个功能即可。 1、显示SQL里面的数据库名。 2、根据选择的数据库名显示数据库里的表名。 3、选择一个表然后以分页的方式显示数据。 4、对数据可以进行查询。(不好意思,还没完成) 5、对选择的数据可以编辑,可以添加、删除数据。(不好意思还是没有完成)。 ps: 什么?您问,还有两项没有完成就赶往外发?说实在的,代码在上个星期日就写完了,可是上不了网,就一直延误下来了。我想还是先发出来,然后再打不定吧,呵呵。如果大家都不感兴趣呢,那我也就省事了。 先发一个效果图吧。

图片是以NorhWind数据库里的Orders表为例。 环境介绍 对照环境:使用数据库作持久化的项目。 数据库:SQL2000 、SQL2005 。SQL2008 还没有安装,所以不知道是否支持 编程语言:Asp.net(C#)。B/S 代码行数:150多行(/zh/Default.aspx得后置代码,目前的功能)。 基本上没有OO,顶多也就是基于OO。其实还是面向过程的思路,代码有点乱,还没有整理。 基本上是一层的,但是也不是说没有分层。粉煤分层的就不讨论了,没有甚么意义,呵呵。 优点: 1、代码少,我觉得代码少意味着开发速度快,好维护。 2、利用一个控件来实现分页的功能,而要实现这个分页功能不需要在数据库里添加存储过程,只需要给分页控件设置几个属性就可以了。 3、分页效率高,如果谁有海量数据可以来测试一下。 4、读取SQL 里的数据库名、表名、字段名的方法。(可能您早就知道了) 不足: 不好意思分页控件的详细用法还没有写呢。明天补充。 另外是用VS2003写的,还没有升级到VS2005 。不过数据库倒是可以用SQL 2005 。 另外把代码拷到VS2005里面也是可以正常运行的吧。 下面不知道该写点什么了,先这样吧,呵呵。 对了忘记上传文件了。 http://files.cnblogs.com/jyk/ys.rar 分页控件的源码。 http://www.naturefw.com

(一开始的写错了,现已更正,多谢 “被你烧了”  提醒) 还是直接发个源码吧。

//实例化数据访问层
        DataAccessLayer dal = new DataAccessLayer();
        //连接master数据库
        DataAccessLayer dal_DB = new DataAccessLayer();
        
        #region 控件
        protected HBS.Controls.HBSTextBox Txt_SA;
        protected HBS.Controls.HBSTextBox Txt_PWD;
        protected HBS.Controls.HBSDropDownList Lst_DB;
        protected HBS.Controls.HBSPage Page1;
        protected HBS.Controls.HBSTextBox Txt_SL;
        protected System.Web.UI.WebControls.DataGrid DG;
        protected System.Web.UI.WebControls.Button Btn_Open;
        protected System.Web.UI.WebControls.DataList DL;
        #endregion
        
        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            Response.Cache.SetNoStore();
            Page1.PubShowDataObject = DG;        //设置显示数据的控件,还可以是DataList、Repeater 等。
            if (Page.IsPostBack)
            {
                if (Lst_DB.Items.Count > )
                {
                    //设置分页控件的连接字符串。
                    string conn = GetConnString(Lst_DB.SelectedItem.Text);
                    Page1.PubConnString = conn ;
                    dal.cnString = conn;
                }
            }
        }
    
        #region 打开系统数据库,以提取数据库名称的信息
        private void Btn_Open_Click(object sender, System.EventArgs e)
        {
            dal_DB.cnString = GetConnString("master");

            //显示数据库里的表名
            Lst_DB.DataSource = dal_DB.RunSqlDataTable("select dbid as id,[name] as txt from sysdatabases ");
            Lst_DB.DataBind();
        }
        #endregion

        #region 根据数据库名显示数据库里的表。
        private void Lst_DB_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            //根据数据库名显示数据库里的表。
            dal.cnString = GetConnString(Lst_DB.SelectedItem.Text);

            //显示数据库里的表名
            string sql = "SELECT id, [name], xtype FROM dbo.sysobjects WHERE (xtype = 'u') AND (name <> N'dtproperties') order by [name]";
            DL.DataSource = dal.RunSqlDataTable(sql);
            DL.DataBind();
        }
        #endregion
    
        #region 根据选择地表名设置分页控件
        private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
        {
            #region 提取排序字段的信息
            //分页显示表里的数据
            string TableName = e.CommandArgument.ToString();
            //查找表里的主键
            string sql = "SELECT  top 1 tbl.name AS TableName, tbl.xtype AS TableType, col.name AS FieldName," 
                + " tt.name AS FieldType, col.length AS FieldLength"
                + " FROM dbo.syscolumns col INNER JOIN"
                + " dbo.sysobjects tbl ON col.id = tbl.id INNER JOIN"
                + " dbo.systypes tt ON col.xtype = tt.xtype"
                + " WHERE (tbl.name = '"+ TableName +"') order by col.colorder ";
        
            #endregion
 
            string[] str = dal.RunSqlStrings(sql);
            if (dal.ErrorMsg.Length >)
            {
                Response.Write(dal.ErrorMsg);
                return ;
            }

            if (str != null)
            {
                //设置分页控件
                Page1.SqlTableNames = TableName;        //表名或者视图名
                Page1.SqlColumns  = "*";                //显示的字段
                Page1.SqlOrderColumn = str[];            //排序字段
                Page1.SqlOrderColumnKind = "string";    //排序字段的类型
                Page1.SqlPageSize  = ;                //一页的记录数
                Page1.IsOrderDesc = true;                //是否倒序

                Page1.CreateQuery() ;                    //创建SQL语句
                Page1.BindFirstPage();                    //绑定第一页的数据
            }

        }
        #endregion
    
        #region 获取连接字符串
        private string GetConnString(string DbName)
        {
            //处理数据库的实例名
            string ShiLi = "";
            if (this.Txt_SL .TextTrimNone.Length ==)
                ShiLi = ".";
            else
                ShiLi = ".\\" + this.Txt_SL.TextTrimNone;

            //修改连接字符串
            return "data source="+ ShiLi +";initial catalog="+ DbName +";persist security info=False;user id="+ this.Txt_SA.TextTrimNone +";pwd="+ this.Txt_PWD.TextTrimNone  +";";
            
        }
        #endregion

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Ryan Miao

安装好centOS5.5 后中文乱码

1.网页浏览的中文乱码 [root@localhost ~]# yum install fonts-chinese 下载完毕后,浏览器可以浏览中文网页。 2.应...

3329
来自专栏Java学习123

powerdesigner 15 如何导出sql schema

3287
来自专栏杨建荣的学习笔记

由一条报警信息发现的一系列问题(r7笔记第67天)

今天看到一条报警短信,提示是某个表空间的问题。 ZABBIX-监控系统: ------------------------------------ 报警内容:...

3629
来自专栏c#开发者

DataGrid和CheckBox的混合使用

我们知道DataGrid是非常强大的一个ASP.NET组件,我们可以用它表示非常丰富的信息.在论坛里经常可以看见一些网友问一些关于该控件的问题,我虽不是什么高手...

3599
来自专栏依乐祝

.NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了

上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能。今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码...

1553
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统-分配角色给用户

由于之前做了将权限赋给角色,还需要做将角色组赋给用户,和将用户赋给角色组,一个用户可以拥有多个角色组,一个角色组包含多个用户,打开模块管理,添加一个分配的操作码...

2265
来自专栏hbbliyong

初识SqlLite ---.net连接数据库

  Sqlite 是一款轻量级的关系型数据库,以小巧和嵌入式闻名。以前只是听说,现在终于忍不住要尝试下.本文的初衷是为.net平台的使用者提供帮助。 Sqlit...

3918
来自专栏更流畅、简洁的软件开发方式

【自然框架】分享 n级联动下拉列表框

特点: 1、 使用js方法,把需要的数据一次性写入到页面里,然后用js来实现联动的效果。 2、 支持n级。 3、 封装成了服务器控件,所以使用非常简单。 4、 ...

4267
来自专栏蓝天

MySQL数据导入导出方法与工具mysqlimport

mysqlimport位于mysql/bin目录中,是mysql的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数以及大量的选项可...

1883
来自专栏乐沙弥的世界

Linux/Unix shell 监控Oracle实例(monitor instance)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,A...

891

扫码关注云+社区

领取腾讯云代金券