0

为什么我从数据库中检索到的值没有显示在文本框中?我已经编写了以下代码,但它不起作用。我记住,这段代码是在表单加载事件上编写的。请告诉我我做错了什么?

using (SqlConnection myConnection = new SqlConnection(Common.GetDBConnectionString()))
{
    using (SqlCommand cmd = new SqlCommand("P.ID from dbo.Tb_Patient", myConnection))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        myConnection.Open();

        //SqlParameter custId = (cmd.Parameters.AddWithValue("@dbo.Tb_Patient", 10));

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                string nameValue = reader["P.ID"].ToString();
                MessageBox.Show("value is:",nameValue);

                txtid.Text = nameValue;


            }
            else {

                MessageBox.Show("Data is not retrived");
            }
      }
  }
}

从评论更新:

CREATE TABLE [dbo].[Tb_Patient]( [P.Id] [int] IDENTITY(1,1) NOT NULL, [P.Name] [nvarchar](50) NOT NULL, [P.Age] [nvarchar](50) NOT NULL, [P.Contact] [nvarchar](50) NOT NULL, [P.Date] [datetime] NULL, [P.Occupation] [nvarchar](50) NOT NULL, [P.Gender] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Tb_Patient] PRIMARY KEY CLUSTERED ( [P.Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]

4

3 回答 3

3

此行似乎不是有效的 SQL 查询,也不是存储过程的名称:

using (SqlCommand cmd = new SqlCommand("P.ID from dbo.Tb_Patient", myConnection))

可能正确的文字是:

using (SqlCommand cmd = new SqlCommand("select [P.ID] from dbo.Tb_Patient", myConnection))

当然,它不是存储过程,而是普通的命令文本:

cmd.CommandType = CommandType.Text;

编辑:看到你的表的架构后,我已经更正了答案。唯一的错误是传递给数据库引擎的命令文本开头缺少 SELECT 子句。但是,您需要将字段名称括在方括号中P.ID

我建议更改字段名称。这种命名模式确实令人困惑,因为当您需要为存在于多个连接在一起的表中的名称添加前缀时使用它。

请参阅:名称的别名

于 2013-03-23T17:26:44.100 回答
0
  • 如果您不确定数据库是否不区分大小写,请始终使用与创建时相同的名称。CREATE TABLE [dbo].[Tb_Patient]( [P.Id] [int] ...
  • 用 终止命令字符串 ;

试试看

using (SqlConnection myConnection = new SqlConnection(connectionString))
{
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "SELECT [P.Id] from dbo.Tb_Patient;";
    cmd.CommandType = CommandType.Text;
    cmd.Connection  = myConnection;
    myConnection.Open();
    SqlDataReader reader = cmd.ExecuteReader();

    if (reader.Read())
        {
            string nameValue = reader["P.Id"].ToString();
            MessageBox.Show("value is:",nameValue);
            txtid.Text = nameValue;
        }
        else {
            MessageBox.Show("Data is not retrieved");
        }

    reader.Close();
}
于 2013-03-23T21:43:12.233 回答
0

使用存储过程或有效的 SQL 语句

select P.ID from dbo.Tb_Patient as P
于 2013-03-23T17:28:25.027 回答