为什么我在文本框中得到无效的输出

本文关键字:无效 输出 文本 为什么 | 更新日期: 2023-09-27 18:13:32

文本框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();
        }
     }
 }

为什么我在文本框中得到无效的输出

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

"数据源=YourHostName;初始目录=YourDatabaseName;集成安全=True;池=False"

您在连接字符串中列出tabby,但在您在聊天中剪切和粘贴的模式中,它声明Use [Demo]作为数据库,这使我相信这可能是连接字符串问题。

你的字符集匹配吗?如果c#代码期望其他内容,则来自数据库的作为NCHAR存储的unicode可能会被打乱。

可能是您忘记将代码放在SqlCommand和Reader的适当括号中:

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