Почему я получаю неверный вывод в текстовом поле? - PullRequest
2 голосов
/ 02 ноября 2011

Вывод текстовых полей 1, 2 и 4 идет в виде одного символа с пробелами.

Пример: например, значение в БД равно 40, а в текстовом поле его значение равно 4.

Тип данных Nchar(10), а в одном столбце - int. В обоих случаях происходит неверный вывод.

namespace WebApplication2
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    
        }      

        public void SomeMethod()
        {
            using (var conn = new SqlConnection(
                                 "Data Source=soniya-9393b956;Initial Catalog=tabby;Integrated Security=True;Pooling=False"))
            {
                conn.Open();

                using (var cmd = new SqlCommand("select * from students where ID=" + textBox1.Text, conn))
                using (var rdr = cmd.ExecuteReader())
                   while (rdr.Read())
                   {
                       TextBox1.Text = rdr["id"].ToString();
                       TextBox2.Text = rdr["name"].ToString();
                       TextBox3.Text = rdr["class"].ToString().Trim();
                       TextBox4.Text = rdr["roll"].ToString();
                       //  builder.Append(rdr[0]).Append(Environment.NewLine);
                   }        
              }        
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            SomeMethod();
        }
     }
 }

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

Ади, после просмотра отправленного вами источника и схемы базы данных, похоже, что все должно работать, мне интересно, неверна ли ваша строка подключения, учитывая схему, которую вы отправили в нашем сеансе чата SO.Когда я изменил строку подключения на свое имя хоста и имя базы данных, он работал как ожидалось:

"Источник данных = YourHostName ; Начальный каталог = YourDatabaseName ; Интегрированная безопасность =True; Pooling = False "

Вы перечислили tabby в строке подключения, но в схеме, которую вы вырезали и вставили в чат, в качестве базы данных было указано Use [Demo], что заставляет меня поверитьэто может быть проблема строки подключения.

0 голосов
/ 02 ноября 2011

Возможно, вы просто забыли поместить код в соответствующие скобки для SqlCommand и Reader:

using (var cmd = new SqlCommand("select * ... " + textBox1.Text, conn))
{
    using (var rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
         ...
        }
    }
}
0 голосов
/ 02 ноября 2011

Ваши кодировки совпадают? Unicode, поступающий из базы данных, хранящейся как NCHAR, может быть искажен, если код C # ожидает чего-то другого.

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