передача переменной в хранимую процедуру, c # - PullRequest
3 голосов
/ 15 июня 2011

У меня есть переменная «нажатие клавиш», которая устанавливается, когда в нашу систему делается телефонный звонок. Как это записывается в наш текстовый файл следующим образом:

w.Write(attrColl["keypress"].Value);

Что мне нужно сделать, это передать эти нажатия клавиш по мере их поступления, чтобы sproc.

Итак, мой первый вопрос: как передать его sproc, код, который у меня выглядит, выглядит так:

mySqlCommand.Parameters.Add("@Q1", SqlDbType.Int).Value = keypress;
mySqlCommand.Parameters.Add("@Q2", SqlDbType.Int).Value = keypress;

например: если первое нажатие клавиши составляет 500 #, а второе нажатие клавиши - 300 #. это должно выглядеть как @ Q1 = 500 # и @ Q2 = 300 #

Нужно ли сначала преобразовывать нажатие клавиш в строку? Если да, то как лучше всего это сделать, поскольку у меня есть около 10 вопросов, которые задаются, поэтому у меня есть 10 уникальных нажатий клавиш, которые возвращаются.

И, во-вторых, поскольку в конце каждого нажатия клавиши есть знак #, будет ли вход sproc быть nvarchar, а не int? Или как лучше всего справиться с #.

Будем благодарны за любые мысли, предложения или документацию.

1 Ответ

3 голосов
/ 15 июня 2011

Я предположил, что ваш текстовый файл выглядит примерно так, все в одной строке.

100 # 400 # 900 #

Я также предполагаю,что вы прочитали эту строку обратно в переменную somename.

, поэтому

        var keypressline = "100#400#900#";
        var keyPresses = keypressline.Split('#');
        for (var i = 0; i < keyPresses.Length; i++)
        {               
            mySqlCommand.Parameters.AddWithValue("@Q" + i, keyPresses[i]);
        }

Я намеренно оставил @Q в виде строки.Если вы приведете к Integer, вы потеряете тот факт, что сначала нажмете 0.

РЕДАКТИРОВАТЬ: код загрузки файла

string fullPathAndFileName = @"C:\blah\blah.txt";
string keypresses;
using (StreamReader sr = new StreamReader(fullPathAndFileName)) 
{
    while (sr.Peek() >= 0) 
    {
        keyPresses = sr.ReadLine();
    ...
    }
}
...