C#.net Web Service to get data from SQL Server (Visual Studio 2012, SQL Server 2012)

Apakah itu Web Service? Silahkan cari di Google atau dari msdn microsoft sudah lengkap.😀

Secara singkat menurut W3C definisi Web Service:

A web service is a software application identified by a URI, whose interfaces and bindings are capable of being defined, described and discovered as XML.

A web service supports direct interactions with other software agents using XML-based messages exchanged via Internet-based protocols binding.

Disini saya memberikan sedikit contoh membuat Web Service SEDERHANA dengan menggunakan Visual Studio 2012 untuk mengambil data dari SQL Server 2012. Langsung saja.

Pertama, create New Project -> ASP.NET Empty Web Application

Setelah muncul di Solution Explorer kemudian klik kanan di Project tersebut dan Add -> New Item dan pilih di bagian Web – Web Service (dengan ekstensi .asmx). Jika sudah maka akan tampak seperti dibawah ini:

new web service

 

 

 

 

 

 

 

 

Kemudian lakukan test service HelloWorld bawaan Visual Studio dengan klik Run, maka di browser akan tampak service HelloWorld seperti dibawah ini:

ws hello world

 

 

 

 

 

 

 

 

Klik service HelloWorld tersebut sehingga akan masuk ke halaman untuk melakukan Test terhadap service tersebut seperti gambar dibawah ini:

ws hello world invoke

 

 

 

 

 

 

 

 

Klik tombol invoke tersebut maka akan muncul Tag XML Hello World, yang artinya method HelloWorld() diatas dapat dipanggil.

ws hello world xml

 

 

 

 

Langkah selanjutnya adalah membuat satu method getDataAgreement() untuk mengambil data dari Database.

public DataSet getDataAgreement()
{
   SqlConnection conn = new SqlConnection("Server=256CFS0414\\SQLSERVER2012;Database=NORTHWND;User ID=sa;Password=********");
   conn.Open();

   string sql = "SELECT [NoAgreement],[NamaCustomer],[AlamatCustomer],[JumlahAsset],[Keterangan] ";
   sql += " FROM [NORTHWND].[dbo].[DataAgreement] ";

   SqlCommand cmd = new SqlCommand(sql, conn);
   cmd.ExecuteNonQuery();
   SqlDataAdapter da = new SqlDataAdapter(cmd);

   DataSet ds = new DataSet();
   da.Fill(ds);

   conn.Close();

   return ds;
}

 

Simpan dan Rebuild Project, kemudian klik Run Debug, maka tampilan di browser sekarang ada dua service, yaitu HelloWorld dan getDataAgreement.

ws data agreement

 

 

 

 

 

Jika service getDataAgreement tersebut di-invoke maka akan me-return XML yang berisi data-data Agreement.

ws data agreement xml

 

 

 

 

 

 

 

Ini menunjukan service getDataAgreement berhasil mengambil data-data dari Database, selanjutnya membuat suatu aplikasi Web Form yang memanggil service tersebut.

Tambahkan satu Project baru dengan klik solution dan Add -> New Project, pilih ASP.NET Empty Web Application.

Maka pada Solution Explorer akan ada dua project, yang pertama untuk Web Service dan yang kedua untuk Web application, tampak seperti dibawah:

new web app

 

 

 

 

 

 

 

Selanjutnya pada Project WebApplicationNorthwind tambahkan Service Reference dengan cara klik kanan Project dan pilih Add Service Reference, kemudian klik Discover atau masukan manual URL Web Service tadi. Maka akan tampak seperti dibawah ini dan beri nama Namespace-nya.

add svc ref

 

 

 

 

 

 

 

 

 

 

 

Untuk menampilkan data, pada Project Web Application tambahkan Web Form dengan cara klik kanan pada Project, klik Add – Web Form. Disini diberi nama AgreementList.aspx

