ExecuteReader的问题,请教了!

astaward 2010-01-21 05:31:37
代码如下:
private void GridViewBind(string Sqlsort)
{
String dknf;
OleDbConnection oledbconn = new OleDbConnection();
oledbconn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("../App_Data/oil.mdb");
OleDbCommand cmd = oledbconn.CreateCommand();
cmd.CommandText = "SELECT top 1 * FROM kanwu order by dkh desc";
oledbconn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
dknf = dr["dknf"].ToString();
}
dr.Close();
oledbconn.Close();
String user = Session["currentUser"].ToString();
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("../App_Data/oil.mdb");
DataSet ds = new DataSet();
String SqlStr = "SELECT * FROM kanwu where status='已办结' and dknf='"+dknf+"' ORDER BY dkh ASC";
try
{
if (conn.State.ToString() == "Closed") conn.Open();

OleDbDataAdapter da = new OleDbDataAdapter(SqlStr, conn);
da.Fill(ds, "kanwu");
if (conn.State.ToString() == "Open") conn.Close();

GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataKeyNames = new string[] { "dkh" };
GridView1.DataBind();
if (ds.Tables[0].Rows.Count.ToString() == "0")
{
Response.Write("当前没有已办结订单!");
}


}
catch (Exception ex)
{
Response.Write("数据库错误,错误原因:" + ex.Message);
Response.End();
}
}


为什么dknf值取不出来,执行到“String SqlStr = "SELECT * FROM kanwu where status='已办结' and dknf='"+dknf+"' ORDER BY dkh ASC";”总提示Use of unassigned local variable 'dknf',但是我在“dknf = dr["dknf"].ToString(); ”后放上response.write("dknf");却又可以把dknf显示出来?

请大家看看是什么原因,万分感谢!

...全文
97 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
astaward 2010-01-22
  • 打赏
  • 举报
回复
按照mngzilin兄的提示调试成功,万分感谢!
wuyq11 2010-01-21
  • 打赏
  • 举报
回复
String dknf=""或String.Empty;
或isNullOrEmpty(dknf)?"":""
polarissky 2010-01-21
  • 打赏
  • 举报
回复
没看出来哪儿有问题,楼主断点、调试下,一步步运行看看得到的SQL语句是什么样子的
mngzilin 2010-01-21
  • 打赏
  • 举报
回复
String dknf="";
Alden 2010-01-21
  • 打赏
  • 举报
回复
提示的很清楚,dknf没有被赋值,如果SELECT top 1 * FROM kanwu order by dkh desc
没有找到数据的话,那么就会出错。
xray2005 2010-01-21
  • 打赏
  • 举报
回复
private void GridViewBind(string Sqlsort)
{
String dknf;


改为==》


private void GridViewBind(string Sqlsort)
{
String dknf=string.Empty;
mngzilin 2010-01-21
  • 打赏
  • 举报
回复
用参数化处理

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