Friday, June 03, 2005

Mengintegrasikan Flash MX dengan ASP.NET + SQL Server

Berikut merupaka cara bagaimana membuat tampilan login sederhana dengan menggunakan flash MX dan menggabungkannya dengan ASP.NET + SQL Server 2000.

-pada halaman flash buatlah tampilan seperti layaknya input text dengan menggunakan "A" icon yang terdapat pada tools box. dalam hal ini kedua input text tersebut kita beri nama username dan password.

- setelah itu dengan menggunakan rectangle tools, buatlah sebuah button. klick kanan pada button tersebut dan pilihlah menu convert to symbol. tambahkan action script pada button tersebut sebagai berikut :

on (release) {
getURL("login.aspx?user="+userName+"&pass="+password, "_self");
}

- beri nama web application project tadi dengan nama login.aspx, pada design mode double click pada web form dan pada method page_load tambahkan code berikut untuk menghandle variable flash (C#) yang dipasingkan via querystring.


private void Page_Load(object sender, System.EventArgs e) {
if(Request.QueryString["userName"] != null && Request.QueryString["passWord"] != null ) {
userName = Request.QueryString["userName"].ToString();
passWord = Request.QueryString["passWord"].ToString();
if(userName.Length > 0 && passWord.Length > 0) {
//Code to pass login vars to SQL stored proc
} else {
errorMsg = Server.UrlEncode("You must enter username and password");
Response.Redirect("error.aspx?e=" + errorMsg + "");
}
}
if(Page.IsPostBack) {
if(Request.QueryString["userName"] == null && Request.QueryString["passWord"]==null ) {
errorMsg = Server.UrlEncode("You must enter username and password");
Response.Redirect("error.aspx?e=" + errorMsg + "");
}
}
}



- berikutnya tambahkan pemanggil stored procedure pada method login, yang mana berfungsi sebagai pengecekan validitas terhadap database. tambahkan code berikut pada mark // code to pass login vars to SQL stored Proc :


string id = Login(userName, passWord);
if (id != null) {
//User is identified
} else
{ //User is not valid}


-berikut merupakan code untuk login method :


public String Login(string username, string password) {
// Create Instance of Connection and Command Object
SqlConnection loginConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand loginComm = new SqlCommand("Loginsp", loginConn);
// Mark the Command as a SPROC
loginComm.CommandType = CommandType.StoredProcedure;
// Add Parameters to SPROC
SqlParameter parameterUser = new SqlParameter("@UserName", SqlDbType.NVarChar, 50);
parameterUser.Value = username;
loginComm.Parameters.Add(parameterUser);
SqlParameter parameterPassword = new SqlParameter("@PassWord", SqlDbType.NVarChar, 50);
parameterPassword.Value = password;
loginComm.Parameters.Add(parameterPassword);
SqlParameter parameterLoginID = new SqlParameter("@LoginID", SqlDbType.Int, 4);
parameterLoginID.Direction = ParameterDirection.Output;
loginComm.Parameters.Add(parameterLoginID);
// Open the connection and execute the Command
loginConn.Open();
loginComm.ExecuteNonQuery();
loginConn.Close();
int LoginId = (int)(parameterLoginID.Value);
if (LoginId == 0){
return null;
}else{
return LoginId.ToString();
}
}

setelah membuat interface layer diatas, sekarang kita harus membuat data layer. pertama-tama lakukan koneksi pada server yang ingin digunakan dan pilih database directoy yang diinginkan. jika kita tidak mempunyai database yang digunakan untuk login kita dapat membuatnya dengan cara bukalah query analyzer dan lakukan execute pada code berikut :

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Login]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Login]GO
CREATE TABLE [dbo].[Login] (
[LoginID] [int] IDENTITY (1, 1) NOT NULL ,[Username] [nvarchar] (50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL ,[Password] [nvarchar] (50) COLLATE
SQL_Latin1_General_CP1_CI_AS NOT NULL) ON [PRIMARY]GO

- berikut merupakan code yang digunakan untuk membuat login stored procedure untuk mempasingkan variable username dan password, lakukan eksekusi pada SQL Query Analyzer terhadap code berikut :

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Loginsp]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[Loginsp]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure Loginsp(
@UserName nvarchar(50),
@PassWord nvarchar(50),
@LoginID int OUTPUT
)
AS
SELECT
@LoginID = LoginID
FROM
Login
WHERE
Username = @UserName
AND
Password = @Password
IF @@Rowcount <>
SELECT
@LoginID = 0
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

apabila teman2 semua kurang jelas terhadap keterangan yang terdapat diatas, teman2 semua dapat langsung mendownload code nya pada url berikut :

http://www.dotnetjunkies.com/zip/E03F192F-E8DD-4CD8-82AD-7B2D2E537421.zip


No comments: