我写了个存储过程,在查询分析器中已测试通过,我想用传参的方法结合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();
}
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();
}
应改为 dataGrid1.DataSource = ds;
dataGrid1.DataMember="selectcounts";
param.Value = Convert.ToChar(@address);
修改成
param.Value = @address;@address变量命名成address
param.Value = address;Convert.ToChar(string s)的功能是将 String 的第一个字符转换为 Unicode 字符。
你传递到数据库的数据已经被剪掉了。可以进行单步调试来解决问题。
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
将param.Value = Convert.ToChar(@address);
修改成
param.Value = @address;
就可以了,能说下为什么吗?
这是把str的第一个字符转换成unicode字符...
当str.length>1时,会引发FormatException异常...也就是说:convert.tochar(str)//str.length必须为1
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();
}