BTC USD 86,477.3 Gold USD 4,342.75
Time now: Jun 1, 12:00 AM

[Tutorial]Belajar Programming .NET Language

ok.. sy ada mslh.
sy kne buat changes on current system

sy da tukarkan code yg perlu then tukarkan code yg obsolete.
mslh sy skrg.. bila sy debug line by line..
system still run code yg sy da delete/comment out..
system x go through code baru yg sy tulis.
knp ye.. ade penjelasan x..
atau sy missing something anywhere

ps : sy staff bru yg kne betolkn system lama org len punya..

tempek code la bro...:-?
 
bkn mslh ngn code.
mb missing in configuration..
mati kutu x tau mane silap
sy solvekan dgn import all code into new solution..:">

kalu camtu aku penah kena...
wat trick camtu ok gak solve probs...
 
bro .net ni bukan ke framework bukan programming language macam C#?
 
bro .net ni bukan ke framework bukan programming language macam C#?

.NET tu memang Framework, bawah .NET ni ada C#,VB.NET,ASP.NET,F#,etc, saya tulis .NET programming languages sebab thread ni untuk cover semua :)
 
saja nak tanya dulu, apa cara korang untuk elak terjadi "REQUEST TIMEOUT" sbb dah MAX Pool Connection ker DBServer??? Code aku panjang sket so lepas GE13 ni baru tempek, wat masa ni diskas dulu sapa2 penah alami masalah ni...

code aku ada query, parameter, set max pool size=200 & pooling=true kat sql connection string & ada open & close state, try catch finally, pendek cite ada using & dispose sume tu...data dari live portal over 5K nak kena validate ngan database yg ada data over 16K...ingat nak wat batch run program jer ke server untuk perform proses ni, wat masa ni aku letak control untuk execute proses ni kat button yg authorize ker admin jer dulu...

camna nak wat performance testing untuk improve menda2 camni terutama proses yg melibatkan loop data yg besar...

silakan kongsi ilmu memasing...
 
saja nak tanya dulu, apa cara korang untuk elak terjadi "REQUEST TIMEOUT" sbb dah MAX Pool Connection ker DBServer??? Code aku panjang sket so lepas GE13 ni baru tempek, wat masa ni diskas dulu sapa2 penah alami masalah ni...

code aku ada query, parameter, set max pool size=200 & pooling=true kat sql connection string & ada open & close state, try catch finally, pendek cite ada using & dispose sume tu...data dari live portal over 5K nak kena validate ngan database yg ada data over 16K...ingat nak wat batch run program jer ke server untuk perform proses ni, wat masa ni aku letak control untuk execute proses ni kat button yg authorize ker admin jer dulu...

camna nak wat performance testing untuk improve menda2 camni terutama proses yg melibatkan loop data yg besar...

silakan kongsi ilmu memasing...

Salam, ambil data dari sql tu masukkan kedalam mana? Dataset?
 
Salam, ambil data dari sql tu masukkan kedalam mana? Dataset?

ok camni, portal yg di gunakan jenis Sharepoint, Sharepoint ni ada list ala2 Excel online gitu so untuk validate setiap data(SPListItem) dalam list yg di kenali sebagai SPList tu aku kena pakai foreach, dalam foreach tu aku start connection & query ke SQL untuk dapat update yg di perlukan...hasil dari query aku store ke datatable pastu pakai foreach lagi sekali & sekiranya row count more then 1 aku kena pakai foreach row plak, why??? sbb aku ada condition tertentu yg memerlukan check setiap info yg ada & combine jika perlu...so far code dah success untuk achieve menda ni(tested in small volume of data) cuma masalah request timeout tu jer aku tension skrg...
 
Owh, leh bagi source code tu tak?

Kalau tanya pada saya lah, saya akan pakai data reader daripada datatable..

So apa yang saya faham bro ambil data dari sql dengan mengunakan dataAdapter.. betul?

So dari data adapter bro akan fill maklumat kedalam datatable. Kemudian buat foreach untuk hasilkan maklumat yang bro nak..

Tapi kalau macam saya, saya lebih suka gunakan datareader dan simpan kedalam list.

