NOOR ULLAH JAN Ответов: 3

Как отобразить базу данных ms access в c#.net (помогите мне) ошибка


private void AcNotextBox_TextChanged(object sender, EventArgs e)
        {
            string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;

            string cmdString = "SELECT * FROM tblBasicInfo WHERE ID =" + int.Parse(AcNotextBox.Text);

            using (OleDbConnection conn = new OleDbConnection(connString))
            {
                using (OleDbCommand cmd = new OleDbCommand(cmdString, conn))
                {
                    conn.Open();

                    OleDbDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        NametextBox.Text = (reader["SName"].ToString());
                        FNametextBox.Text = (reader["FName"].ToString());
                        AddresstextBox.Text = (reader["Address"].ToString());
                        CelltextBox.Text = (reader["Cell"].ToString());
                        NationalitytextBox.Text = (reader["Nationality"].ToString());
                        ReligiontextBox.Text = (reader["Religion"].ToString());
                        FCNICNotextBox.Text = (reader["FCNICNo"].ToString());
                        FatherOccuptextBox.Text = (reader["FOccup"].ToString());
                        TransportFacilitytextBox.Text = (reader["TranFacility"].ToString());
                        InFiguredateTimePicker.Text = (reader["DOB"].ToString());
                        DateofAdmdateTimePicker.Text = (reader["DateofAdm"].ToString());
                        RegistrationNotextBox.Text = (reader["RegNo"].ToString());
                        TranFeetextBox.Text = (reader["TransportChr"].ToString());
                        SRemarkstextBox.Text = (reader["SpecialRemarks"].ToString());
                        ClassofcomboBox.Text = (reader["ClassofAdm"].ToString());
                        ClassOfReadcomboBox.Text=(reader["ClassofReading"].ToString());


Что я уже пробовал:

Вызов данных для MS доступа к данным в таблице текстовое поле заполнить, но нажмите клавишу Backspace, чтобы открыть сообщение для меня

FormatException was unhandled<br />
An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll


Дополнительная информация: входная строка была не в правильном формате.

3 Ответов

Рейтинг:
27

OriginalGriff

Мы не можем сказать - это будет зависеть от ваших данных, а также от вашего кода, и у нас нет доступа к этому.
Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
12

Maciej Los

Я предполагаю, что причина ваших неприятностей находится в нижней строке:

DateofAdmdateTimePicker.Text = (reader["DateofAdm"].ToString());


Вы должны знать, что установка текстового свойства Datetimepicker для[^] не устанавливает значения.
С другой стороны а DateofAdm поле может быть Null.

Таким образом, Вы должны проверить, не является ли DateofAdm нулевым, чем установить значение для DateTimePciker.
DateofAdmdateTimePicker.Value = DBNull.Value.Equals(reader["DateofAdm"]) ? DateofAdmdateTimePicker.MinDate : reader["DateofAdm"];


Для получения более подробной информации, пожалуйста, смотрите:
Использование элемента управления DateTimePicker[^]
Значение dbnull.Поле Значения (Система)[^]


NOOR ULLAH JAN

не работает та же проблема

NOOR ULLAH JAN

строка connString = ConfigurationManager.ConnectionStrings["dbx"].Параметр connectionString;

строка cmdString = "SELECT * FROM tblBasicInfo WHERE ID =" +Convert.ToInt32(IDtextBox.Text);

using (OleDbConnection conn = new OleDbConnection(connString))
{
используя (объект oledbcommand команду cmd = новый объект oledbcommand(cmdString, соед))
{
Коннектикут.Открыть();

OleDbDataReader reader = cmd.Метода executereader();
если (читатель.читать())
{
SttextBox.Text = (reader["SName"].Метод toString());
FaNametextBox.Text = (reader["FName"].Метод toString());
}

Рейтинг:
11

Richard Deeming

Наиболее вероятной причиной является эта линия:

string cmdString = "SELECT * FROM tblBasicInfo WHERE ID =" + int.Parse(AcNotextBox.Text);

Нет никакой гарантии, что то, что пользователь ввел в это поле, может быть преобразовано в целое число. Вам нужно использовать инт.Метод tryparse[^] чтобы попытаться проанализировать значение и сообщить об ошибке пользователю, если оно не может быть проанализировано.

Однако- ты все равно не должен был так поступать. В то время как ваш код избегает a SQL-инъекция[^] уязвимость в данном конкретном случае (поскольку параметр был проанализирован как int), вы все равно должны использовать параметризованный запрос. Это потенциально повысит производительность, позволяя СУБД кэшировать план запроса; и это хорошая привычка для тех случаев, когда не иммунитет к SQLi.

int id;
if (!int.TryParse(AcNotextBox.Text, out id))
{
    // TODO: Report the problem to the user
    return;
}

string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;
string cmdString = "SELECT * FROM tblBasicInfo WHERE ID = ?";

using (OleDbConnection conn = new OleDbConnection(connString))
using (OleDbCommand cmd = new OleDbCommand(cmdString, conn))
{
    cmd.Parameters.AddWithValue("ID", id);
    
    conn.Open();
    using (OleDbDataReader reader = cmd.ExecuteReader())
    {
        if (reader.Read())
        {
            ...
        }
    }
}


Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]


NOOR ULLAH JAN

Пачка благодарностей у вас есть решить мою проблему.... ошибка удалена спасибо Вам большое

Решение 3