Halaman AgreementList.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Agreement.aspx.cs" Inherits="WebNorthwind._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
   <head id="Head1" runat="server">
      <title>Getting Data Agreement from WebService</title>
   </head>
   <body>
      <form id="form1" runat="server">
         <div>
            <table>
               <tr>
                  <td>
                     <b>Click for Data Agreement:</b>
                  </td>
                  <td>
                     <asp:Button ID="btnSubmit" runat="server" Text="Get Data Agreement" onclick="btnSubmit_Click" />
                  </td>
               </tr>
            </table>
         </div>
         <div>
            <asp:GridView ID="gvDataAgreement" runat="server" EmptyDataText="No Record Found">
               <RowStyle BackColor="#EFF3FB" />
               <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
               <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
               <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
               <AlternatingRowStyle BackColor="White" />
            </asp:GridView>
         </div>
      </form>
   </body>
</html>

 

Klik kanan pada halaman AgreementList.aspx dan pilih View Code, kemudian buat satu method getDataAgreement() untuk meng-consume Web Service dengan memanggil Web Service Soap Client, sehingga memanggil service getDataAgreement().

protected void getDataAgreement()
{
   ServiceReferenceNorthwind.WebServiceNorthwindSoapClient soapClient = new ServiceReferenceNorthwind.WebServiceNorthwindSoapClient();

   gvDataAgreement.DataSource = soapClient.getDataAgreement();
   gvDataAgreement.DataBind();
}

protected void btnGetDataAgreement_Click(object sender, EventArgs e)
{
   this.getDataAgreement();
}

 

Halaman web AgreementList.aspx ketika dijalankan

agreement list

 

 

 

Kemudian klik Button Get Data Agreement, untuk memanggil service getDataAgreement dan data Agreement akan binding dengan GridView seperti gambar dibawah:

agreement list binding

 

 

 

 

 

 

 

Selesai😀

Posted in .NET, ASP.NET Web, C#, Web Service | Leave a comment

Windows Form C# DataGridView menampilkan data dari SQL Server

Berikut ini adalah langkah-langkah sederhana untuk menampilkan data dari SQL Server kedalam DataGridView di Win Form dengan C#.

Pertama, Create New Project
new project

 

 

 

 

Pilih Windows Form Application
newwinform

 

Tampilan Form and Solution Explorer
tampilanform

 

 

 

 

 

 

Rename Form1 menjadi FormDemo
renameform

 

 

 

 

Pilih DataGridView
pilihdatagridview

 

 

 

 

 

 

Tarik DataGridView kedalam FormDemo
tarikdatagridview

 

 

 

 

 

 

 

Klik DataGridView didalam FormDemo, kemudian klik jendela Properties disebelah kanan Visual Studio, rename nama DataGridView menjadi dataGridViewDemo
renamedatagridview

 

 

 

 

 

 

 

Pada Solution explorer, klik kanan Form Demo kemudian pilih View Code
viewcode

 

 

 

 

 

 

 

 

Tampilan View Code
tampilanviewcode

 

 

 

 

 

 

 

Create File App.config untuk konfigurasi
createappconfig

 

 

 

 

 

 

 

Pilih Application Configuration File
pilihappconfig

 

 

 

 

 

 

 

 

Tampilan App.config di Solution Explorer
tampilanappconfig

 

 

 

 

Tambahkan tag connection string untuk koneksi ke DB SQL Server

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="NorthwindConnString"
      connectionString="Server=256CFS0414\SQLSERVER2012;Database=NORTHWND;User ID=sa;Password=********;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

Create method getConnectionString() untuk mengambil value connection string dari App.config

public string getConnectionString()
{
   return System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnString"].ConnectionString;
}

Create method getData() untuk binding DataGridView

// Binding dataGridView
private void getData()
{
   SqlConnection conn = new SqlConnection(getConnectionString());
   string sql = "SELECT customerid,companyname,contactname,contacttitle,address FROM customers";

   try
   {
      conn.Open();
      SqlCommand cmd = new SqlCommand(sql, conn);

      DataSet ds = new DataSet();
      SqlDataAdapter da = new SqlDataAdapter(cmd);
      da.Fill(ds, "customers");   

      dataGridViewDemo.DataSource = ds.Tables["customers"];
   }
   catch (System.Data.SqlClient.SqlException ex)
   {
      string msg = "Get Data Error: ";
      msg += ex.Message;
      MessageBox.Show(msg);
   }
   finally
   {
      conn.Close();
   }
}

