请求,调用数据库, 前后台交互


今天做了点东西,用到的东西比较杂,总结下,以备以后查阅:
1、首先需要将c#连数据库查出的一条记录的每个字段值取出来,我是将这条记录的字段放在了一个数组中,如下:

     string[] Infos=new string[3];
     public Array show2DcodeMsg(string id)
    {
        SqlConnection connection = new SqlConnection(strCon);
        String str = "SELECT ZCCCode,ZCCAddr,OfUserName FROM tbZCCInfo WHERE  ZCCCode=" + id;
        SqlCommand command = new SqlCommand(str, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();   
        SqlDataReader datareader = command.ExecuteReader();
        while(datareader.Read())
        {
            string ZCCCode = datareader["ZCCCode"].ToString();
            string ZCCAddr = datareader["ZCCAddr"].ToString();
            string OfUserName = datareader["OfUserName"].ToString();
            Infos[0] = ZCCCode;
            Infos[1] = ZCCAddr;
            Infos[2] = OfUserName;
        }
        return Infos
     }

我做的是http请求,参数获得是需要在page_load函数中提取,然后调用上面这个函数,大概后台代码是这样的:

protected void Page_Load(object sender, EventArgs e)
    {
        q_id = Request.QueryString["ID"];  
        if (q_id == null || q_id == "")
        {  
            return;
        }
        {
            show2DcodeMsg(q_id);
        }      
    }
   前台的网页需要用到上面获取的Infos[]的值,这里一般都知道要在前台调用后台方法了,方法有ajax和jquery等,最简单的就是<%=方法名%>这种方式了,但是这里问题来了,是要<%=Page_Load(object sender, EventArgs e)%> ?这显然不合适,从参数上来说也能这么传,再说也没有调用Page_load这一说,怎么办呢?我是直接另写了三个方法:
 public string returncode()
    {
        return Infos[0];
    }
    public string returnAddr()
    {
        return Infos[1];
    }
    public string returnName()
    {
        return Infos[2];
    }
这样在前台直接调用这三个方法不就行了。前台代码如下:
    <script type="text/javascript" language="javascript">
           var code="<%=returncode() %>";
           var addr="<%=returnAddr() %>";
           var name="<%=returnName() %>";
       function showInfos()
       {
//           var img123=doucumen.getElementById("imgCar");
//           img123.src="images/"+code+".jpg";
             imgCar.src="images/"+code+".jpg";
             li_num.innerHTML=code;
             li_addr.innerHTML=addr;
             li1.innerHTML=name;    
       }
    </script>
  方法showInfos()是在body的onload里执行。执行结果就是,运行网页,发送请求,查询数据库,返回的字段值直接显示在网页的控件上。

 后面还用到一个asp:Button的一个onclick事件,往服务器里上传数据,asp是服务其空间,只能直接调用后台cs方法,这个比较简单,直接就能调,问题来了:

前台:
<asp:Button ID = "testBtn" Text = "评价" runat = "server" 
                onclick="submit"/>
后台:
  protected void submit(object sender, EventArgs e)
    {
      ...
    }

这是固定的格式,要注意几个地方:

    (1)前台方法名没有括号

    (2)后台方法有参数,并且就这样,我也不知道原因

一开始我前台加括号,后台没参数,感觉太正常不过了,结果报错了

 submit 重载均与委托system.eventHandler不匹配。重载出问题自然就想到参数的问题了,但是不加括号不知道为什么,记住吧。

你可能感兴趣的:(请求,调用数据库, 前后台交互)