为什么我在文本框中输出无效?

时间:2011-11-02 16:35:30

标签: c# asp.net visual-studio-2010

文本框1 2和4的输出将作为单个字符后跟空格。

示例:类似于DB中的值为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 个答案:

答案 0 :(得分:1)

Adi,在查看了您发送的源代码和数据库架构后,看起来它应该全部工作,我想知道您的连接字符串是否不正确,因为您在我们的SO聊天会话中发送了架构。当我将连接字符串更改为我的主机名和数据库名称时,它按预期工作:

“数据源= YourHostName ;初始目录= YourDatabaseName ;集成安全性= True;池化=假”

您在连接字符串中列出 tabby ,但在您剪切并粘贴在聊天中的架构中,它将Use [Demo]表示为数据库,这使我相信它可能是一个连接字符串问题。

答案 1 :(得分:0)

你的字符集是否匹配?如果C#代码期待别的东西,来自存储为NCHAR的数据库的unicode可能会受到损坏。

答案 2 :(得分:-1)

可能是你忘了把你的代码放在SqlCommand和Reader的正确括号中:

using (var cmd = new SqlCommand("select * ... " + textBox1.Text, conn))
{
    using (var rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
         ...
        }
    }
}