Логика программы для обновления и получения данных в/из той же сохраненной процедурыC#

Место общения программистов C#
Ответить
Anonymous
 Логика программы для обновления и получения данных в/из той же сохраненной процедуры

Сообщение Anonymous »

Я работаю над этим проектом, чтобы создать сервис Windows, который создает поток каждые 20 секунд. Эта служба получает текст и номера от хранимой процедуры и отправляет SMS на этот номер, и на каждом конце потока он возвращает результат в хранимую процедуру. Поток кода похож на следующее: это функция, которая называется Onsart of Service. < /P>

Код: Выделить всё

public void Prepare(object state)
{
DataTable _dt = new DataTable();
DataTable _dt_sms_result = new DataTable();

_dt = GetInfo();

if (_dt != null)
{
_dt_sms_result.Columns.Add("sms_id", typeof(int));
_dt_sms_result.Columns.Add("send_time", typeof(DateTime));
_dt_sms_result.Columns.Add("result", typeof(string));

foreach (DataRow dr in _dt.Rows)
{
bool status = sendMsg(dr["smsid"].ToString(), dr["number"].ToString(), dr["messagetxt"].ToString(), dr["from"].ToString(), dr["to"].ToString());
Thread.Sleep(1000);
DataRow lvlrow = _dt_sms_result.NewRow();
lvlrow["sms_id"] = dr["sms_id"];
lvlrow["send_time"] = DateTime.Now;

if (status)
lvlrow["result"] = "Message Sent";
else
lvlrow["result"] = "Sending Failed";

_dt_sms_result.Rows.Add(lvlrow);
}//end foreach
PushInfo(_dt_sms_result);
}
код для getInfo () :

Код: Выделить всё

public DataTable GetInfo()
{
cmd.CommandText = "StoredProc_511";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Clear();

cmd.Parameters.AddWithValue("@username", "******");
cmd.Parameters.AddWithValue("@authcode", "******");

DataTable dt = new DataTable();

try
{
Connect();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
catch (SqlException se)
{
MyLog.Write(new LogPacket(se, DateTime.Now));
return null;
}
finally
{
Disconnect();
}
return dt;
}
код для pushinfo () :

Код: Выделить всё

public void PushInfo(DataTable dt_sms_result)
{
int res = -1;
cmd.CommandText = "StoredProc_511";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@username", "*****");
cmd.Parameters.AddWithValue("@authcode", "*****");

SqlParameter tvpParam = cmd.Parameters.AddWithValue("@sms_result", dt_sms_result);
tvpParam.SqlDbType = SqlDbType.Structured;

try
{
Connect();
res = cmd.ExecuteNonQuery();
}
catch (SqlException se)
{
MyLog.Write(new LogPacket(se, DateTime.Now));
Disconnect();
}
finally
{
Disconnect();
}
}
Что я думал до сих пор, это пройти _dt_sms_result getInfo () и удалить pushInfo () , так как мы будем делать только один вызов. И добавить < /p>

Код: Выделить всё

SqlParameter tvpParam = cmd.Parameters.AddWithValue("@sms_result", dt_sms_result);
tvpParam.SqlDbType = SqlDbType.Structured;
to getInfo () .
Но я все еще запутался с логикой, где это следует заменить (с DT) , чтобы помочь мне с логикой () . Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/310 ... -procedure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»