下面代码c#查询SQL中的数据,怎么只显示一行数据,DB表的有多行数据的
如题,有什么好的方法,谢谢!UserInfou=null;SqlConnectioncon=newSqlConnection(DBHelper.conStr);try{c...
如题,有什么好的方法,谢谢!
UserInfo u = null;
SqlConnection con = new SqlConnection(DBHelper.conStr);
try
{
con.Open();
string sql = string.Format("select * from Product where 1=1 );
SqlCommand com = new SqlCommand(sql, con);
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
u = new UserInfo();
DataGridViewRow row = new DataGridViewRow();
int index = this.goodsDgv.Rows.Add();
this.goodsDgv.Rows[index].Cells["proId"].Value = Convert.ToInt32(dr["proId"]);
this.goodsDgv.Rows[index].Cells["proSpec"].Value = dr["proSpec"].ToString();
this.goodsDgv.Rows[index].Cells["proManuf"].Value = dr["proManuf"].ToString();
}
catch
{
}
finally
{
} 展开
UserInfo u = null;
SqlConnection con = new SqlConnection(DBHelper.conStr);
try
{
con.Open();
string sql = string.Format("select * from Product where 1=1 );
SqlCommand com = new SqlCommand(sql, con);
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
u = new UserInfo();
DataGridViewRow row = new DataGridViewRow();
int index = this.goodsDgv.Rows.Add();
this.goodsDgv.Rows[index].Cells["proId"].Value = Convert.ToInt32(dr["proId"]);
this.goodsDgv.Rows[index].Cells["proSpec"].Value = dr["proSpec"].ToString();
this.goodsDgv.Rows[index].Cells["proManuf"].Value = dr["proManuf"].ToString();
}
catch
{
}
finally
{
} 展开
5个回答
展开全部
你的方法肯定是有问题!
给你推荐一个方法 如下:
你上面写的一堆东西,不是很合理 ,一方面是不符合 3层架构的思想 ,另一个方面自己看着非常杂乱 非常不爽,建议用下3层架构, 不是说我们非得分上个3层 4层.或者N层 它是一种思想 它确实有它的可取之处, 建一个 DAL 类库 ,在该类库下 建一个DBHelper 的类 ,然后把所有增/删/改/查 的方法 全部封装在里面。
例如 下面的方法:
// 这是 执行所查询Sql语句 并将查询结果作为一个数据集返回的方法
public DataSet ExecuteQuery(string str)
{
DataSet dsResult = new DataSet();
try
{
StartDBConn();//打开数据库的方法
OracleDataAdapter OraDataAdapter = new OracleDataAdapter(str, OraConn);
OraDataAdapter.Fill(dsResult);
}
catch (Exception ex)
{
dsResult = null;
throw new Exception(ex.Message);
}
finally
{
CloseDBConn();
dsResult.Dispose();
}
return dsResult;
}
然后 在 Form_Load 或者 Page_Load的 时候
DataSet ds = tool.ExecuteQuery(l_sql);
GV_DETAIL.DataSource = ds;
GV_DETAIL.DataBind();
这样就OK了
给你推荐一个方法 如下:
你上面写的一堆东西,不是很合理 ,一方面是不符合 3层架构的思想 ,另一个方面自己看着非常杂乱 非常不爽,建议用下3层架构, 不是说我们非得分上个3层 4层.或者N层 它是一种思想 它确实有它的可取之处, 建一个 DAL 类库 ,在该类库下 建一个DBHelper 的类 ,然后把所有增/删/改/查 的方法 全部封装在里面。
例如 下面的方法:
// 这是 执行所查询Sql语句 并将查询结果作为一个数据集返回的方法
public DataSet ExecuteQuery(string str)
{
DataSet dsResult = new DataSet();
try
{
StartDBConn();//打开数据库的方法
OracleDataAdapter OraDataAdapter = new OracleDataAdapter(str, OraConn);
OraDataAdapter.Fill(dsResult);
}
catch (Exception ex)
{
dsResult = null;
throw new Exception(ex.Message);
}
finally
{
CloseDBConn();
dsResult.Dispose();
}
return dsResult;
}
然后 在 Form_Load 或者 Page_Load的 时候
DataSet ds = tool.ExecuteQuery(l_sql);
GV_DETAIL.DataSource = ds;
GV_DETAIL.DataBind();
这样就OK了
展开全部
你设断点 :int index = this.goodsDgv.Rows.Add();在这里
应该是你的index错了总是被覆盖
应该是你的index错了总是被覆盖
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int index = this.goodsDgv.Rows.Add(); 他返回的是什么啊 是不是覆盖了
int index = this.goodsDgv.Rows.count;
int index = this.goodsDgv.Rows.count;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你确定你的查询条件所有数据都满足么?如果只有一条满足的,就只出现一条了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有可能是某些字段是空值,ToString()出错,具体你可以断点或者在catch里面显示错误消息看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询