SqlCommand не работает с внешним ключом dbtype int - PullRequest
0 голосов
/ 23 марта 2019

У меня проблема здесь, ранее я получал значения из SqlCommand из столбца varchar в моей таблице.

С этим кодом:

connection.Open();

request += "SELECT * ";
//SqlCommand GetCommand = new SqlCommand("SELECT  RA_BINAIRE FROM MR_RAPPORT WHERE RA_ID=@RA_ID");
request += "FROM " + table + " WHERE " + searchcol + " = " + "@ID";
//request += "FROM " + table + " WHERE CO_ID = " + "@ID";

SqlCommand GetCommand = new SqlCommand(request, connection);
Int16 convertedValue = this.ConvertByType(searchcolType, code);
Console.WriteLine(convertedValue.GetType());

var convertedValueHelper = SqlHelper.GetDbType(convertedValue.GetType());
SqlDbType dbType = SqlHelper.GetSqlByType(searchcolType);
//var param = new SqlParameter()
//{
//    SqlDbType = SqlHelper.GetSqlByType(searchcolType),
//    TypeName = SqlHelper.GetDbType(convertedValue.GetType()),
//    Value = Convert.ToInt16("12")
//};
//var param = new SqlParameter("ID", convertedValue);
//GetCommand.Parameters.Add(param);
GetCommand.Parameters.AddWithValue("ID", convertedValue);
GetCommand.Connection = connection;

SqlDataAdapter sda = new SqlDataAdapter(GetCommand);
DataTable dt = new DataTable();
sda.Fill(dt);

SqlDataReader reader = GetCommand.ExecuteReader();
reader.Read();

DataTable dataTable = new DataTable();
dataTable.Load(reader);

string jsonStr = Utils.DataTableToJsonObj(dataTable);
connection.Close();

Работает нормальнос моим столбцом varchar с типом string, но с моим идентификатором внешнего ключа, равным SqlDbType.SmallInt и значением int16, данные не извлекаются.

Я пробовал с другим столбцом varchar, и он также работает.

Не могу понять, почему ....

Любая помощь здесь будет очень признательна.

Заранее спасибо, ребята,

1 Ответ

0 голосов
/ 23 марта 2019

Ребята, Я решил это с помощью sqldataadapter вместо читателя ... Не знаю почему ... Но это работает

                    request += "SELECT * ";
                //SqlCommand GetCommand = new SqlCommand("SELECT  RA_BINAIRE FROM MR_RAPPORT WHERE RA_ID=@RA_ID");
                request += "FROM " + table + " WHERE " + searchcol + " = " + "@ID";
                //request += "FROM " + table + " WHERE CO_ID =12";
                SqlCommand GetCommand = new SqlCommand(request, connection);
                var convertedValue = this.ConvertByType(searchcolType, code);
                SqlDbType convertedValueHelper = SqlHelper.GetDbType(convertedValue.GetType());
                GetCommand.Parameters.Add("ID", convertedValueHelper).Value = convertedValue;
                GetCommand.Connection = connection;
                SqlDataAdapter sda = new SqlDataAdapter(GetCommand);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                string jsonStr = Utils.DataTableToJsonObj(dt);
                connection.Close();
                return Ok(jsonStr);

Хороших выходных =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...