Apa beza datatable dan datareader?

DataTable : Akan ambil data segedebuk, hanya memerlukan sambungan sql sekali sahaja. Ibarat ambil air dari perigi mengunakan baldi.

DataReader : Akan ambil data satu persatu, memerlukan sambungan sql berterusan. Ibarat ambil air mengunakan hos. Tetapi kalau hos tu putus so data dapat separuh sahaja

Sebab masalah ini saya pernah dapat selesaikan bila kira calculation dengan data lebih daripada 1 juta rekod. Lebih cepat daripada pakai datatable..

Gud Luck :D
 
Last edited:
Owh, leh bagi source code tu tak?

Kalau tanya pada saya lah, saya akan pakai data reader daripada datatable..

So apa yang saya faham bro ambil data dari sql dengan mengunakan dataAdapter.. betul?
tepat Tuan

So dari data adapter bro akan fill maklumat kedalam datatable. Kemudian buat foreach untuk hasilkan maklumat yang bro nak..
tepat lagi sekali...

Tapi kalau macam saya, saya lebih suka gunakan datareader dan simpan kedalam list.
Maksud nko array?
untuk 1st loop record no 1 yg ada multiple column nak update, query ke SQL untuk dapatkan berbilang info dari column2 tersebut dah update record no 1...camna nak store data dari multiple column dlm list/array tu???:-?:-?:-?

Apa beza datatable dan datareader?

DataTable : Akan ambil data segedebuk, hanya memerlukan sambungan sql sekali sahaja. Ibarat ambil air dari perigi mengunakan baldi.
x, aku query data yg aku nak untuk record tersebut ja...

DataReader : Akan ambil data satu persatu, memerlukan sambungan sql berterusan. Ibarat ambil air mengunakan hos. Tetapi kalau hos tu putus so data dapat separuh sahaja
for each record updated xyah open re-connection balik & start re-query balik untuk record seterusnya???

Sebab masalah ini saya pernah dapat selesaikan bila kira calculation dengan data lebih daripada 1 juta rekod. Lebih cepat daripada pakai datatable..

Gud Luck :D

nnt aku try datareader plak, ada terbaca ttg ni tapi aku x amik pusing sangat sebelum ni...1 juta record??? kompeni mana punya data tu bro?:-?

ni sample code yg dah ejas sket untuk public :

HTML:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
	try
	{
		SPSite spSite = SPContext.Current.Site;
		SPWeb spWeb = spSite.OpenWeb();
		SPList spList = spWeb.Lists["Master List"];
		SPListItemCollection spListItemCollection = spList.Items;
		spWeb.AllowUnsafeUpdates = true;

		int cntError = 0;
		int cntSuccess = 0;
		foreach (SPListItem spListItem in spListItemCollection)
		{
			string strConnection = @"Server=111.111.111.111;user id=username;password=userpassword;database=SQLDatabase;max pool size=300;pooling=true;";
			DataTable sqlDataTable = new DataTable();
			string strQuery = string.Empty;
			strQuery = @"SELECT * FROM [SQLDatabase].[dbo].[tbl_SystemData] WHERE [CustomerName]=@CustomerName;";

			SqlConnection sqlConnection = new SqlConnection(strConnection);

			if (sqlConnection.State == ConnectionState.Closed)
				sqlConnection.Open();

			SqlCommand sqlCommand = new SqlCommand(strQuery, sqlConnection);
			SqlParameter sqlParameter = new SqlParameter();
			sqlParameter.ParameterName = "@CustomerName";
			sqlParameter.Value = spListItem["Title"].ToString();
			sqlCommand.Parameters.Add(sqlParameter);

			SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
			DataSet sqlDataSet = new DataSet();
			sqlDataAdapter.Fill(sqlDataSet);
			sqlDataTable = sqlDataSet.Tables[0];

			if (sqlDataTable.Rows.Count > 0)
			{
				if (sqlDataTable.Rows.Count > 1)
				{
					//multiple record in database
					try
					{
						int cntType = 0;
						int cntOD = 0;
						string strType = string.Empty;
						string strOD = string.Empty;
						foreach (DataRow sqlDataRow in sqlDataTable.Rows)
						{
							if (sqlDataRow[3] != null)
								spListItem["Identity"] = sqlDataRow[3].ToString();
							if (sqlDataRow[4] != null)
								spListItem["SystemStatusReview"] = sqlDataRow[4].ToString();
							if (sqlDataRow[5] != null)
								spListItem["Renewal"] = sqlDataRow[5].ToString();
							if (!string.IsNullOrEmpty(sqlDataRow[6].ToString()))
								spListItem["RatingDate"] = DateTime.Parse(sqlDataRow[6].ToString()).ToString("dd-MMMM-yyyy");
							if (sqlDataRow[7] != null)
								spListItem["Rating"] = sqlDataRow[7].ToString();
							if (sqlDataRow[8] != null)
							{
								if (cntType < 2)
								{
									if (string.IsNullOrEmpty(strType.ToString()))
										strType = sqlDataRow[8].ToString();
									else
									{
										if (strType.ToString() == "Type1" && strType.ToString() != sqlDataRow[8].ToString() || strType.ToString() == "Type2" && strType.ToString() != sqlDataRow[8].ToString())
											strType = "Type1/Type2";
										else
										{
											if (strType.ToString() == "Type1" && sqlDataRow[8].ToString() == "Type1")
												strType = "Type1";
											else
												strType = "Type2";
										**
									**
									cntType++;
								**
							**
							if (sqlDataRow[9] != null)
							{
								if (cntOD < 1)
								{
									if (string.IsNullOrEmpty(strOD.ToString()))
										strOD = sqlDataRow[9].ToString();
									else
									{
										if (strOD.ToString() == "Category1" && strOD.ToString() != sqlDataRow[8].ToString() || strOD.ToString() == "Category2" && strOD.ToString() != sqlDataRow[8].ToString())
											strOD = "Category1";
										else
										{
											if (strOD.ToString() == "Category1" && sqlDataRow[8].ToString() == "Category1")
												strOD = "Category1";
											else
												strOD = "Category2";
										**
									**
									cntOD++;
								**
							**
							if (!string.IsNullOrEmpty(sqlDataRow[10].ToString()))
								spListItem["LastReviewDate"] = DateTime.Parse(sqlDataRow[10].ToString()).ToString("dd-MMMM-yyyy");
							if (!string.IsNullOrEmpty(sqlDataRow[12].ToString()))
							{
								string strTestMultipleUser = "domain\\" + sqlDataRow[12].ToString();
								PickerEntity entity = new PickerEntity();
								int pos = strTestMultipleUser.IndexOf('#');
								strTestMultipleUser = strTestMultipleUser.Substring(pos + 1);
								entity.Key = strTestMultipleUser;
								SPMember spTestMember = SPContext.Current.Web.AllUsers[strTestMultipleUser.ToString()];
								SPFieldUserValueCollection UserCollection = new SPFieldUserValueCollection();
								SPFieldUserValue UserName = new SPFieldUserValue(spWeb, spTestMember.ID, spWeb.AllUsers.GetByID(Convert.ToInt32(spTestMember.ID)).LoginName);
								UserCollection.Add(UserName);
								spListItem["Officer"] = UserCollection;
							**
							if (!string.IsNullOrEmpty(sqlDataRow[13].ToString()))
								spListItem["NextReviewDate"] = DateTime.Parse(sqlDataRow[13].ToString()).ToString("dd-MMMM-yyyy");
							if (sqlDataRow[14] != null)
								spListItem["MonthsOverdue"] = sqlDataRow[14].ToString() + " month";
							if (sqlDataRow[15] != null)
								spListItem["AccountNo"] = sqlDataRow[15].ToString();
							if (sqlDataRow[16] != null)
								spListItem["Facility"] = sqlDataRow[16].ToString();
							if (sqlDataRow[17] != null)
								spListItem["FullySecured"] = sqlDataRow[17].ToString();
							if (sqlDataRow[18] != null)
								spListItem["SystemStatus"] = sqlDataRow[18].ToString();
						**
						if (cntType > 0)
							spListItem["Type"] = strType.ToString();
						else
							spListItem["Type"] = strType.ToString();
						if (cntOD > 0)
							spListItem["Category"] = "Category1";
						else
							spListItem["Category"] = strOD.ToString();
					**
					catch (Exception ex)
					{
						Response.Write("Error while trying to map <b>" + spListItem["Title"].ToString() + "</b> with multiple System data with error message : <br/>" + ex.ToString() + "<br/>");
						cntError++;
					**
					finally
					{
						sqlConnection.Close();
					**
				**
				else
				{
					//only single record in database
					try
					{
						foreach (DataRow sqlDataRow in sqlDataTable.Rows)
						{
							if (sqlDataRow[3] != null)
								spListItem["Identity"] = sqlDataRow[3].ToString();
							if (sqlDataRow[4] != null)
								spListItem["SystemStatusReview"] = sqlDataRow[4].ToString();
							if (sqlDataRow[5] != null)
								spListItem["Renewal"] = sqlDataRow[5].ToString();
							if (!string.IsNullOrEmpty(sqlDataRow[6].ToString()))
								spListItem["RatingDate"] = DateTime.Parse(sqlDataRow[6].ToString()).ToString("dd-MMMM-yyyy");
							if (sqlDataRow[7] != null)
								spListItem["Rating"] = sqlDataRow[7].ToString();
							if (sqlDataRow[8] != null)
								spListItem["Type"] = sqlDataRow[8].ToString();
							if (sqlDataRow[9] != null)
								spListItem["Category"] = sqlDataRow[9].ToString();
							if (!string.IsNullOrEmpty(sqlDataRow[10].ToString()))
								spListItem["LastReviewDate"] = DateTime.Parse(sqlDataRow[10].ToString()).ToString("dd-MMMM-yyyy");
							if (!string.IsNullOrEmpty(sqlDataRow[12].ToString()))
							{
								string strTestMultipleUser = "domain\\" + sqlDataRow[12].ToString();
								PickerEntity entity = new PickerEntity();
								int pos = strTestMultipleUser.IndexOf('#');
								strTestMultipleUser = strTestMultipleUser.Substring(pos + 1);
								entity.Key = strTestMultipleUser;
								SPMember spTestMember = SPContext.Current.Web.AllUsers[strTestMultipleUser.ToString()];
								SPFieldUserValueCollection UserCollection = new SPFieldUserValueCollection();
								SPFieldUserValue UserName = new SPFieldUserValue(spWeb, spTestMember.ID, spWeb.AllUsers.GetByID(Convert.ToInt32(spTestMember.ID)).LoginName);
								UserCollection.Add(UserName);
								spListItem["Officer"] = UserCollection;
							**
							if (!string.IsNullOrEmpty(sqlDataRow[13].ToString()))
								spListItem["NextReviewDate"] = DateTime.Parse(sqlDataRow[13].ToString()).ToString("dd-MMMM-yyyy");
							if (sqlDataRow[14] != null)
								spListItem["MonthsOverdue"] = sqlDataRow[14].ToString() + " month";
							if (sqlDataRow[15] != null)
								spListItem["AccountNo"] = sqlDataRow[15].ToString();
							if (sqlDataRow[16] != null)
								spListItem["Facility"] = sqlDataRow[16].ToString();
							if (sqlDataRow[17] != null)
								spListItem["FullySecured"] = sqlDataRow[17].ToString();
							if (sqlDataRow[18] != null)
								spListItem["SystemStatus"] = sqlDataRow[18].ToString();
						**
					**
					catch (Exception ex)
					{
						Response.Write("Error while trying to map <b>" + spListItem["Title"].ToString() + "</b> with single System data with error message : <br/>" + ex.ToString() + "<br/>");
						cntError++;
					**
					finally
					{
						sqlConnection.Close();                                
					**
				**
				spListItem.Update();
			**
			cntSuccess++;
		**
		spWeb.AllowUnsafeUpdates = false;
	**
	catch (Exception ex)
	{
		Response.Write("Error while validate the data with error message : <br/>" + ex.ToString() + "<br/>");
	**
	finally
	{
		Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Process completed, all data has been updated!');", true);
	**
**);
 
Last edited:
Back
Top
Log in Register