Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
1

LogParser не выдает нужную информацию по sql запросу

10.01.2011, 19:28. Показов 1412. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте проблема вот в чем. Когда я пытаюсь получить данные используя sql запрос
SQL
1
getCommand = "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('2008-1-1', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('2011-1-1','yyyy-1-1')\"".Trim();
то все данные получаются нормально , но вот если я пытаюсь использовать по сути тот же запрос но только что бы дата подставлялась из textbox то он в результате ничего не выдает . Я делаю вот такой вот запрос
SQL
1
getCommand = "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('"+ lowD.year.Trim() +"-".Trim()+ lowD.month.Trim() + "-".Trim()+ lowD.day.Trim() + "', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('"+ highD.year.Trim() + "-"+ highD.month.Trim()+"-"+ highD.day.Trim()+"','yyyy-1-1')\"".Trim();
Подскажите пожалуйста в чем может быть причина?

Добавлено через 2 часа 1 минуту
блин похоже проблема в этих невидимых отступах , хотя вроде все убрал с помощью trim но всеравно чето не работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2011, 19:28
Ответы с готовыми решениями:

Как вывести в топ по нужному запросу нужную страницу
Хочу чтобы по нужным запросам выдавалась не главная страница, а &quot;О компании&quot;. Что для этого надо...

Вытянуть нужную информацию из фаила
Всем привет!!))) у меня есть фаил (2397 строк) такого вида: 1115_287_1216 0 ath-miR396b...

ProgressBar не показывает нужную информацию
Имеется код в DownloadProgressChanged progressBar2.Value = percent +...

Где достать нужную информацию?
Всем привет! Мне нужно сделать курсовую работу на тему &quot;База данных флоры и фауны&quot; моей области!...

8
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
10.01.2011, 19:46 2
Попробуйте как-то так подставлять дату:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
 
namespace ConsoleApplicationTest {
    public static class Program {
        private static void Main() {
            DateTime lowD = new DateTime( 2008, 1, 1 );
 
            string getCommandOld =
                "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('2008-1-1', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('2011-1-1','yyyy-1-1')\""
                    .Trim();
 
            string getCommand =
                string.Format(
                    "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('{0}', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('2011-1-1','yyyy-1-1')\"",
                    lowD.ToString( "yyyy'-'M'-'d" ) );
 
            Console.WriteLine( getCommand == getCommandOld );
 
            Console.ReadKey();
        }
    }
}
Custom Date and Time Format Strings
0
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
10.01.2011, 20:25  [ТС] 3
Вроде бы эти две строки абсолютно равны только я немного по другому проверил
C#
1
2
if (getOldCommand == getCommand1)
            Console.WriteLine("ssssssssssssdadasda");
Интересная статья , спс сейчас почитаю

Добавлено через 13 минут
Просто тут проблема в том что вот эта строка передается вызываемому консольному приложению в качестве аргумента, и причем когда я сам прописываю в консольном приложении этот запрос то он его нормально обрабатывает , а вот если запрос генерируется программно с использованием значений из textbox.text то он отрабатывает косячно, т е ничего не отображает
0
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
10.01.2011, 20:33 4
А если сначала парсить значение из текст бокса в DateTime, а потом уже подставлять. Если значения не правильные, то это будет видно.
0
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
11.01.2011, 11:40  [ТС] 5
Аа вон че , ок спс , попробую

Добавлено через 13 часов 3 минуты
сделал вот так , но там еще в шаблоне еще время нужно указывать а я не стал , потому как оно почему то начинает трактоваться как часть года
C#
1
2
3
4
5
6
7
8
9
10
11
CultureInfo enUS = new CultureInfo("en-US");
            string dateString;
            DateTime dateValue;
            //В структуре lowDate хранится время полученное из textbox
            dateString= lowDate.day+"\\"+lowDate.month+"\\"+lowDate.year;
            if (DateTime.TryParseExact(dateString, "MM/dd/yyyy", enUS,
                                            DateTimeStyles.None , out dateValue))
                Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                    dateValue.Kind);
            else
                Console.WriteLine("'{0} is not accepteble format.", dateString);
он пишет что оно имеет неприемлимый формат , вообще то что тут "'{0} is not accepteble format.", dateString

