C# For Loop Problem!

isurutmv

Well-known member
  • May 1, 2013
    1,936
    823
    113
    29
    Gampaha

    PHP:
    	private DataSet getEntity(Entity entity, String SELECT_TEXT, String[][] tableDetailsArray, String tableName) {
    			List<Entity> list = new List<Entity>();
    			try {
    				MySqlCommand cmd = new MySqlCommand();
    				connection.Open();
    				cmd.Connection = connection;
    				SELECT_TEXT = "SELECT " + (entity.RowsCount > 0 ? "COUNT(*)" : "*") + " FROM `" + tableName + "` WHERE";
    				//SELECT_TEXT = (entity.RowsCount > 0 ? "SELECT COUNT(*) FROM (" : "") + "SELECT * FROM `" + tableName + "` WHERE";
    				String param = "";
    				//String[][] arr = tableDetails.ToArray();
    				bool isIdRunId = false;
    				/*if(tableName == "buying_invoice") {
    					//MessageBox.Show(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[4][0])).ToString());
    					String s = (getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[4][0])).ToString() != "1/1/0001 12:00:00 AM").ToString();
    				}*/
    				for (int i = 0; i < tableDetailsArray.Length; i++) {
    					bool canBeDouble = false;
    					try {
    						if (tableDetailsArray[i][1].Length > 5) {
    							canBeDouble = true;
    						}
    					} catch (Exception) {
    					}
    					if (tableDetailsArray[i][1].Substring(0, 3) == "int" && tableDetailsArray[i][5] == "auto_increment" && Convert.ToInt32(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0]))) > 0) {
    						param += " AND `" + tableDetailsArray[i][0] + "` LIKE @" + tableDetailsArray[i][0];
    						cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    						isIdRunId = true;
    					} else if (tableDetailsArray[i][1].Substring(0, 3) == "int" && tableDetailsArray[i][5] != "auto_increment" && Convert.ToInt32(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0]))) > -1) {
    						param += " AND `" + tableDetailsArray[i][0] + "` LIKE @" + tableDetailsArray[i][0];
    						cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    					} else if ((tableDetailsArray[i][1] == "date" || tableDetailsArray[i][1].Substring(0, 4) == "date") && getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])).ToString() != "1/1/0001 12:00:00 AM") {
    						if (entity.dateCondition == null) {
    							param += " AND DATE(`" + tableDetailsArray[i][0] + "`) LIKE @" + tableDetailsArray[i][0];
    							cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropDateValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    						} else {
    							try {
    								if (entity.dateCondition[tableDetailsArray[i][0]] != null) {
    									param += " AND (DATE(`" + tableDetailsArray[i][0] + "`) " + entity.dateCondition[tableDetailsArray[i][0]][0] + " @" + tableDetailsArray[i][0] + "1" + " AND @" + tableDetailsArray[i][0] + "2" + ")";
    									cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0] + "1", entity.dateCondition[tableDetailsArray[i][0]][1]);
    									cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0] + "2", entity.dateCondition[tableDetailsArray[i][0]][2]);
    								} else {
    									param += " AND DATE(`" + tableDetailsArray[i][0] + "`) LIKE @" + tableDetailsArray[i][0];
    									cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropDateValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    								}
    							} catch (Exception) {
    							}
    						}
    					} else if (canBeDouble && tableDetailsArray[i][1].Substring(0, 6) == "double" && Convert.ToDouble(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0]))) > 0) {
    						if (entity.doubleCondition == null) {
    							param += " AND `" + tableDetailsArray[i][0] + "` = @" + tableDetailsArray[i][0];
    							cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    						} else {
    							try {
    								if (entity.doubleCondition[tableDetailsArray[i][0]] != null) {
    									param += " AND `" + tableDetailsArray[i][0] + "` " + entity.doubleCondition[tableDetailsArray[i][0]] + " @" + tableDetailsArray[i][0];
    									cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    								} else {
    									param += " AND `" + tableDetailsArray[i][0] + "` = @" + tableDetailsArray[i][0];
    									cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    								}
    							} catch (Exception) {
    							}
    						}
    					} else if (tableDetailsArray[i][5] != "auto_increment" && getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])) != null && getPropType(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])) != "System.Double" && getPropType(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])) != "System.Int32" && (getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])).ToString() != "1/1/0001 12:00:00 AM")) {
    						param += " AND `" + tableDetailsArray[i][0] + "` LIKE @" + tableDetailsArray[i][0];
    						cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
    					}
    				}
    				if (entity.ManualQueries != null) {
    					param += " " + entity.ManualQueries;
    				}
    				if (!isIdRunId) {
    					param = " AND `id` != '0'" + param;
    				}
    				param = param.Substring(4);
    				if (entity.OrderBy != null) {
    					param += " ORDER BY " + entity.OrderBy;
    					/*param += " ORDER BY @orderBy @orderType";
    					cmd.Parameters.AddWithValue("@orderBy", entity.OrderBy);
    					cmd.Parameters.AddWithValue("@orderType", entity.OrderType);*/
    				}
    				if (entity.RowsCount < 1 && entity.LimitStart > -1) {
    					param += " LIMIT @limitStart , @limitEnd";
    					cmd.Parameters.AddWithValue("@limitStart", entity.LimitStart);
    					cmd.Parameters.AddWithValue("@limitEnd", entity.LimitEnd);
    				}
    				/*if(entity.OrderBy != null) {
    					param += " ORDER BY @orderBy @orderType";
    					cmd.Parameters.AddWithValue("@orderBy", entity.OrderBy);
    					cmd.Parameters.AddWithValue("@orderType", entity.OrderType);
    				}
    				if(entity.LimitStart > -1) {
    					param += " LIMIT @limitStart , @limitEnd";
    					cmd.Parameters.AddWithValue("@limitStart", entity.LimitStart);
    					cmd.Parameters.AddWithValue("@limitEnd", entity.LimitEnd);
    				}*/
    
    				SELECT_TEXT += param + ";";
    				//SELECT_TEXT += param + (entity.RowsCount > 0 ? ") AS cou" : "") + ";";
    
    				cmd.CommandText = SELECT_TEXT;
    				cmd.Prepare();
    
    				DataSet dataSet = new DataSet();
    				new MySqlDataAdapter(cmd).Fill(dataSet);
    
    				connection.Close();
    				return dataSet;
    			} catch (Exception) {
    				connection.Close();
    				return null;
    			}
    		}


    mcn me code eke for loop eka iwara nowenna hethuwa poddak kiyapanko :dull:

     

    uditha88

    Junior member
  • Jul 23, 2010
    61
    71
    18
    PHP:
        private DataSet getEntity(Entity entity, String SELECT_TEXT, String[][] tableDetailsArray, String tableName) {
                List<Entity> list = new List<Entity>();
                try {
                    MySqlCommand cmd = new MySqlCommand();
                    connection.Open();
                    cmd.Connection = connection;
                    SELECT_TEXT = "SELECT " + (entity.RowsCount > 0 ? "COUNT(*)" : "*") + " FROM `" + tableName + "` WHERE";
                    //SELECT_TEXT = (entity.RowsCount > 0 ? "SELECT COUNT(*) FROM (" : "") + "SELECT * FROM `" + tableName + "` WHERE";
                    String param = "";
                    //String[][] arr = tableDetails.ToArray();
                    bool isIdRunId = false;
                    /*if(tableName == "buying_invoice") {
                        //MessageBox.Show(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[4][0])).ToString());
                        String s = (getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[4][0])).ToString() != "1/1/0001 12:00:00 AM").ToString();
                    }*/
                    for (int i = 0; i < tableDetailsArray.Length; i++) {
                        bool canBeDouble = false;
                        try {
                            if (tableDetailsArray[i][1].Length > 5) {
                                canBeDouble = true;
                            }
                        } catch (Exception) {
                        }
                        if (tableDetailsArray[i][1].Substring(0, 3) == "int" && tableDetailsArray[i][5] == "auto_increment" && Convert.ToInt32(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0]))) > 0) {
                            param += " AND `" + tableDetailsArray[i][0] + "` LIKE @" + tableDetailsArray[i][0];
                            cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                            isIdRunId = true;
                        } else if (tableDetailsArray[i][1].Substring(0, 3) == "int" && tableDetailsArray[i][5] != "auto_increment" && Convert.ToInt32(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0]))) > -1) {
                            param += " AND `" + tableDetailsArray[i][0] + "` LIKE @" + tableDetailsArray[i][0];
                            cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                        } else if ((tableDetailsArray[i][1] == "date" || tableDetailsArray[i][1].Substring(0, 4) == "date") && getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])).ToString() != "1/1/0001 12:00:00 AM") {
                            if (entity.dateCondition == null) {
                                param += " AND DATE(`" + tableDetailsArray[i][0] + "`) LIKE @" + tableDetailsArray[i][0];
                                cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropDateValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                            } else {
                                try {
                                    if (entity.dateCondition[tableDetailsArray[i][0]] != null) {
                                        param += " AND (DATE(`" + tableDetailsArray[i][0] + "`) " + entity.dateCondition[tableDetailsArray[i][0]][0] + " @" + tableDetailsArray[i][0] + "1" + " AND @" + tableDetailsArray[i][0] + "2" + ")";
                                        cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0] + "1", entity.dateCondition[tableDetailsArray[i][0]][1]);
                                        cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0] + "2", entity.dateCondition[tableDetailsArray[i][0]][2]);
                                    } else {
                                        param += " AND DATE(`" + tableDetailsArray[i][0] + "`) LIKE @" + tableDetailsArray[i][0];
                                        cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropDateValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                                    }
                                } catch (Exception) {
                                }
                            }
                        } else if (canBeDouble && tableDetailsArray[i][1].Substring(0, 6) == "double" && Convert.ToDouble(getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0]))) > 0) {
                            if (entity.doubleCondition == null) {
                                param += " AND `" + tableDetailsArray[i][0] + "` = @" + tableDetailsArray[i][0];
                                cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                            } else {
                                try {
                                    if (entity.doubleCondition[tableDetailsArray[i][0]] != null) {
                                        param += " AND `" + tableDetailsArray[i][0] + "` " + entity.doubleCondition[tableDetailsArray[i][0]] + " @" + tableDetailsArray[i][0];
                                        cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                                    } else {
                                        param += " AND `" + tableDetailsArray[i][0] + "` = @" + tableDetailsArray[i][0];
                                        cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                                    }
                                } catch (Exception) {
                                }
                            }
                        } else if (tableDetailsArray[i][5] != "auto_increment" && getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])) != null && getPropType(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])) != "System.Double" && getPropType(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])) != "System.Int32" && (getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])).ToString() != "1/1/0001 12:00:00 AM")) {
                            param += " AND `" + tableDetailsArray[i][0] + "` LIKE @" + tableDetailsArray[i][0];
                            cmd.Parameters.AddWithValue("@" + tableDetailsArray[i][0], getPropValue(entity, getPropertyNameByColumnName(tableDetailsArray[i][0])));
                        }
                    }
                    if (entity.ManualQueries != null) {
                        param += " " + entity.ManualQueries;
                    }
                    if (!isIdRunId) {
                        param = " AND `id` != '0'" + param;
                    }
                    param = param.Substring(4);
                    if (entity.OrderBy != null) {
                        param += " ORDER BY " + entity.OrderBy;
                        /*param += " ORDER BY @orderBy @orderType";
                        cmd.Parameters.AddWithValue("@orderBy", entity.OrderBy);
                        cmd.Parameters.AddWithValue("@orderType", entity.OrderType);*/
                    }
                    if (entity.RowsCount < 1 && entity.LimitStart > -1) {
                        param += " LIMIT @limitStart , @limitEnd";
                        cmd.Parameters.AddWithValue("@limitStart", entity.LimitStart);
                        cmd.Parameters.AddWithValue("@limitEnd", entity.LimitEnd);
                    }
                    /*if(entity.OrderBy != null) {
                        param += " ORDER BY @orderBy @orderType";
                        cmd.Parameters.AddWithValue("@orderBy", entity.OrderBy);
                        cmd.Parameters.AddWithValue("@orderType", entity.OrderType);
                    }
                    if(entity.LimitStart > -1) {
                        param += " LIMIT @limitStart , @limitEnd";
                        cmd.Parameters.AddWithValue("@limitStart", entity.LimitStart);
                        cmd.Parameters.AddWithValue("@limitEnd", entity.LimitEnd);
                    }*/
    
                    SELECT_TEXT += param + ";";
                    //SELECT_TEXT += param + (entity.RowsCount > 0 ? ") AS cou" : "") + ";";
    
                    cmd.CommandText = SELECT_TEXT;
                    cmd.Prepare();
    
                    DataSet dataSet = new DataSet();
                    new MySqlDataAdapter(cmd).Fill(dataSet);
    
                    connection.Close();
                    return dataSet;
                } catch (Exception) {
                    connection.Close();
                    return null;
                }
            }


    mcn me code eke for loop eka iwara nowenna hethuwa poddak kiyapanko :dull:
    My Advice is your method is too complicated. Break it into parts ! That's the best practice.