Seringkali kita terbiasa membiarkan proses inisialisasi koneksi database ke Page_Load, padahal hal ini memiliki kelebihan dan kekurangan, kelebihannya adalah cara ini sangat praktis ketika menghadapi masalah unilateral. Ini tidak terlalu berguna dalam situasi ini! Misalnya:
/// Misalnya:
<script bahasa = "C #" runat = "server">
SqlConnection mySqlCon;
dilindungi kekosongan Page_Load(Objek Src,EventArgs E)
{
mySqlCon=new SqlConnection("server=localhost;uid=sa;pwd=sa;database=pubs"); //Proses inisialisasi
jika (!IsPostBack)
BindGrid();
}
public void AddPublisher(Pengirim objek, EventArgs E)
{
String myinsertCmd = "masukkan ke dalam nilai penerbit (pub_id, pub_name, kota, negara bagian, negara) (@pubid,@pubname,@city,@state,@country)";
SqlCommand mySqlCom = new SqlCommand(myinsertCmd, mySqlCon); //Inisialisasi panggilan perintah
//Mencapai kecocokan
mySqlCom.Parameters.Add(new SqlParameter("@pubid", SqlDbType.Char, 4));
mySqlCom.Parameters["@pubid"].Nilai = Pub_Id.Teks;
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 = Kota.Teks;
mySqlCom.Parameters.Add(new SqlParameter("@state", SqlDbType.Char, 2));
mySqlCom.Parameters["@state"].Value = Status.Teks;
mySqlCom.Parameters.Add(new SqlParameter("@country",SqlDbType.VarChar, 30));
mySqlCom.Parameters["@country"].Value = Negara.Teks;
//Buka DB
mySqlCom.Connection.Open();
mySqlCom.ExecuteNonQuery();
Message.InnerHtml = "<b>Catatan ditambahkan</b><br/>";
mySqlCom.Connection.Close();
Pub_Id.Teks = "";
Pub_Name.Teks = "";
Kota.Teks= "";
Negara.Teks = "";
Negara.Teks = "";
BindGrid();
}
//Pemanggilan sub fungsi
kekosongan publik BindGrid()
{
SqlDataAdapter mySqlCom = new SqlDataAdapter("pilih * dari penerbit di mana pub_id menyukai '99%'", mySqlCon);
DataSet myds = DataSet baru();
mySqlCom.Fill(myds, "penerbit");
dgMyGrid.DataSource = myds.Tables["publishers"].DefaultView;
}
</skrip>
<h2>Tambahkan penerbit baru:</h2>
<br/>
ID Penerbit harus dimulai dengan 99 dan berisi 4 digit<br/>
ID Penerbit:
<asp:textbox id="Pub_Id" runat="server" />Nama:
<asp:textbox id="Pub_Name" runat="server" />
Kota:
<asp:textbox id="Kota" runat="server" />
<br/>
Provinsi:
<asp:textbox id="Negara" runat="server" />
Negara:
<asp:textbox id="Negara" runat="server" />
<br/>
<br/>
<asp:button Text="Kirim" OnClick="AddPublisher" runat="server" ID="Button1" /><br/>
<span id="Pesan" runat="server" />
<br/>
<asp:DataGrid id="dgMyGrid" runat="server" />
Contoh ini sekilas tampak baik-baik saja, dan tidak ada kesalahan yang dilaporkan selama proses debug. Namun, setelah menambahkan data ke halaman yang dihasilkan, kesalahan akan dilaporkan kapan mengirimkan, mengatakan bahwa atributnya tidak cocok. Apa penyebabnya? Sebenarnya hal ini disebabkan oleh proses inisialisasi pada saat halaman dimuat, namun disini terdapat masalah yang belum dapat saya pecahkan yaitu karena DB instance telah diinisialisasi pada proses inisialisasi halaman maka seharusnya mungkin untuk langsung menghasilkan aplikasi. , tapi sepertinya tidak! Proses inisialisasi masih perlu dimasukkan ke dalam fungsi tertentu untuk mencapainya! Lihat di bawah:
<<skrip bahasa="C#" runat="server">
dilindungi kekosongan Page_Load(Objek Src,EventArgs E)
{
//Pernyataan IF digunakan secara langsung saat memuat halaman. Faktanya, tidak ada yang ditambahkan!
jika (!IsPostBack)
BindGrid();
}
public void AddPublisher(Pengirim objek, EventArgs E)
{
string strprovider="server=localhost;uid=sa;pwd=sa;database=pubs"; //Bangun proses inisialisasi
SqlConnection mySqlCon=SqlConnection baru(strprovider);
string myinsertCmd ="masukkan ke penerbit ( pub_id, pub_name, kota, negara bagian, negara ) nilai (@pubid,@pubname,@city,@state,@country)";
SqlCommand mySqlCom = new SqlCommand(myinsertCmd,mySqlCon); //Implementasi proses inisialisasi
mySqlCom.Parameters.Add(new SqlParameter("@pubid", SqlDbType.Char, 4));
mySqlCom.Parameters["@pubid"].Nilai = Pub_Id.Teks;
mySqlCom.Parameters.Add(new SqlParameter("@pubname", SqlDbType.VarChar, 40));
mySqlCom.Parameters["@pubname"].Nilai = Pub_Name.Teks;
mySqlCom.Parameters.Add(new SqlParameter("@city", SqlDbType.VarChar, 20));
mySqlCom.Parameters["@city"].Value = Kota.Teks;
mySqlCom.Parameters.Add(new SqlParameter("@state", SqlDbType.Char, 2));
mySqlCom.Parameters["@state"].Value = Status.Teks;
mySqlCom.Parameters.Add(new SqlParameter("@country",SqlDbType.VarChar, 30));
mySqlCom.Parameters["@country"].Value = Negara.Teks;
mySqlCom.Connection.Open();
mySqlCom.ExecuteNonQuery();
Message.InnerHtml = "<b>Catatan ditambahkan</b><br>";
mySqlCom.Connection.Close();
Pub_Id.Teks = "";
Pub_Name.Teks = "";
Kota.Teks= "";
Negara.Teks = "";
Negara.Teks = "";
BindGrid();
}
Saat memanggil sub-fungsi public void BindGrid(), koneksi DB juga harus diinisialisasi.
{
string strprovider="server=dev;uid=sa;pwd=pauperboyboy;database=pubs";
SqlConnection mySqlCon=SqlConnection baru(strprovider);
SqlDataAdapter mySqlCom = new SqlDataAdapter("pilih * dari penerbit di mana pub_id suka '99%'",mySqlCon);
DataSet myds = DataSet baru();
mySqlCom.Fill(myds, "penerbit");
dgMyGrid.DataSource = myds.Tables["publishers"].DefaultView;
dgMyGrid.DataBind();
}
</skrip>
<h2>Tambahkan penerbit baru:</h2>
<br>
ID Penerbit harus dimulai dengan 99 dan berisi 4 digit<br>
ID Penerbit:
<asp:textbox id="Pub_Id" runat="server" />Nama:
<asp:textbox id="Pub_Name" runat="server" />
Kota:
<asp:textbox id="Kota" runat="server" />
<br>
Provinsi:
<asp:textbox id="Negara" runat="server" />
Negara:
<asp:textbox id="Negara" runat="server" />
<br>
<br>
<asp:button Text="Kirim" OnClick="AddPublisher" runat="server" ID="Button1" /><br>
<span id="Pesan" runat="server" />
<br>
<asp:DataGrid id="dgMyGrid" runat="server" />
</form>>
Setelah modifikasi tersebut, kita dapat mencapai peningkatan data secara nyata! Tapi saya juga mencoba menghapus dan memperbarui data. Saat halaman dimuat, halaman tersebut langsung diberi atribut inisialisasi DB, tetapi tidak ada masalah. Terima kasih:)