Добавлено через 1 час 36 минут
И причем в другом запросе используещем текстбокс такая же шляпа( он если непосредственно в самой строке пишешь код события нормально отрабатывает , а вот если из текстбокса то фиг
0
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
11.01.2011, 12:09 6
А зачем использовать текст боксы, если есть гораздо более удобный элемент управления MonthCalendar . Кидаешь его на форму и получаешь значение примерно таким образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApplicationTest2 {
    public partial class MainForm : Form {
        private DateTime date;
 
        public MainForm() {
            InitializeComponent();
 
            // Максимальное количество элементов, которые можно выбрать
            monthCalendar1.MaxSelectionCount = 1;
        }
 
        private void monthCalendar1_DateChanged( object sender, DateRangeEventArgs e ) {
            // Получаем дату
            date = monthCalendar1.SelectionStart;
 
            // Получаем строку с датой
            Text = date.ToString( "yyyy'-'M'-'d" );
        }
    }
}
0
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
11.01.2011, 12:09  [ТС] 7
а нет причем даже если просто строку делаешь из нескольких подстрок то тоже почти такая же фигня получается, это классная мысль я думаю что его и использую , но тут похоже косяк уже даже не с текстбоксом а самим созданием строки, похоже что тут есть еще какието невидимые символы которые и не дают сформировать нормальный запрос
0
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
11.01.2011, 12:20 8
Приведите код программы. Так можно бесконечно гадать.
1
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
11.01.2011, 14:02  [ТС] 9
Вот тут вызывается метод controller.lunchParser(model.getSqlCommand(lowDate , highDate));
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void button1_Click(object sender, EventArgs e)
        {
            
            
            if (radioButtonAll.Checked == true)
            {
                MyDate lowDate;
                MyDate highDate;
                lowDate.year = textBoxYearLow.Text;
                lowDate.month = textBoxLowMonthTime.Text;
                lowDate.day = textBoxLowDayTime.Text;
 
                highDate.year = textBoxHighDayTime.Text;
                highDate.month = textBoxHighMonthTime.Text;
                highDate.day = textBoxHighDayTime.Text;
 
                controller.lunchParser(model.getSqlCommand(lowDate , highDate));
                //controller.lunchParser(model.getSqlCommand());
            }
        }
а вот сама его реализация
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public override string getSqlCommand(MyDate lowDate, MyDate highDate)
        {
           
            MyDate lowD, highD;
            lowD.year = lowDate.year;
            lowD.month = lowDate.month;
            lowD.day = lowDate.day;
 
            highD.year = highDate.year;
            highD.month = highDate.month;
            highD.day = highDate.day;
 
            //string getCommand = "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('2008-1-1', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('2011-1-1','yyyy-1-1')\"";
            string getCommand = "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('2008-1-1', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('2011-1-1','yyyy-1-1')\"";
            return getCommand;
        }
вот этот метод не использует внешние параметры и поэтому отрабатывает нормально ,но если его строку генерировать используя внешние параметры структуры lowD то он перестает нормально работать

Добавлено через 31 минуту
Оо .. а щас по новой этот запрос написал и код с поиском события по id из текстбокса заработал , щас попробую еще раз записать поиск по дате Оо
только календаря во втором фрэмимворке нет , придется с текстбоксом всеже оставить

Добавлено через 14 минут
хмм странно для нижнего интервала(lowD) с использование текстбокса все нормально отрабатывает , а когда начал для верхнего интервала(highD) текстбокс использовать начались теже глюки

Добавлено через 34 минуты
OMG Оо Вся проблема почему то именно в месте в которое подставляется год, если его записать в виде строки то работает все нормально , но если поставить туда значение из текстбокса(highD.year) то начинаются глюки
C#
1
string getCommand = "-i:EVT -resolveSIDs ON \"SELECT SID AS username,TimeGenerated AS LockoutTime INTO statisticAllUsers.xml FROM security WHERE EventID = 4672 AND TimeGenerated >= TO_TIMESTAMP ('"+lowD.year+"-"+lowD.month+"-"+lowD.day+"', 'yyyy-1-1') AND TimeGenerated <= TO_TIMESTAMP ('"+highD.year +"-"+highD.month+"-"+highD.day+"','yyyy-1-1')\"";
интересно почему

Добавлено через 8 минут
ООхх..ппц )))) я по ошибке туда передавал значение из другого текстбокса по этому прога косячно отрабатывала ... ппц жесть, Unril спасибо за помощь
0
11.01.2011, 14:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2011, 14:02
Помогаю со студенческими работами здесь

Как вытащить из текста нужную информацию?
Здравствуйте! Есть xml файл с валютами: http://bank-ua.com/export/currrate.xml В коде: ...

Как собрать нужную информацию с ссылки?
Есть ссылка: http://www.artisans-du-batiment.com/trouver-un-artisan/ В первом поле ввода пишем 01...

Не получаю нужную информацию с веб-страницы
Привет, Пытаюсь получить информацию с сайта спортивной статистики. На странице футбол есть...

Осуществить поиск по тексту и выбрать нужную информацию
Привет уважаемые программисты и сисадмины. Есть RichBox1.Text = то, где показывается вся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru