解决方案 »

  1.   

    哥们还是不行啊
    我这样写还是不对么?
    db.Conn.Open();
                    string sql = string.Format("select nickname from userinfo where uid ='{0}'", id);
                    SqlCommand cmd = new SqlCommand(sql,db.Conn);
                    SqlDataReader sdr =cmd.ExecuteReader();
                    while (sdr.Read()) {                    lalnickname.Text = sdr.ToString();
                    }
      

  2.   

    报什么错?另外 lalnickname.Text = sdr["nickname"].ToString();还有这是一个while循环,如果你只想第一个,加个break.
      

  3.   

    额 没有报错,只不过lalnickname 没有显示啊
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Aptech.UI;
    using System.Data.SqlClient;namespace MyQQ
    {
        public partial class frminfo : Form
        {
            public frminfo()
            {
                InitializeComponent();
            }        
            private void sideBar1_Load(object sender, EventArgs e)
            {
                sbfriends.AddGroup("我的好友");        }        private void frminfo_Load(object sender, EventArgs e)
            {
                frmmain f = new frmmain();
                string id = f.id;
                DBHelper db = new DBHelper();
                try
                {
                    db.Conn.Open();
                    string sql = string.Format("select nickname from userinfo where uid ='{0}'", id);
                    SqlCommand cmd = new SqlCommand(sql,db.Conn);
                    SqlDataReader sdr =cmd.ExecuteReader();
                    while (sdr.Read()) {                    lalnickname.Text = sdr[0].ToString();
                    }
                    
                }
                catch (Exception)
                {                throw;
                }
                finally {
                    db.Conn.Close();
                }
                
            }
        }
    }
      

  5.   

    if (cmd.ExecuteScalar() != null)
    {
       lalnickname.text=cmd.ExecuteScalar().tostring();}
      

  6.   

    http://www.360doc.com/content/12/1124/12/10939365_249921984.shtml
      

  7.   

    是因为cmd.ExecuteScalar()取回的是空值,所以报错了,如果找不到记录,那么ExecuteScalar则会返回null
      

  8.   

    nickname,我才这个应该不是数字吧.
    你把
    int t = (int)cmd.ExecuteScalar();
    lalnickname.text=t.tostring();
    这两句改成: lalnickname.Text = cmd.ExecuteScalar().ToString();就行了即使程序通了,也还应该加上非空的判断,如:7楼
      

  9.   

    lalnickname.Text = sdr[0].ToString();你看看你这里获取的是不是id你要获取名字的值,你可以把你命名的列名 sdr["列名"].ToString();这样获取;
      

  10.   

    但是我返回的不是null 而是-1啊? 这是为什么啊啊
      

  11.   


    db.Conn.Open();
    string sql = string.Format("select nickname from userinfo where uid ='{0}'", id);
    SqlCommand cmd = new SqlCommand(sql,db.Conn);
    var result  = cmd.ExecuteScalar();
    var t = result == DBNull.Value?"":result.toString();
    lalnickname.text=t;
      

  12.   


    改成这样:
    db.Conn.Open();
    string sql = string.Format("select nickname from userinfo where uid ='{0}'", id);
    SqlCommand cmd = new SqlCommand(sql,db.Conn);
    // ExecuteScalar 返回的是一个 object,
    // 也就是你要的那个 nickname,所以直接转成 string 就行了,
    // 否则 nickname 转成 int 就报错了!
    string nickname = cmd.ExecuteScalar() as string;
    lblnickname.text = nickname;
      

  13.   

    还有,你可以监视你那个SQL语句,看看ID有没有传进去,是不是你这个语句有问题导致查询不错结果呢?
      

  14.   

    cmd.ExecuteScalar()这个命令返回的是查询数据库之后的首行首列的内容,并且为Object类型,
    Lz你这里查询的是nickname字段,应该是字符串类型的吧,为何要去转为int