我已经纠正了之前的问题,现在可以向表中插入数据了。
现在,当读取带有姓名、年龄、性别、城市、TypeofDisease条件的数据时,没有得到result..as结果总是得到"System.Data.SqlClient.SqlDataReader“。下面是我的存储过程:
CREATE PROCEDURE SearchPatient
(
@Name varchar(50),
@Age int,
@Gender varchar(50),
@City varchar(50),
@TypeofDisease varchar(50)
)
AS
select * from Patient where Name=@Name and Age=@Age and Gender=@Gender and City=@City and TypeofDisease=@TypeofDisease
GO
下面是我的事件代码:
protected void BtnSearch_Click(object sender, EventArgs e)
{
string name = TxtName.Text.Trim();
int age = Convert.ToInt32(TxtAge.Text);
string gender;
if (RadioButtonMale.Checked)
{
gender = RadioButtonMale.Text;
}
else
{
gender = RadioButtonFemale.Text;
}
string city = DropDownListCity.SelectedItem.Value;
string typeofdisease = "";
foreach (ListItem li in CheckBoxListDisease.Items)
{
if (li.Selected)
{
typeofdisease += li.Value;
}
}
string[] sl=typeofdisease.Split();
foreach (string s in sl)
{
ListItem itm = CheckBoxListDisease.Items.FindByValue(s);
if (itm != null)
{
itm.Selected = true;
}
}
string ConString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
SqlConnection con = new SqlConnection(ConString);
con.Open();
SqlCommand com = new SqlCommand("SearchPatient", con);
com.CommandType = CommandType.StoredProcedure;
try
{
com.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = name;
com.Parameters.Add("@Age", SqlDbType.Int).Value = age;
com.Parameters.Add("@Gender", SqlDbType.VarChar, 50).Value = gender;
com.Parameters.Add("@City", SqlDbType.VarChar, 50).Value = city;
com.Parameters.Add("@TypeofDisease", SqlDbType.VarChar, 50).Value = sl.ToString();
SqlDataReader dr;
dr = com.ExecuteReader();
StringBuilder sb = new StringBuilder();
sb.Append(dr);
lblPatientDetails.Text = sb.ToString();
}
catch
{
throw;
}
finally
{
con.Close();
com.Dispose();
}
}
请有人修改我的代码,以达到我的预期效果..
发布于 2010-02-28 06:12:24
例如
从当前row)
您总是得到"System.Data.SqlClient.SqlDataReader“而不是某个结果的原因是,将dr赋给一个字符串(通过StringBuilder.Append的方式)是隐式地使用这个对象的ToString()方法,该方法生成这个特定的字符串(这是一个有用的调试特性,但在其他方面并不十分适用)。
发布于 2010-02-28 06:58:16
dr = com.ExecuteReader();
StringBuilder sb = new StringBuilder();
sb.Append(dr);
lblPatientDetails.Text = sb.ToString();
更改为:
using(SqlDataReader rdr = com.ExecuteReader())
{
if(rdr.HasRows)
{
while(rdr.Read())
{
sb.Append(rdr.GetString(0));
..... etc
}
}
}
或者,您可以创建DataSet。
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(com))
{
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
return dataSet;
}
https://stackoverflow.com/questions/2350244
复制