asp.net实例:毕业选导师功能tips

 

2011-12-07:

 

经过昨天晚上的学生选择,发现教师已选学生数量和实际选择学生的数量不一致的问题(应该使用事务来管理吧?),上午排查时使用的下面的sql语句进行测试、修改:

计算每个教师已经选择的学生数
select sdchoose.TID, Count(SXH) as SJXZXSS
from sdchoose  group by sdchoose.TID

显示教师实际选择和允许选择数不同的教师信息
select sdteacher.TID,sdteacher.TXM,YDXS,VRSJXZXSS.SJXZXSS
from sdteacher,VRSJXZXSS
where sdteacher.TID=VRSJXZXSS.TID and sdteacher.YDXS != VRSJXZXSS.SJXZXSS


计算已经选择导师的学生人数:

select count(SXH) as 实际选择导师的学生数 from sdchoose
(显示结果为236、275)

显示sdchoose表中所有学生学号
select * from sdchoose order by SXH

显示为已经选择导师的学生数:(在sdstudentbiye_2012中标注为选择了,但是在sdchoose中没有)
()

还不错,sdchoose表和sdstudentbiye_2012表中的数据是吻合的


修改YDXS数和SJXZXSS相同的sql语句如下:
测试:
update sdteacher
set YDXS=VRSJXZXSS.SJXZXSS
from sdteacher , VRSJXZXSS
where sdteacher.TID = VRSJXZXSS.TID and VRSJXZXSS.TID=11

 

2011-11-19:

DFDF6-Y768C-BJX4R-VW968-WH67Q

 

昨天在学校配置服务器,配置了一天,网管组要求必须用正版windows2003server、学校指定的防病毒软件,头大,

 

再开启2001年买的DELL PowerEdge 1750 ,那声音之响啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

今天在家里用虚拟机终于配置成功了,

 

把这两天碰到的注意事项回顾如下,为周一的最后工作做准备:

 

注意事项:

1、自己的数据库必须放到SQLServer2005的默认数据库data内,不然会报错的,说只有只读权限。。。

2、开启sqlserver2005的TCP/IP和named pipes功能

3、开启iis对framework的支持(aspnet_regiis -i -enable  这个enable参数太重要了):

iis打开aspx文件时显示无法找到该页

iis 里 html 和 asp 的页面访问都正常,aspx 页面总是报无法找到该页。

前一阵子机器折腾的比较多:公司禁用安全360,说360跟一些公司自身监控之类有冲突,把360卸载,禁用了不少服务。有同事说,framework 4.0 会导致 iis 无法识别 aspx 页面,尝试卸载 vs2010 的beta版。由于是在线安装,本机没有安装程序,控制面板里还卸载不掉。直接删的文件和注册表,一时也找不出原因。

百度一下,找到一个帖子:具体方法就是要重新注册.net2.0,命令是:

  在命令行状态下,切换到.net2.0所在地目录,如:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,然后执行 aspnet_regiis -i -enable,等到安装完毕即可。尝试一下,基本成功,iis 也可以识别aspx文件了。

顺便发现一个卸载framework的工具,由于framework 2.0会在某盘留下安装文件夹,清理电脑的时候,如果不慎当垃圾处理掉了,就会无法正常卸载。工具名字叫 dotnetfx20_cleanup_tool ,百度下就有的下。

 

4、开启sa账户,这个就不用记录了,网上都是了。

 

5、这几个工作都做完之后,在.net中是可以连接到数据库的,应该OK了》》》》》。。。。

 

=============================================================================

 

2011-11-04:

 

今天在徐鹏飞的帮助下把asp.net实例:毕业选导师功能给测试、调配好了,为了防止以后忘掉,把里面的重点给记录下来。

1、web.config.xml

    <connectionStrings>
  <add name="ConnectionString" connectionString="Data Source=PC-201109190753\SQLEXPRESS;Initial Catalog=实例数据库.MDF;Persist Security Info=True;User ID=sa;password=123456"/>
  <add name="ConnectionString2" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\sd2008_Data.MDF;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>


2、更新sdchoose表的时间
UPDATE sdchoose
SET TIME = GETDATE()
WHERE (SXH = 2008058105)

3、"insert into sdchoose(TID,SXH,TIME) values(‘16’,’2008058104’,’2011-11-2 20:35:06’)"
UPDATE sdstudentbiye_2012 SET SXZ='y' where SXH=2008058104


4、SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问

http://www.cnblogs.com/wayne-ivan/archive/2008/01/07/1028759.html
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure


5、excel数据的导入导出(注意冻结窗口)

insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',Sheet1$)
SELECT 学号 as A, 姓名 as B, 性别 as C, 身份证号 as D, 专业 as E, 系别 as F
FROM stu_2008
WHERE (系别 = '资讯管理系') AND (专业 NOT LIKE '%专科%')

把excel   sheet1   第一行设为冻结窗口试试(第一行填上列名)就不会报错了

INSERT INTO sdstudentbiye_2012_2
      (SXH, SXM, SXB, SZY, SXIBIE)
SELECT A, B, C, E, F
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
      'Excel 5.0;HDR=YES;DATABASE=c:\test.xls', sheet1$) AS derivedtbl_1

6、随机密码的产生

public class RandomStr
{

    public const string myVersion = "1.2";

    /********
    *  Const and Function
    *  ********/

    private static readonly int defaultLength = 8;

    private static int GetNewSeed()
    {
        byte[] rndBytes = new byte[4];
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
        rng.GetBytes(rndBytes);
        return BitConverter.ToInt32(rndBytes, 0);
    }

    /********
     *  getRndCode of all char .
     *  ********/

    private static string BuildRndCodeAll(int strLen)
    {
        System.Random RandomObj = new System.Random(GetNewSeed());
        string buildRndCodeReturn = null;
        for (int i = 0; i < strLen; i++)
        {
            buildRndCodeReturn += (char)RandomObj.Next(33, 125);
        }
        return buildRndCodeReturn;
    }

    public static string GetRndStrOfAll()
    {
        return BuildRndCodeAll(defaultLength);
    }

    public static string GetRndStrOfAll(int LenOf)
    {
        return BuildRndCodeAll(LenOf);
    }

    /********
     *  getRndCode of only .
     *  ********/

    private static string sCharLow = "abcdefghijklmnopqrstuvwxyz";
    private static string sCharUpp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private static string sNumber = "0123456789";

    private static string BuildRndCodeOnly(string StrOf, int strLen)
    {
        System.Random RandomObj = new System.Random(GetNewSeed());
        string buildRndCodeReturn = null;
        for (int i = 0; i < strLen; i++)
        {
            buildRndCodeReturn += StrOf.Substring(RandomObj.Next(0, StrOf.Length - 1), 1);
        }
        return buildRndCodeReturn;
    }

    public static string GetRndStrOnlyFor()
    {
        return BuildRndCodeOnly(sCharLow + sNumber, defaultLength);
    }

    public static string GetRndStrOnlyFor(int LenOf)
    {
        return BuildRndCodeOnly(sCharLow + sNumber, LenOf);
    }

    public static string GetRndStrOnlyFor(bool bUseUpper, bool bUseNumber)
    {
        string strTmp = sCharLow;
        if (bUseUpper) strTmp += sCharUpp;
        if (bUseNumber) strTmp += sNumber;

        return BuildRndCodeOnly(strTmp, defaultLength);
    }

    public static string GetRndStrOnlyFor(int LenOf, bool bUseUpper, bool bUseNumber)
    {
        string strTmp = sCharLow;
        if (bUseUpper) strTmp += sCharUpp;
        if (bUseNumber) strTmp += sNumber;

        return BuildRndCodeOnly(strTmp, LenOf);
    }
}


public class radNum
{

    string codeSerial = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,M,L,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9";//这里添加你要随机产生的字符,当然你可以加些数字机去,我在这里只产生大写和小写字母。
    
    //以下东西很简单了,仔细看看就能明白
    public string CodeSerial
    {
        get { return codeSerial; }
        set { codeSerial = value; }
    }
    public string CreateRadNum(int codeLen)
    {

        int Length = 4;
        if (codeLen == 0)
        {
            codeLen = Length;
        }

        string[] arr = CodeSerial.Split(',');

        string code = "";

        int randValue = -1;

        Random rand = new Random(unchecked((int)DateTime.Now.Ticks));

        for (int i = 0; i < codeLen; i++)
        {
            randValue = rand.Next(0, arr.Length - 1);

            code += arr[randValue];
        }

        return code;
    }


    public string RandomNum(int n) //
    {
        string strchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
        string[] VcArray = strchar.Split(',');
        string VNum = "";                    //
        int temp = -1;                       //记录上次随机数值,尽量避免产生几个一样的随机数
        //采用一个简单的算法以保证生成随机数的不同
        Random rand = new Random();
        for (int i = 1; i < n + 1; i++)
        {
            if (temp != -1)
            {
                rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
            }
            int t = rand.Next(61);
            if (temp != -1 && temp == t)
            {
                return RandomNum(n);
            }
            temp = t;
            VNum += VcArray[t];
        }
        return VNum;//返回生成的随机数
    }
}



