ASP.NET中使用数据处理插入数据注意的问题
来源:互联网 发布:中信证券编程 编辑:程序博客网 时间:2024/05/22 02:02
很多时候,我们都会习惯将数据库连接的初始化过程交给Page_Load去做,其实这样子有好处也有坏处,好处是单边问题的时候,这种方法很实用,坏处就是遇到多边的问题时,就种情况这不太好用了!例如下面的例子:
///ForExample: <scriptlanguage="C#"runat="server"> SqlConnectionmySqlCon; protectedvoidPage_Load(ObjectSrc,EventArgsE) { mySqlCon=newSqlConnection("server=localhost;uid=sa;pwd=sa;database=pubs");//初始化过程 if(!IsPostBack) BindGrid(); } publicvoidAddPublisher(Objectsender,EventArgsE) { StringmyinsertCmd="insertintopublishers(pub_id,pub_name,city,state,country)values(@pubid,@pubname,@city,@state,@country)"; SqlCommandmySqlCom=newSqlCommand(myinsertCmd,mySqlCon);//初始化命令调用 //实现配套 mySqlCom.Parameters.Add(newSqlParameter("@pubid",SqlDbType.Char,4)); mySqlCom.Parameters["@pubid"].Value=Pub_Id.Text; mySqlCom.Parameters.Add(newSqlParameter("@pubname",SqlDbType.VarChar,40)); mySqlCom.Parameters["@pubname"].Value=Pub_Name.Text; mySqlCom.Parameters.Add(newSqlParameter("@city",SqlDbType.VarChar,20)); mySqlCom.Parameters["@city"].Value=City.Text; mySqlCom.Parameters.Add(newSqlParameter("@state",SqlDbType.Char,2)); mySqlCom.Parameters["@state"].Value=State.Text; mySqlCom.Parameters.Add(newSqlParameter("@country",SqlDbType.VarChar,30)); mySqlCom.Parameters["@country"].Value=Country.Text; //打开DB mySqlCom.Connection.Open(); mySqlCom.ExecuteNonQuery(); Message.InnerHtml="<b>已添加记录</b><br/>"; mySqlCom.Connection.Close(); Pub_Id.Text=""; Pub_Name.Text=""; City.Text=""; State.Text=""; Country.Text=""; BindGrid(); } //子函数调用 publicvoidBindGrid() { SqlDataAdaptermySqlCom=newSqlDataAdapter("select*frompublisherswherepub_idlike'99%'",mySqlCon); DataSetmyds=newDataSet(); mySqlCom.Fill(myds,"publishers"); dgMyGrid.DataSource=myds.Tables["publishers"].DefaultView;dgMyGrid.DataBind(); } </script> <h2>添加一个新的发行者:</h2> <br/> 发行者ID应以99打头,并包含4位数字<br/> 发行者ID: <asp:textboxid="Pub_Id"runat="server"/>姓名: <asp:textboxid="Pub_Name"runat="server"/> 城市: <asp:textboxid="City"runat="server"/> <br/> 省: <asp:textboxid="State"runat="server"/> 国家: <asp:textboxid="Country"runat="server"/> <br/> <br/> <asp:buttonText="提交"OnClick="AddPublisher"runat="server"ID="Button1"/><br/> <spanid="Message"runat="server"/> <br/> <asp:DataGridid="dgMyGrid"runat="server"/> |
这样的例子初初看起来没有问题,调试也没报错,但在生成的页面添加数据后提交时就会报错,说什么属性不配套之类的话。是什么原因造成的呢!其实,这就是初始化过程在页面装载时造成的,但这里有个问题我始终没能搞清楚,就是既然是在页面初始化过程已经初始化过DB实例了,按道理来讲应该可以直接生成套用的啊,但好像没有!还是要把初始化过程放到具体的函数里面才能实现!看下面:
<<scriptlanguage="C#"runat="server"> protectedvoidPage_Load(ObjectSrc,EventArgsE) { //页面装载过程中直接使用IF语句,其实什么也不加! if(!IsPostBack) BindGrid(); } publicvoidAddPublisher(Objectsender,EventArgsE) { stringstrprovider="server=localhost;uid=sa;pwd=sa;database=pubs";//构造初始化过程 SqlConnectionmySqlCon=newSqlConnection(strprovider); stringmyinsertCmd="insertintopublishers(pub_id,pub_name,city,state,country)values(@pubid,@pubname,@city,@state,@country)"; SqlCommandmySqlCom=newSqlCommand(myinsertCmd,mySqlCon);//初始化过程实现 mySqlCom.Parameters.Add(newSqlParameter("@pubid",SqlDbType.Char,4)); mySqlCom.Parameters["@pubid"].Value=Pub_Id.Text; mySqlCom.Parameters.Add(newSqlParameter("@pubname",SqlDbType.VarChar,40)); mySqlCom.Parameters["@pubname"].Value=Pub_Name.Text; mySqlCom.Parameters.Add(newSqlParameter("@city",SqlDbType.VarChar,20)); mySqlCom.Parameters["@city"].Value=City.Text; mySqlCom.Parameters.Add(newSqlParameter("@state",SqlDbType.Char,2)); mySqlCom.Parameters["@state"].Value=State.Text; mySqlCom.Parameters.Add(newSqlParameter("@country",SqlDbType.VarChar,30)); mySqlCom.Parameters["@country"].Value=Country.Text; mySqlCom.Connection.Open(); mySqlCom.ExecuteNonQuery(); Message.InnerHtml="<b>已添加记录</b><br>"; mySqlCom.Connection.Close(); Pub_Id.Text=""; Pub_Name.Text=""; City.Text=""; State.Text=""; Country.Text=""; BindGrid(); } publicvoidBindGrid()子函数调用时同样也要初始化DB连接 { stringstrprovider="server=dev;uid=sa;pwd=pauperboyboy;database=pubs"; SqlConnectionmySqlCon=newSqlConnection(strprovider); SqlDataAdaptermySqlCom=newSqlDataAdapter("select*frompublisherswherepub_idlike'99%'",mySqlCon); DataSetmyds=newDataSet(); mySqlCom.Fill(myds,"publishers"); dgMyGrid.DataSource=myds.Tables["publishers"].DefaultView; dgMyGrid.DataBind(); } </script> <h2>添加一个新的发行者:</h2> <br> 发行者ID应以99打头,并包含4位数字<br> 发行者ID: <asp:textboxid="Pub_Id"runat="server"/>姓名: <asp:textboxid="Pub_Name"runat="server"/> 城市: <asp:textboxid="City"runat="server"/> <br> 省: <asp:textboxid="State"runat="server"/> 国家: <asp:textboxid="Country"runat="server"/> <br> <br> <asp:buttonText="提交"OnClick="AddPublisher"runat="server"ID="Button1"/><br> <spanid="Message"runat="server"/> <br> <asp:DataGridid="dgMyGrid"runat="server"/> </form>> |
经过这样修改后,我们才能在真正意义上实现数据的增加!
- ASP.NET中使用数据处理插入数据注意的问题
- ASP.NET中使用数据处理插入数据注意的问题
- ASP.NET中使用数据处理插入数据注意的问题
- Asp.net中在GridView数据绑定事件中改变显示内容要注意的问题
- ASP.NET数据控件绑定需要注意的问题
- asp.net 中数据的批量插入和更新
- Asp.net中插入脚本传递数据
- ASP.NET中批量插入数据
- asp.net中使用getElementById的注意点
- ASP.NET中Application_Error事件使用注意
- asp.net中使用dropdownlist的问题
- asp.net中dropdownlist使用的问题
- <asp:UpdatePanel中使用下拉时不得不注意的问题
- asp.net关于TextBox.Text的值为空时,将string数据插入到数据库中int数据的问题的解决方法
- ASP.NET MVC中使用OutputCache实现服务器端页面级缓存注意问题
- mysql中含有自增字段数据表插入数据时需注意的问题
- 解决asp.net页面插入数据时权限不足问题
- ASP.NET使用三层架构时候注意的问题+基础使用
- 通过探测邮件服务器进行Email地址有效性检验
- 在线学习心法:来自Python初学者的三大困难
- 如何在上传的图片上打自己的文字水印
- ASP.NET的14个热点问题解答
- .NET中如何取得IP或者用户名等信息
- ASP.NET中使用数据处理插入数据注意的问题
- 可以治小病的十种水果
- MFC中的CMenu类
- asp.net实现C#代码加亮显示
- 数据库事务管理(转)
- 如何显示在线人数和所在位置
- ASP.net生成文字图片
- ASP.NET提供文件下载函数
- 一个简单的ASP.NET Forms 身份认证