none
简单的sql语句,后台执行没反应? RRS feed

  • 问题

  • ReceivableTable表(用来计算收入的表)有一列 LeaseAssureMoneyR11(11月份押金、int类型), LeaseAssureMoneyR12(12月份押金、int类型)。
        我要实现一个很简单的更新,SQL语句如下:“update ReceivableTable set LeaseAssureMoneyR12= LeaseAssureMoneyR11
        我把ReceivableTable表用ASP.NET做成一个界面,并且在界面上添加了一个Button_LeaseAssureMoney,只要点击这个按钮,就能实现上面的SQL语句功能。下面是我后台的相关代码:

    点击了以后没有反应,估计是我的后台代码少了内容,应该怎么修改呢?请各位帮我看看!谢谢!
    -------------------------------代码1---------------------------------

    protected void Button_LeaseAssureMoney_Click(object sender, EventArgs e)
        {
            string strconn=ConfigurationManager.ConnectionStrings ["长铁物业公司资产数据库ConnectionString"].ToString();
            SqlConnection cn = new SqlConnection(strconn);
            string orderstate = "update ReceivableTable set LeaseAssureMoneyR12= LeaseAssureMoneyR11";
            SqlDataAdapter da = new SqlDataAdapter(orderstate ,cn);
            
        }

       

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2013年1月9日 7:41

答案