Panggil method getData() pada konstruktor FormDemo

public FormDemo()
{
   InitializeComponent();
   this.getData();		// panggil disini
}

Build project pada Solution Explorer
buildproject

 

 

 

 

 

Klik Run Debug
klikrun

 

 

 

 

Tampilan DataGridView binding DB Customer
tampilandatagridview

Posted in .NET, C#, Win Form | 1 Comment

Contoh Protected di C# .NET

Di pemrograman C# ada satu keyword untuk access modifier, yaitu protected.
Pertama, jika protected diberikan pada suatu class (top class) maka itu tidak bisa dilakukan, protected class hanya bisa diberikan pada inner class/sub class.

Contoh:

public class A
{
    protected class SubA
    {
    }
}

Class yg protected tersebut bisa diakses oleh turunannya (inheritance)

class B
{
    // 'A.SubA' tidak dapat diakses karena level proteksi
    private void cobaAkses(A.SubA a)
    {
    }
}

class B : A
{
    // Bisa
    private void cobaAkses(A.SubA a)
    {
    }
}

Kedua, jika protected diberikan pada variable/method.

Contoh:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        A a = new A();
        B b = new B();

        // Error
        // a.x = 10;  

        // OKE, karena class B ini turunan dari class A
        b.x = 10;
    }
}
Posted in .NET, C# | 4 Comments

ServiceMix 4.2.0 and WebServices (with Maven and Eclipse on Windows)

Apache ServiceMix, adalah container open-source yg terintegrasi menjadi satu, seperti Apache ActiveMQ, Camel, CXF, ODE, Karaf. Untuk lebih jelasnya silahkan buka ServiceMix

Bagaimana memulai ServiceMix?
Kalau mencoba dari tutorial yg ada di tutorial akan terasa membingungkan. Maka cara yg lebih enak adalah memakai IDE Eclipse, persiapkan

1. Download ServiceMix
2. Download Eclipse
3. Install m2 plugin untuk Eclipse

Nah setelah semua sudah di-download, kemudian jalankan langkah2 berikut ini:

1. Jalankan service dari ServiceMix, bisa langsung menuju folder bin dan double-klik servicemix.bat atau buka command prompt kemudian arahkan ke folder ektrak-an dari servicemix, pilih folder bin dan jalankan >servicemix.bat (tinggal enter saja)

2. Buka Eclipse, kemudian pilih File -> Import -> Maven -> Existing Maven Projects
cari folder example dari ServiceMix dan pilih yg “cfx-osgi” kemudian kllik Finish

3. Klik kanan project -> Run -> Maven Install
sebuah file xx.jar akan dicreate oleh Maven, berada di folder “target didalam folder cfx-osgi

4. Copy xx.jar ke dalam folder folder “deploy” di dalam folder ServiceMix home

5. Kembali ke Eclipse, ada sebuah file client.html
buka dengan borwser file tersebut

6. Klik tombol “send”

7. Dan hasilnya kurang lebih seperti ini:
STATUS: 200 (dilanjutkan dgn tag-tag..)

8. jika ingin melihat perbedaannya, coba delete file xx.jar yg tadi berada di dalam folder “deploy”, maka anda akan melihat perbedaannya.

Untuk lebih jelasnya apakah OSGi yg telah dicoba disini lihat saja dari OSGi

😀

Posted in ServiceMix | 4 Comments

Eclipse Helios – Uninstalling a plug-in

Setelah beberapa hari menyiapkan environment untuk project, yg menggunakan IDE Eclipse Helios, ada satu yang saya cari-cari. Bagaimana cara meng-unistall plug-in yang sudah terpasang pada Eclipse.
Caranya sebagai berikut:

Help > About Eclipse > Installation Detail > (Pilih Tab) Installed Software > Pilih plug-in yang akan di-uninstall

