Как это сделать, если пользователь оставляет текстовое поле почтовый индекс, а затем заполняет текстовое поле город из SQL server
Привет!
У меня есть публичный SQL server, и я хочу решить, пользователь заполняет почтовый индекс и оставляет текстовое поле, а затем выполняет один sqlquery, чтобы автоматически заполнить правильный город для почтового индекса
Что я уже пробовал:
private void txt_tanul_irszam_Leave(object sender, System.EventArgs e) { if (txt_tanul_irszam.Text!=null) { string connectionstring = null; SqlConnection con; connectionstring = "Data Source =""; con = new SqlConnection(connectionstring); } }
Eric Lynch
Почтовые индексы-это сложная штука для каждой страны. Вам нужно решить три проблемы: 1) найти почтовый индекс в свободном адресе (надеюсь, у вас есть фиксированный адрес Поля); 2) хороший источник информации о почтовом индексе и 3) Очень простой поиск. Во-вторых, проверьте GeoNames.org. В-третьих, его действительно легко кодировать. Как только вы знаете почтовый индекс и располагаете источником информации, просто опишите схему (формат базы данных), и любой желающий здесь сможет предложить простое решение.
Member 13873270
Страна-это фикс. У меня есть почтовые индексы одной страны с названиями городов
Member 13873270
Таблица почтовых кодов(столбец почтовый индекс города)
Eric Lynch
Ваш ответ немного лаконичен (и неясен)...не совсем схема. Поэтому я вынужден сделать некоторые предположения. Я предположу следующее: Вы знаете свою строку подключения, ваше имя таблицы - "Postalcode", ваши имена столбцов - "postalcode" и "city", оба столбца совместимы со строкой (например, varchar, nvarchar и т. д.), таблица (минимально) индексируется почтовым индексом (для производительности), вы хотите использовать ADO.NET (вместо LINQ to SQL или LINQ to Entities), и ваш вопрос заключается в том, как получить название города с учетом почтового индекса.
Если все это верно (огромное если), то первое, что вы должны знать, это то, что большинство классов SQL в C# являются IDisposable, поэтому вы должны использовать оператор "using".
Ваше решение должно быть примерно следующим. Обратите внимание, что я печатаю его здесь от руки, так что могут быть некоторые незначительные синтаксические ошибки.
использование (var connection = new SqlConnection(connectionString))
{
соединение.Открыть();
используя (ВАР команду = новая команда sqlcommand("Выберите город из Postalcodes где почтовый индекс=@город", подключение))
{
команда.Параметры.AddWithValue("postalcode", "01010");
используя (var reader = команда.Метода executereader())
{
string city = reader.Read() ?
reader[0] as string : "неизвестно";
если (читатель.читать())
город = "неоднозначный";
}
}
}
Member 13873270
Эта программа будет студенческой регистрационной формой. пользователь введите правильный почтовый индекс "почтовый индекс" текстовое поле, когда пользователь (в случай) поле выберите город, где почтовый индекс почтовый индекс = что пользователя с учетом. Этот результат распечатайте в текстовом поле city
Eric Lynch
Предыдущий ответ (с возможно исправленными именами таблиц / столбцов) должен делать то, что вы хотите. Вместо того чтобы назначать строку города, назначьте текстовое поле.
Member 13873270
публичная форма student_regist_form()
{
метод InitializeComponent();
}
частная txt_st_postalcode_Leave недействительным(объект отправителя, система.EventArgs e)
{
используя (подключение ВАР = новое sqlconnection("источник данных=mypublicip\\SQLEXPRESS2017;начальный каталог=tanuloiregrendszer; пользователь = мой_логин; пароль=мойпароль;"))
{
соединение.Открыть();
используя (ВАР команду = новая команда sqlcommand("выбрать * из города postalcodes где почтовый индекс=@город", подключение))
{
команда.Параметры.AddWithValue("", "01010");
используя (var reader = команда.Метода executereader())
{
строка txt_st_city = reader.Read() ?
считыватель[0] в виде строки : "город";
если (читатель.читать())
txt_st_city = "город";
}
}
}
}
}
Я написал код. Запустите программу без ошибок, но ничего не произошло.
Eric Lynch
Я предлагаю пройти через него в отладчике, "ничто" - это слишком широкая категория, чтобы помочь с ней. Вам нужно будет изолировать, какая линия не дала вам ожидаемого результата. Как минимум, ваш SQL-запрос (который включает в себя "* City") не кажется допустимым. "*" Обычно используется для выбора всех столбцов. В этом случае первый столбец (reader[0]) может не быть столбцом city. Первоначальный запрос, который я предложил, включает только столбец city.
Кроме того, первый параметр AddWithValue опускает имя параметра, так что это не будет работать правильно.
Наконец, я не вижу, где в вашем коде вы присваиваете значение текстовому полю. Вы назначаете его только локальной переменной txt_st_city, которая затем отбрасывается (когда она выходит за пределы области видимости).
Я бы предложил, возможно, найти там краткий учебник, который охватывает основы, и сначала проработать его. Извините, но Q&A действительно не место, чтобы охватить основы. Это больше для того, чтобы ответить на конкретные вопросы.
Member 13873270
Извините, я ищу методы для этого пути, но не нахожу. У меня есть 3 colunm в таблице postalcode SQL (1. Postalcode (float) 2. Город(nvarchar(255)) 3.PartofCity(nvarchar)(255)) Разрешить нули включены на каждом из них.
Eric Lynch
Справедливости ради, я попытался найти хорошую статью о ADO, чтобы рекомендовать ее. У большинства были какие-то проблемы. Тем не менее, я думаю, что вам нужно немного больше работать над основами (ходить, прежде чем бежать).
Я действительно хочу продолжать помогать, но я думаю, что могу принести больше вреда, чем пользы.
Зная, что "Postalcode" - это тип данных float, вам нужно будет настроить следующую строку...
команда.Параметры.AddWithValue("postalcode", 1010F);
Чтобы быть ясным, важно, чтобы вы понимали, что первый параметр-это имя параметра SQL (которое должно соответствовать SQL-запросу). Также важно понимать, что это значение является значением с плавающей запятой (по типу данных), которое соответствует тому, что пользователь ввел для почтового индекса.
Я все еще думаю, что вам нужно узнать больше (SQL, ADO, C# и т. д.), Прежде чем продолжить. Это лучшее (опрометчиво), что я могу продолжать помогать вам. После этого я закончу. Программирование трудно, когда вы только начинаете. Вы действительно ничему не научитесь (или не достигнете своей цели), если сами не проработаете некоторые основы.
Прошу прощения, если я был так снисходителен. Ваши догадки указывают на то, что у вас может быть талант к этому. Но вы ничему не научитесь, если не попытаетесь разобраться в этом сами.
Member 13873270
Я изучаю разработку программного обеспечения, и эта диссертация будет его маленькой частью, то, что мы еще не изучили. Это такая игра, что если мне будет все равно, ты потеряешься.
Richard MacCutchan
Вам просто нужно сделать SQL-запрос, чтобы найти город, который соответствует почтовому индексу. В чем проблема, если у вас уже есть данные в ваших таблицах?
Member 13873270
Моя проблема заключается в том, что метод в C# Visual studio после того, как пользователь заполнил текстовое поле почтового индекса и когда пользователь покидает текстовое поле почтового индекса, то автоматически заполняет текстовое поле города правильным городом, который пользователь заполнил текстовое поле почтового индекса.
F-ES Sitecore
Простое переформулирование проблемы-это не уточнение.
Давайте начнем с самого начала...есть ли у вас таблица, содержащая, какой город связан с каким почтовым индексом? Или ваш реальный вопрос заключается в том, как получить эти данные?
Member 13873270
да, у меня есть полная таблица. у меня есть вопрос, Как получить эти данные, когда пользователь вводит postalcode в текстовое поле.
Если почтовый индекс правильный, то заполните текстовое поле город правильным городом
Richard MacCutchan
Вы ищете в таблице почтовый индекс. В чем именно заключается ваша проблема при кодировании простого поиска?
Member 13873270
что такое правильный способ(код), поле оставить событие?
Richard MacCutchan
j snooze
Это веб-форма или форма windows? В любом случае вы должны подключить свой xt_tanul_irszam_Leave к событию в текстовом поле. Что-то вроде потерянного фокуса.