全部回复

  • 2013年1月9日 8:38
    版主
  • DataSet ds=new DataSet();
    da.Fill(ds);

    加入以上代码也可以把返回结果填充 不过我看了下你是更新的语句,其实没必要使用sqldataadapter的,按下面写即可。

          


      SqlCommand com = new SqlCommand(orderstate , cn);
            if (cn.State == System.Data.ConnectionState.Closed)
            cn.Open();
    
            com.ExecuteNonQuery();
            cn.Close();


    认真的活,认真的爱!

    2013年1月9日 9:14
    版主
  • 这样也可以:

    protected void Button_LeaseAssureMoney_Click(object sender, EventArgs e)
       
    {
           
    string strconn=ConfigurationManager.ConnectionStrings ["长铁物业公司资产数据库ConnectionString"].ToString();
           
    SqlConnection cn = new SqlConnection(strconn);
           
    string orderstate = "update ReceivableTable set LeaseAssureMoneyR12= LeaseAssureMoneyR11";
            SqlCommand
    da = new SqlCommand(orderstate ,cn);
            using (cn)
              {

                   cn.Open();
                   da.ExecuteNonQuery();
                }
       
    }

    2013年1月10日 1:32
  •     参考各位的提示,我测试成功了!但又发现一个新问题!

    当我点击这个Button_LeaseAssureMoney,数据库中确实更新了,但不能立刻在TextBox_LeaseAssureMoney12中显示出来,我只能用个笨办法:用Response.(该页面)  ,才能显示出更新的数据。

        有什么办法可以直接点击Button_LeaseAssureMoney,可以更新数据库,同时在界面上显示出来么?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2013年1月10日 3:39
  • 正常来说应该从数据库中取值后重新对TextBox_LeaseAssureMoney12的Text赋值,但我觉得你现在的情况用TextBox_LeaseAssureMoney12.Text=LeaseAssureMoneyR11.Text;好像也可以,而且更快捷方便。


    2013年1月10日 4:26
  • 
    int affectNumber = com.ExecuteNonQuery();
    if (affectNumber > 0)
    {
    // 确认更新成功,即可这么操作
    TextBox_xxx12.Text = TextBox_xxx11.Text;
    }
    

    2013年1月10日 5:46
  •     要特别说明一下!最好是直接从SQL中取值,再在界面上显示出来才行!因为界面上只有TextBox_LeaseAssureMoney12,没有TextBox_LeaseAssureMoney11,而且我的更新语句只是个示例!实际的SQL更新语句是添加了一些条件的,所以不能简单使用TextBox_LeaseAssureMoney12.Text=LeaseAssureMoneyR11.Text;

        请问,该怎么修改呢?用Response.write()似乎太笨了,而且还要刷新一次界面,比较慢!

        或者,在page_Load中添加一个脚本,提示用户是否要执行“SQL更新语句:update ReceivableTable set LeaseAssureMoneyR12= LeaseAssureMoneyR11。。。。。。。。 ””,如果用户选择“确定”,那么,界面打开时就把租金自动添加好了。

        不知道哪样比较可行!?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2013年1月10日 6:12
  •     要特别说明一下!最好是直接从SQL中取值,再在界面上显示出来才行!因为界面上只有TextBox_LeaseAssureMoney12,没有TextBox_LeaseAssureMoney11,而且我的更新语句只是个示例!实际的SQL更新语句是添加了一些条件的,所以不能简单使用TextBox_LeaseAssureMoney12.Text=LeaseAssureMoneyR11.Text;

        请问,该怎么修改呢?用Response.write()似乎太笨了,而且还要刷新一次界面,比较慢!

        或者,在page_Load中添加一个脚本,提示用户是否要执行“SQL更新语句:update ReceivableTable set LeaseAssureMoneyR12= LeaseAssureMoneyR11。。。。。。。。 ””,如果用户选择“确定”,那么,界面打开时就把租金自动添加好了。

        不知道哪样比较可行!?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!


    最简单直接的方法就是重新查询下数据库,绑定数据源到你所要显示的表单中。

    认真的活,认真的爱!

    2013年1月10日 6:53
    版主
  • 那就这样:
            String strsql="select LeaseAssureMoneyR12 from ReceivableTable";
            SqlConnection SqlConn = new SqlConnection(WebConfigurationManager.ConnectionStrings["长铁物业公司资产数据库ConnectionString"].ConnectionString);
            SqlDataAdapter adapter = new SqlDataAdapter(strSql, SqlConn);
            DataTable DataTable = new DataTable();
            using (SqlConn)
            {
                SqlConn.Open();
                adapter.Fill(DataTable);
            }
            TextBox_LeaseAssureMoney12.Text= DataTable.Rows[0]["LeaseAssureMoneyR12"].ToString();
           当然strsql中应该加上条件.


    2013年1月10日 7:42
  • 查询完毕直接绑定数据库,但是这样页面依然会以post数据回发。

    所有回复都属原创,如有不清楚的回复请追问。

    2013年1月25日 23:23
    版主
  •     实际上我想要的效果很简单,就是点击Button“生成押金”后,后台修改了数据库,前台同时能类似于AutoPostBack="True"所实现的效果一样,把当前页面重新从数据库再读取一次!是不是必须按照各位大大的方法来做啊?
        重新从数据库中读取数字比较麻烦!

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2013年1月29日 9:06
  • 页面PostBack的时候重新Bind次就可以了。


    认真的活,认真的爱!

    2013年1月29日 13:22
    版主
  •     如何重新Bind呢?以前都是用AutoPostBack="True"属性,还不知道要如何在页面PostBack的时候重新Bind!能否具体说下呢?3Q!

        我的Gridview界面上面有一些DropdownList键,用以选择Gridview显示的条件,会不会在页面PostBack的时候重新Bind时无视我选择的条件,又变成全部显示呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2013年1月31日 1:11
  • 把:

            String strsql="select LeaseAssureMoneyR12 from ReceivableTable";
            SqlConnection SqlConn = new SqlConnection(WebConfigurationManager.ConnectionStrings["长铁物业公司资产数据库ConnectionString"].ConnectionString);
            SqlDataAdapter adapter = new SqlDataAdapter(strSql, SqlConn);
            DataTable DataTable = new DataTable();
            using (SqlConn)
            {
                SqlConn.Open();
                adapter.Fill(DataTable);
            }
            TextBox_LeaseAssureMoney12.Text= DataTable.Rows[0]["LeaseAssureMoneyR12"].ToString();

    写到:protected void Button_LeaseAssureMoney_Click(object sender, EventArgs e)里,点击Button“生成押金”后通过TextBox_LeaseAssureMoney12.Text= DataTable.Rows[0]["LeaseAssureMoneyR12"].ToString();已经对TextBox_LeaseAssureMoney12的值重新绑定了,如果还要对DropdownList重新绑定可以用类似:

    DropDownList.SelectedValue==DataTable.Rows[0]["LeaseAssureMoneyR12"].ToString();
    DropDownList.DataBind();

    同理Gridview.DataBind();来重新对Gridview绑定,总之吧需要重新绑定的放到按钮点击事件中就可以了。

    2013年2月1日 6:26