Posted in Eclipse Helios, IDE | Leave a comment

How to use the LIMIT parameter in HQL

Jika anda pemakai MySQL pasti sudah tidak asing dengan keyword LIMIT pada query SQL-nya. LIMIT berarti memberi tahu prosesor jumlah record yang diminta, contoh sederhananya jika menginginkan 10 record maka query-nya “SELECT * FROM ms_bakso LIMIT 0, 10” maka hanya akan menampilkan 10 baris macam bakso ditabel.

Tapi bagaimana jika akan menggunakan LIMIT di HQL?

Sayang sekali di HQL tidak ada LIMIT. Maka cara yang harus dipakai adalah meng-query master bakso, kemudian set jumlahnya (jika memakai JAVA) di DAO hibernate-nya.

Begini contoh code-nya, silahkan dicermati..

public List<MsBakso> getBakso() {
    StringBuffer sb = null;
    Session session = null;
    List list = null;

    try {
        StringBuffer sb = new StringBuffer();
        sb.append("from MsBakso");
        session = getCurrentSession();
        /*property setMaxResults(10) mengindikasikan bahwa hanya 10 baris saja yang diminta*/
        list = session.createQuery(stQuery.toString()).setMaxResults(10).list();
    } catch (Exception re) {
        log.error("get failed", re);
    }
    return list;
}

Maka hanya 10 macam bakso yang akan ditampilkan, selamat menikmati😀

Posted in Framework Java, Hibernate, HQL, JEE | 2 Comments

Hacking Android Defcon Las Vegas

Wow ternyata operating system mobile keluaran raksasa Google yg mengarah ke touch screen Android, bisa juga di-hack padahal menggunakan kernel linux.
Hebatnya pada demo yang dilakukan di Defcon Las Vegas, aplikasi hack tersebut akan terinstall tanpa disadarai pemakainya dan akan dapat membaca sms maupun email yang masuk. Namun belum di coba apakah bisa dilakukan di semua Android, percobaan hanya dilakukan di smartphone HTC Legend dan HTC Desire. Hebat hacker-nya😀

sumber

Posted in Android, Computer, Operating System, Umum | 2 Comments

Windows 7 mengalahkan telak Windows Vista

Selamat buat Microsoft karena sistem operasi buatan mereka berhasil menjungkalkan sistem operasi buatan mereka sendiri, ya Wndows 7 hanya perlu 9 bulan untuk 14,5 persen pasar sedangkan Windows Vista (yang saya pakai di laptop) butuh 21 bulan untuk 14,3 persen. Mungkin karena memang Windows 7 lebih ringan sehingga tidak terlalu membutuhkan resource yang terlalu tinggi speknya.
Tapi sampai sekarang sistem operasi yang paling disenangi manusia di bumi adalah Windows XP yg masih di 61,9 persen. Hehe

sumber

Posted in Operating System, Windows | Tagged | Leave a comment

ZK framework: BandBox with DAO HQL (Hibernate Query Language)

Untuk membuat sebuah BandBox pada sebuah halaman .zul, ada beberapa langkah yang harus dilakukan jika nilai yang akan ditampilkan kedalam list adalah nilai yang dinamis, yaitu nilai yang diambil dari query ke database.

Pertama, buat tampilan bandbox disebuah halaman zul.
Dalam membuat sebuah bandbox untuk pencarian intinya ada 3 yaitu bandbox (hasil pilihan dari list), textbox (untuk mengisikan kata kunci) dan listbox (menampilkan hasil pencarian) kemudian beri nama id id-nya. Pada contoh dibawah ini id-nya adalah bndUkuran, txtUkuran, dan lstUkuran.
ZK framework dapat menggunakan code java didalam halaman .zul-nya, yaitu didalam tag “zscript” yang dapat digunakan untuk memakai method2 dalam class java.

Contoh halaman zul

<?page id="SCL009" title="Laporan Stok Barang Jadi"?>
<window id="winLapStokBarangJadi" xmlns:h="http://www.w3.org/1999/xhtml" width="100%"
	onShow="self.detach()" sclass="Float" onCreate="init();">
	<style src="../../include/contoh.css" />
	<zscript>
		import com.contoh.StokBarangJadi;
		import com.contoh.iface.StokBarangJadiController;
		import com.contoh.services.ServiceLocator;
		StokBarangJadiController ctr = ServiceLocator.getBean("stokBarangJadiController");
		StokBarangJadi pojo;

		void init() {
			pojo = new StokBarangJadi(bndUkuran, txtUkuran, lstUkuran);
			ctr.init(pojo);
		}
		void doSearchUkuran() { ctr.doSearchUkuran(pojo); }
		void getUkuran() { ctr.getUkuran(pojo); }
	</zscript>

	<h:table align="center" width="100%" sclass="FormTitle" border="0" cellPadding="0" cellSpacing="0">
		<bandbox readonly="true" id="bndUkuran" width="69%" height="15px" style="font-size:8pt;background-color:#C4D2E2;" onOpen="" tabindex="1">
			<bandpopup class="kotak">
				<vbox>
					<h:table width="400px" align="center" class="block_title" border="0" cellPadding="0" cellSpacing="0">
						<h:tr>
							<h:td width="20%"> </h:td>
							<h:td align="center">
								<h:table width="100%" border="0" cellPadding="0" cellSpacing="0" align="center">
									<h:tr>
										<h:td class="bg_kiri"> </h:td>
										<h:td class="bg_title"> CARI UKURAN </h:td>
										<h:td class="bg_kanan"> </h:td>
									</h:tr>
								</h:table>
							</h:td>
							<h:td width="20%"> </h:td>
						</h:tr>
					</h:table>
					<h:table align="center" cellPadding="3" cellSpacing="0" border="0">
						<h:tr>
							<h:td> UKURAN </h:td>
							<h:td> : </h:td>
							<h:td>
								<textbox class="txtbox_write" id="txtUkuran" width="100%" height="14px" />
							</h:td>
							<h:td valign="bottom">
								<button id="btnCariUkuran" image="/image/button/cari.gif" label="CARI" sclass="button_alt" onClick="doSearchUkuran()" />
							</h:td>
						</h:tr>
					</h:table>
					<separator spacing="3px" />
					<listbox id="lstUkuran" onSelect="getUkuran(); bndUkuran.closeDropdown();" mold="paging" pageSize="10">
						<listhead>
							<listheader style="font-weight:bold;font-size:7pt;text-align:center" label="UKURAN" width="20%" sort="auto" />
							<listheader style="font-weight:bold;font-size:7pt;text-align:center" label="KETERANGAN" width="80%" sort="auto" />
						</listhead>
					</listbox>
				</vbox>
			</bandpopup>
		</bandbox>
	</h:table>
</window>

Kedua, buat pojo untuk mapping object2 zul diatas ke class java.

private Bandbox bndUkuran;
private Textbox txtUkuran;
private Listbox lstUkuran;

/*masukan di konstrkutor dan buat setter dan getternya.. */

Ketiga, buat DAO untuk query master ukuran dari database menggunakan HQL (Hibernate Query Language)

interface

public interface MsUkuranDao {
	public List<MsUkuran> findByNameAndKet(String kataKunci);
}

class

public class MsUkuranDaoHibernate extends HibernateDaoSupport implements MsUkuranDao {
	@SuppressWarnings("unchecked")
	public List<MsUkuran> findByNameAndKet(String kataKunci) {
    	List<MsUkuran> listUkuran = null;
		try {
		    StringBuffer stb = new StringBuffer();
		    stb.append("from MsUkuran mu ");
		    stb.append("where mu.VNamaUkuran like :kataKunci or mu.VKeteranganUkuran like :kataKunci ");
		    Query kueri = getCurrentSession().createQuery(stb.toString()).setString("kataKunci", "%" + kataKunci + "%");
		    listUkuran = (List<MsUkuran>) kueri.list();
		    return listUkuran;
		} catch (Exception e) {
		    log.error("Error findByNameAndKet2(),\ne = " + e.toString());
		}
    }
}

