SQL Ntext элементы, имеющие только первые два символа, прочитанные в - PullRequest
0 голосов
/ 10 марта 2020

В настоящее время я программирую программу C#, которая позволяет ученикам входить в интерфейс, проверять оценки и т. Д. c. Администраторы могут создавать новых пользователей. Идентификаторы ученика - это 9-ди git коды, начинающиеся с «95». Когда администратор создает нового пользователя, я хочу go через базу данных, чтобы убедиться, что введенный ими идентификационный номер еще не занят.

Для этого у меня есть следующий код:

connection.Open();
readerUsers = commandUsers.ExecuteReader();

while (readerUsers.Read())
{
    MessageBox.Show(readerUsers[2].ToString());

    if(readerUsers[2].ToString() == IDNum)
    {
        userAlreadyExists = true;
        break;
    }
}

connection.Close();

И в моей таблице пользователей, к которой подключены readerUsers и commandUsers, у меня есть следующее:

IDuser     Username    95Number    Password   Active   Admin
-------------------------------------------------------------
  1          sward     951619984     uo99lb    True     True
 ...          ...         ...         ...      ...      ...

Теперь, когда я приступил к тестированию своего кода, создав пользователя с идентификационным номером 951619984 (номер уже введен в базу данных), userAlreadyExists все равно останется ложным. Поэтому я заставил программу показать окно сообщения каждого элемента в столбце 95Number (тип Ntext). Каждый раз в окне сообщения отображается только «95».

Я очень новичок в программировании с базами данных, поэтому я прошу прощения, если это очень новый вопрос, но я не уверен, что нужно сделать, чтобы получить вся строка из этого ntext столбца. Может кто-нибудь объяснить, что я делаю не так? Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вот лучший способ сделать это:

var connstr = ConfigurationManager.ConnectionStrings["your key"].ConnectionString;
var sql = "SELECT COUNT(*) FROM Users WHERE [95number]=@num";
using (var conn = new SqlConnection(connstr))
using (var cmd = new SqlCommand(sql, conn))
{
  cmd.Parameters.Add("num",SqlDbType.Int).Value = IDNum;
  conn.Open();
  var result = cmd.ExecuteScalar();
  userAlreadyExists = result > 0;
}
0 голосов
/ 11 марта 2020

Я делал мины таким образом.

string Qstring = "Select 95number where 95number = '95#########'";

 using (SqlConnection Con = new SqlConnection(Form1.ConnectionStringGen))
            using (SqlCommand Com = con.CreateCommand())
            {


                Com.CommandText = Qstring;
                con.Open();

                using (SqlDataReader Reader = Com.ExecuteReader())
                {
                    if(Reader.Read())
                    {
                       string 95Numb = Reader["95Number"].ToString();
                       Messagebox.show(95Numb);

                       userAlreadyExists = true;

                       //meaning if the reader reads an item it will prompt 

                    }
                    else
                    {

                     userAlreadyExists = false;

                   }
                }
                con.Close();
            }

        }
        catch (Exception)
        {

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