public partial class sd_changestupwd : System.Web.UI.Page
{
    BaseClass BaseClass1 = new BaseClass();

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strsql = "SELECT * from sdstudentbiye_2012";
        DataTable dt = new DataTable();
        dt = BaseClass1.ReadTable(strsql);
        
            foreach (DataRow row in dt.Rows)
            {
                string sql2 = "UPDATE sdstudentbiye_2012 SET SPWD ='" + RandomStr.GetRndStrOnlyFor(6) +"'" + "  where SXH=" + row["SXH"].ToString().Trim();
                BaseClass1.execsql(sql2);

            }
    }
}

 

7、.netframework的注册:

虽然在IIS里面可以进行下面的设置,但是如果不进行framework的注册,仍然会报错的。

# cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

#aspnet_regiis -i

开始安装 ASP.NET (2.0.50727)。
.............
ASP.NET (2.0.50727)安装完毕。
安装程序检测到操作过程中出现了一些错误。有关详细信息,请查看安装程序日志文件 C:\
DOCUME~1\ADMINI~1\LOCALS~1\Temp\ASPNETSetup_00005.log

 



 

 

 8、Server Application Error

Server Application Error 

The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance. 

访问IIS客户端出现如上错信息提示,

在网上查了查解决方案如下:

1。右键我的电脑--管理--本地用户和组,给IUSR_机器名和IWAM_机器名两个用户设置密码,要一样。  

2。开始--运行--打cmd,  
然后cd D:InetpubAdminscripts(我的系统在D盘),  
然后cscript.exe adsutil.vbs set w3svc/wamuserpass 你的密码,  
然后cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你的密码  

看一下,行了没有?如果还不行,那么  
cscript.exe synciwam.vbs -v,  
然后iisreset。  

据说就可以了,但是到最后一部提示8004e00f的错误,此错误是MSDTC服务不正常造成的,解决方法:

首先进入组件服务,查看组件服务/计算机/我的电脑/COM+应用程序,结果报错“COM+ 无法与 Microsoft 分布式事务协调程序交谈”,无法查看里面的对象。  
2、进入事件查看器,发现msdtc服务没有正常启动。  
3、删除注册表中的键:  
• HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSDTC  
• HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTC  
• HKEY_CLASSES_ROOTCID  
4、停止MSDTC服务:net stop msdtc  
5、卸载MSDTC服务:msdtc -uninstall  
6、重新安装MSDTC服务:msdtc -install  
7、确认在事件查看器中msdtc服务已经正常启动[这步很关键,如果没有,重新启动下电脑看看]  
8、重新设置IIS的IWAM账号密码。[在计算机管理中的用户管理里]  
9、同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:c:inetputadminscripts>adsutil set w3svc/wamuserpass "yourpassword"  
10、同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:c:inetputadminscripts>cscript synciwam.vbs -v  

到这部分网上大部分都说可以了,但是我这里虽然没有8004e00f的错误提示了,但是访问页面Server Application Error 错误依旧,最后终于找到了解决方法如下:

解决办法:
[1]:
检查你的DTC服务(全名:Distributed Transaction Coordinator)是否可以正常启动,

如果正常的话请你跳过此步骤;如果出错,无法正常启动,请在开始菜单的运行中 运行:msdtc -resetlog 以创建日志文件。重起机器,检查IIS是否可以正常使用,若不行继续。

[2]:
在CMD下执行以下命令:
cd %windir%\system32\inetsrv 

rundll32 wamreg.dll, CreateIISPackage 

regsvr32 asptxn.dll

(到这里我就可以用了,不用重启的)

OK,ASP页面一切正常了@!~~~^_^

 

9、Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy

 

http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/6b65866a-10cc-42c8-8277-c9d9cd6c8afe/

 

 

i had the same problem. i got this solved. go to run type regedit.exe
then go here HKLM\System\CurrentControlSet\Control\Lsa\limitblankpassworduse
change from 1 to 0

 

Thank you

Also I found another solution:

goto start->run->control userpasswords2

you can see IUSR_MYSTATION user which is Guest user that could be an IIS user

Reset password to anything except blank... DONE.

 

 10、SQL server用户权限

新建一个用户:sdzxx,

a、需要去掉常规中的强制密码过期

b、用户映射-》指定对应数据库为db_owner

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值