Keempat, buat class controller yang didalamnya method untuk melakukan pencarian. Method di interface ini yang digunakan dihalaman zul didalam tag-tag “zscript”.

interface

public interface StokBarangJadiController {
	public void doSearchUkuran(StokBarangJadi pojo) throws InterruptedException ;
	public void getUkuran(StokBarangJadi pojo) throws InterruptedException;
}

class

public class StokBarangJadiControllerImpl extends BaseController implements StokBarangJadiController {
	public void doSearchUkuran(StokBarangJadi pojo) throws InterruptedException {
		pojo.getLstUkuran().getItems().clear();
		Listitem listItem;
		Listcell cell;
		List<MsUkuran> msUkurans = msUkuranDao.findByNameAndKet2(pojo.getTxtUkuran().getText().toUpperCase());

		for (MsUkuran msUkuran : msUkurans) {
			listItem = new Listitem();
			listItem.setValue(msUkuran);
			listItem.setParent(pojo.getLstUkuran());

			// set nama ukuran
			cell = new Listcell(msUkuran.getVNamaUkuran());
			cell.setStyle(MRProConstants.LIST_FONT);
			cell.setParent(listItem);

			// set keterangan ukuran
			cell = new Listcell(msUkuran.getVKeteranganUkuran());
			cell.setStyle(MRProConstants.LIST_FONT);
			cell.setParent(listItem);
		}
		pojo.getTxtUkuran().setText("");
	}

	public void getUkuran(StokBarangJadi pojo) throws InterruptedException {
		pojo.getBndUkuran().setValue(pojo.getLstUkuran().getSelectedItem().getLabel());
	}
}

Penjelasan: method doSearchUkuran() untuk melakukan pencarian master ukuran berdasar kata kunci yg dimasukan di textbox.
List msUkurans digunakan untuk menampung data hasil query, kemudian lakukan perulangan for-each untuk memasukan datanya ke cell dari List Item.
Method getUkuran() digunakan pada saat memilih salah satu nilai dari list yang akan ditampilkan ke BandBox.

Mengasikan bukan?😀

Posted in Framework Java, Hibernate, JEE, ZK | 2 Comments

Google GO

Setelah system operasi Android, kini Google mencoba bereksperimen dengan sebuah bahasa pemrograman open source bernama Go, yang akan mengoptimalkan kehandalan aplikasi dan system multi-processor. Go merupakan bahasa pemrograman kedua yang pernah dirilis Google di tahun ini. Sementara di bulan Juli lalu, Google telah merilis bahasa pemrograman Simple, sebuah dialek BASIC untuk pengembangan aplikasi Android.

Menurut Rob Pike, kepala teknisi Google mengatakan bahwa tujuan dibuatnya Go, adalah sebagai bahasa system, bisa seperti C++ atau C. Pike juga mengatakan bahwa Go ini memiliki level yang sama dengan Java, jika seseorang pintar bermain dengan bahasa Java, maka juga tidak akan sulit memakai Go. Go sendiri dimulai di tahun 2007 sebagai project yang baru berjalan 20 persen, selain itu Go juga dibantu oleh berbagai contributor seperti teknisi Google Robert Griesemer, Ken Thompson, Ian Taylor, dan Russ Cox.

Go juga dilengkapi plug-in untuk Eclipse Integrated Development Environment (IDE), dan Google mengembangkan Go untuk pembuatan aplikasi web. Go juga akan ada di browser Chrome mendatang, dimana Go akan bekerja dengan Native Client, sebuah teknologi open source untuk menjalankan kode bahasa lain di aplikasi web. Go memiliki compiler bernama Gccgo yang berbasis di GCC, dan satu compiler lain untuk mesin 64 bit x86 dan 32 bit x86. Selain itu, bahasa Go ini juga support untuk chip ARM dan device Android. Untuk lebih lanjut, dapat melihat ke website Google Go (golang.org)

Sumber http://www.beritanet.com/Technology/Opensource/Google-Go-Java.html

Posted in Google, IDE, MyEclipse | 2 Comments