国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中使用數據處理插入數據注意的問題

2024-07-10 13:04:28
字體:
來源:轉載
供稿:網友
很多時候,我們都會習慣將數據庫連接的初始化過程交給page_load去做,其實這樣子有好處也有壞處,好處是單邊問題的時候,這種方法很實用,壞處就是遇到多邊的問題時,就種情況這不太好用了!例如下面的例子:

/// for example:

<script language="c#" runat="server">
sqlconnection mysqlcon;
protected void page_load(object src,eventargs e)
{
mysqlcon=new sqlconnection("server=localhost;uid=sa;pwd=sa;database=pubs"); //初始化過程
if (!ispostback)
bindgrid();
}
public void addpublisher(object sender, eventargs e)
{
string myinsertcmd = "insert into publishers ( pub_id, pub_name, city, state, country ) values (@pubid,@pubname,@city,@state,@country)";
sqlcommand mysqlcom = new sqlcommand(myinsertcmd, mysqlcon);  //初始化命令調用
//實現配套
mysqlcom.parameters.add(new sqlparameter("@pubid", sqldbtype.char, 4));
mysqlcom.parameters["@pubid"].value = pub_id.text;
mysqlcom.parameters.add(new sqlparameter("@pubname", sqldbtype.varchar, 40));
mysqlcom.parameters["@pubname"].value = pub_name.text;
mysqlcom.parameters.add(new sqlparameter("@city", sqldbtype.varchar, 20));
mysqlcom.parameters["@city"].value = city.text;
mysqlcom.parameters.add(new sqlparameter("@state", sqldbtype.char, 2));
mysqlcom.parameters["@state"].value = state.text;
mysqlcom.parameters.add(new sqlparameter("@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();
}
//子函數調用
public void bindgrid()
{
sqldataadapter mysqlcom = new sqldataadapter("select * from publishers where pub_id like '99%'", mysqlcon);
dataset myds = new dataset();
mysqlcom.fill(myds, "publishers");
dgmygrid.datasource = myds.tables["publishers"].defaultview; dgmygrid.databind();
}
</script>
<h2>添加一個新的發行者:</h2>
<br/>
發行者 id 應以 99 打頭,并包含 4 位數字<br/>
發行者 id:&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<asp:textbox id="pub_id" runat="server" />姓名:&nbsp;&nbsp;
<asp:textbox id="pub_name" runat="server" />
城市:&nbsp;
<asp:textbox id="city" runat="server" />
<br/>
省:&nbsp;
<asp:textbox id="state" runat="server" />
國家:&nbsp;
<asp:textbox id="country" runat="server" />
<br/>
<br/>
&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:button text="提交" onclick="addpublisher" runat="server" id="button1" /><br/>
<span id="message" runat="server" />
<br/>
<asp:datagrid id="dgmygrid" runat="server" />

這樣的例子初初看起來沒有問題,調試也沒報錯,但在生成的頁面添加數據后提交時就會報錯,說什么屬性不配套之類的話。是什么原因造成的呢!其實,這就是初始化過程在頁面裝載時造成的,但這里有個問題我始終沒能搞清楚,就是既然是在頁面初始化過程已經初始化過db實例了,按道理來講應該可以直接生成套用的啊,但好像沒有!還是要把初始化過程放到具體的函數里面才能實現!看下面:
<<script language="c#" runat="server">
   
   protected void page_load(object src,eventargs e)
   {
   //頁面裝載過程中直接使用if語句,其實什么也不加!
   if (!ispostback)
   bindgrid();
   }   
   public void addpublisher(object sender, eventargs e)
    {
   string strprovider="server=localhost;uid=sa;pwd=sa;database=pubs"; //構造初始化過程
   sqlconnection mysqlcon=new sqlconnection(strprovider);
   string myinsertcmd ="insert into publishers ( pub_id, pub_name, city, state, country ) values (@pubid,@pubname,@city,@state,@country)";
   sqlcommand mysqlcom = new sqlcommand(myinsertcmd,mysqlcon);   //初始化過程實現
   mysqlcom.parameters.add(new sqlparameter("@pubid", sqldbtype.char, 4));
   mysqlcom.parameters["@pubid"].value = pub_id.text;
   mysqlcom.parameters.add(new sqlparameter("@pubname", sqldbtype.varchar, 40));
   mysqlcom.parameters["@pubname"].value = pub_name.text;
   mysqlcom.parameters.add(new sqlparameter("@city", sqldbtype.varchar, 20));
   mysqlcom.parameters["@city"].value = city.text;
   mysqlcom.parameters.add(new sqlparameter("@state", sqldbtype.char, 2));
   mysqlcom.parameters["@state"].value = state.text;
   mysqlcom.parameters.add(new sqlparameter("@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();
   }
    public void bindgrid()  子函數調用時同樣也要初始化db連接
    {
    string strprovider="server=dev;uid=sa;pwd=pauperboyboy;database=pubs";
    sqlconnection mysqlcon=new sqlconnection(strprovider);
    sqldataadapter mysqlcom = new sqldataadapter("select * from publishers where pub_id like '99%'",mysqlcon);
    dataset myds = new dataset();
    mysqlcom.fill(myds, "publishers");
    dgmygrid.datasource = myds.tables["publishers"].defaultview;
    dgmygrid.databind();
    }
   </script>
   <h2>添加一個新的發行者:</h2>
   <br>
   發行者 id 應以 99 打頭,并包含 4 位數字<br>
   發行者 id:&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
   <asp:textbox id="pub_id" runat="server" />姓名:&nbsp;&nbsp;
   <asp:textbox id="pub_name" runat="server" />
   城市:&nbsp;
   <asp:textbox id="city" runat="server" />
   <br>
   省:&nbsp;
   <asp:textbox id="state" runat="server" />
   國家:&nbsp;
   <asp:textbox id="country" runat="server" />
   <br>
   <br>
   &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   <asp:button text="提交" onclick="addpublisher" runat="server" id="button1" /><br>
   <span id="message" runat="server" />
   <br>
   <asp:datagrid id="dgmygrid" runat="server" />
  </form>>

經過這樣修改后,我們才能在真正意義上實現數據的增加!但我也試了數據的刪除和更新,在頁面裝載時直接賦于其初始化db屬性卻沒有問題,不知道是什么原因,知道的人給提個醒哦!謝謝 :)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州市| 新野县| 印江| 阿合奇县| 龙门县| 辛集市| 巧家县| 夹江县| 巴东县| 十堰市| 曲阜市| 梁山县| 黄陵县| 延津县| 聂拉木县| 丹江口市| 南岸区| 千阳县| 大理市| 莱西市| 无为县| 昭通市| 丹凤县| 南溪县| 垫江县| 商都县| 分宜县| 石台县| 泸州市| 尤溪县| 庆城县| 彰化市| 电白县| 方城县| 广元市| 自治县| 盐城市| 蓬安县| 含山县| 兰坪| 宁乡县|