我写了个存储过程,在查询分析器中已测试通过,我想用传参的方法结合datagrid将查询的结果显示出来,下面是我的代码,不知那错了,请大家帮忙看下string @xingming;//记录员工姓名的变量
string @address;//记录员工地址的变量
string @telephone;//记录员工联系方式的变量
private void button1_Click(object sender, System.EventArgs e)
{
@xingming=textBox1.Text;
@address=textBox2.Text;
@telephone=textBox3.Text;
SqlConnection conn=new SqlConnection();
conn.ConnectionString ="server=localhost;database=xiao;user id=sa;password=sa";
conn.Open();
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "selectcounts";//所调用的存储过程的名称
da.SelectCommand.CommandType = CommandType.StoredProcedure;
//以下为具有参数时的不同代码
SqlParameter param;
param = new SqlParameter("@xingming",SqlDbType.VarChar);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToChar(@xingming);
da.SelectCommand.Parameters.Add(param);
            //  这样就添加了一个输入参数(姓名)。
param = new SqlParameter("@address", SqlDbType.VarChar);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToChar(@address);
da.SelectCommand.Parameters.Add(param);
//  这样就添加了一个输入参数(地址)。
param = new SqlParameter("@bumeng", SqlDbType.VarChar);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToChar(@bumeng);
da.SelectCommand.Parameters.Add(param);
//  这样就添加了一个输入参数(部门)。
param = new SqlParameter("@telephone", SqlDbType.VarChar);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToChar(@telephone);
da.SelectCommand.Parameters.Add(param);
//  这样就添加了一个输入参数(联系方式)。
DataSet ds=new DataSet();
da.Fill(ds,"selectcounts");
//da.Fill()=ds.Tables("selectcounts");
dataGrid1.DataSource =da;
conn.Close();
}
string @bumeng;//记录部门名称的变量
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
@bumeng=comboBox1.SelectedItem.ToString();
}

解决方案 »

  1.   

    dataGrid1.DataSource =da;
    应改为 dataGrid1.DataSource = ds;
    dataGrid1.DataMember="selectcounts";
      

  2.   

    还有这个问题:未处理的“System.FormatException”类型的异常出现在 mscorlib.dll 中。其他信息: 字符串的长度只能为一个字符。
      

  3.   

    Convert.ToChar都去掉,比如
    param.Value = Convert.ToChar(@address);
    修改成
    param.Value = @address;@address变量命名成address
    param.Value = address;Convert.ToChar(string s)的功能是将 String 的第一个字符转换为 Unicode 字符。 
    你传递到数据库的数据已经被剪掉了。可以进行单步调试来解决问题。
      

  4.   

    可以参考例子,
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspxhttp://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx
    http://blog.csdn.net/zhzuo/archive/2004/10/28/156647.aspx
      

  5.   

    zhzuo(秋枫) 
     将param.Value = Convert.ToChar(@address);
    修改成
    param.Value = @address;
    就可以了,能说下为什么吗?
      

  6.   

    to:convert.tochar(str)
    这是把str的第一个字符转换成unicode字符...
    当str.length>1时,会引发FormatException异常...也就是说:convert.tochar(str)//str.length必须为1
      

  7.   

    已好了
    private void Form1_Load(object sender, System.EventArgs e)
    {
    SqlConnection conn=new SqlConnection();
    conn.ConnectionString ="server=localhost;database=xiao;user id=sa;password=sa";
    conn.Open();
    string sql="select 部门名称 from test_company";
    DataSet ds=new DataSet();
    SqlDataAdapter apter=new SqlDataAdapter(sql,conn);
    apter.Fill(ds,"test_company");
    this.comboBox1.DataSource =ds;
    this.comboBox1.DisplayMember ="test_company.部门名称";
    conn.Close();
    } private void button1_Click(object sender, System.EventArgs e)
    {
    @xingming=textBox1.Text.Trim().ToString();
    @address=textBox2.Text.Trim().ToString();
    @telephone=textBox3.Text.Trim().ToString();
    SqlConnection conn=new SqlConnection();
    conn.ConnectionString ="server=localhost;database=xiao;user id=sa;password=sa";
    conn.Open();
    SqlDataAdapter da=new SqlDataAdapter();
    da.SelectCommand = new SqlCommand();
    da.SelectCommand.Connection = conn;
    da.SelectCommand.CommandText = "selectcounts";//所调用的存储过程的名称
    da.SelectCommand.CommandType = CommandType.StoredProcedure;
    //以下为具有参数时的不同代码
    SqlParameter param;
    param = new SqlParameter("@xingming",SqlDbType.VarChar);
    param.Direction = ParameterDirection.Input;
    param.Value = @xingming;
    da.SelectCommand.Parameters.Add(param);
                //  这样就添加了一个输入参数(姓名)。
    param = new SqlParameter("@address", SqlDbType.VarChar);
    param.Direction = ParameterDirection.Input;
    param.Value = @address;
    da.SelectCommand.Parameters.Add(param);
    //  这样就添加了一个输入参数(地址)。
    param = new SqlParameter("@bumeng", SqlDbType.VarChar);
    param.Direction = ParameterDirection.Input;
    param.Value =@bumeng;
    da.SelectCommand.Parameters.Add(param);
    //  这样就添加了一个输入参数(部门)。
    param = new SqlParameter("@telephone", SqlDbType.VarChar);
    param.Direction = ParameterDirection.Input;
    param.Value =@telephone;
    da.SelectCommand.Parameters.Add(param);
    //  这样就添加了一个输入参数(联系方式)。
    DataSet ds=new DataSet();
    da.Fill(ds,"selectcounts");
    //da.Fill()=ds.Tables("selectcounts");
    dataGrid1.DataSource =ds;
    dataGrid1.DataMember="selectcounts";
    conn.Close();
    } private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    //记录部门名称的变量
    bumeng=comboBox1.GetItemText(comboBox1.SelectedItem).Trim();
    //bumeng=comboBox1.SelectedText.Trim().ToString();
    }