| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:执行查询的疑惑
只看楼主 加入收藏
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
结帖率:87.93%
收藏
已结贴  问题点数:20 回复次数:6 
执行查询的疑惑
using System.Data.SqlClient;
...
string abc = "SELECT TimeRecords.*,employee.emp_id FROM TimeRecords INNER JOIN employee ON TimeRecords.emp_id=employee.emp_id WHERE sign_time BETWEEN @Begin AND @End ";         
            SqlConnection cnn=new SqlConnection("server=PC-20110523OZLE;database=dz1;user id=sa;password=;min pool size=4;max pool size=4;");
            cnn.Open();   
            SqlParameter[] Params=new SqlParameter[]{new SqlParameter("@Begin","2010-10-1"),new SqlParameter("@End","2010-10-20")};
            SqlCommand cmd=new SqlCommand(abc,cnn);
            cmd.Parameters.AddRange(Params);
            SqlDataReader read = cmd.ExecuteReader();
            MessageBox.Show();
上面的代码并没有返回数据(直接执行SQL语句能返回数据),查看,其中的@Begin和@End并没有被取代,不知为什么会这样.
@Begin和@End都是时间类型的数据.
搜索更多相关主题的帖子: 查询 password database employee 
2011-07-04 10:24
dwwwing
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:284
专家分:986
注 册:2008-10-11
收藏
得分:5 
代码是没问题的啊。。。我本地能查出数据。。你debug看看有没有什么exception。。。
中参数是在数据库中预编译才会被赋值的
2011-07-04 11:24
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
多谢 连接数据库没问题 执行查询也不报错 但就是没数据返回,真不知是哪个环节出了问题
2011-07-04 11:59
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:15 
你的SERVER是本机吗?SqlParameter参数有表示日期时间的字符,服务器端与客户端的时间格式可能不一样。
程序代码:
string abc = "SELECT TimeRecords.*,employee.emp_id FROM TimeRecords INNER JOIN employee ON TimeRecords.emp_id=employee.emp_id WHERE sign_time BETWEEN @Begin AND @End";
SqlConnection cnn = new SqlConnection("server=PC-20110523OZLE;database=dz1;user id=sa;password=;min pool size=4;max pool size=4;");
cnn.Open();
SqlCommand cmd = new SqlCommand(abc, cnn);
SqlParameter[] Params = new SqlParameter[] {new SqlParameter("@Begin", "2010-10-1"),new SqlParameter("@End", "2010-10-20")};
cmd.Parameters.AddRange(Params);
MessageBox.Show();
SqlDataReader read = cmd.ExecuteReader();
int i = 0;
while (read.Read) {

 i += 1;
}
Interaction.MsgBox(i);
执行到这里,i 的值与你在查询分析器里的受影响的行数是一样的吗?

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-07-04 13:08
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
以下是引用不说也罢在2011-7-4 13:08:03的发言:

你的SERVER是本机吗?SqlParameter参数有表示日期时间的字符,服务器端与客户端的时间格式可能不一样。
string abc = "SELECT TimeRecords.*,employee.emp_id FROM TimeRecords INNER JOIN employee ON TimeRecords.emp_id=employee.emp_id WHERE sign_time BETWEEN @Begin AND @End";
SqlConnection cnn = new SqlConnection("server=PC-20110523OZLE;database=dz1;user id=sa;password=;min pool size=4;max pool size=4;");
cnn.Open();
SqlCommand cmd = new SqlCommand(abc, cnn);
SqlParameter[] Params = new SqlParameter[] {new SqlParameter("@Begin", "2010-10-1"),new SqlParameter("@End", "2010-10-20")};
cmd.Parameters.AddRange(Params);
MessageBox.Show();
SqlDataReader read = cmd.ExecuteReader();
int i = 0;
while (read.Read) {
 i += 1;
}
Interaction.MsgBox(i);执行到这里,i 的值与你在查询分析器里的受影响的行数是一样的吗?
谢谢你的指点 调试了你的代码 能正常执行 并且返回的数据项也和调试SQL语句一样
对比了下代码 发现自己就一小白
居然没有写read.read();当然没有数据 真惭愧
2011-07-04 14:30
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
呵呵。忙中都有出错的时候啊

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-07-04 14:35
ai0_0jun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:145
注 册:2011-6-29
收藏
得分:0 
路过。。。
2011-07-04 16:28
快速回复:执行查询的疑惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049056 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved