一个sql语句的问题,不明白什么原因,
这个是页面后台中的一段代码:stringsql="selectsum(shjdefen)fromtb_kaoshilistwhereshjmbId='"+id+"'";i...
这个是页面后台中的一段代码:
string sql = "select sum(shjdefen) from tb_kaoshilist where shjmbId='" + id + "'";
int sum = da.select_sum(Server, sql);
public int select_sum(HttpServerUtility Server, string sql)
{
int sum = 0;
try
{
OleDbConnection conn = new OleDbConnection(DataBasePath(Server));
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
sum = Convert.ToInt32(cmd.ExecuteScalar());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return sum;
}
我用断点一步的走,没什么问题:
如果不用断点,在数据库上运行sql语句是对的,但是查出来赋值的时候是错值,很郁闷!用access数据库。
我的sql语句在数据库查询里可以查出来,shjmbId是字符串类型,下一步就是获取值和赋值了,不会有错。
不用断点调试的话,我发现它少加了最后一个数!比如有十个数,它就加前面的九个,最后一个不要了,该怎么解决呢?
int sum = 0;
string sql = "select SUM(shjdefen) as shj from tb_kaoshilist where shjmbId='" + id + "'";
OleDbConnection conn = new OleDbConnection(da.DataBasePath(Server));
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
object count = cmd.ExecuteScalar();
if (count != System.DBNull.Value)
{
sum = Convert.ToInt32(count);
}
设断点和不设断点传过来的值不一样!!!
唉,还是没解决,为什么sum()会在这少算一个数据呢,再别的页面都可以!! 展开
string sql = "select sum(shjdefen) from tb_kaoshilist where shjmbId='" + id + "'";
int sum = da.select_sum(Server, sql);
public int select_sum(HttpServerUtility Server, string sql)
{
int sum = 0;
try
{
OleDbConnection conn = new OleDbConnection(DataBasePath(Server));
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
sum = Convert.ToInt32(cmd.ExecuteScalar());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return sum;
}
我用断点一步的走,没什么问题:
如果不用断点,在数据库上运行sql语句是对的,但是查出来赋值的时候是错值,很郁闷!用access数据库。
我的sql语句在数据库查询里可以查出来,shjmbId是字符串类型,下一步就是获取值和赋值了,不会有错。
不用断点调试的话,我发现它少加了最后一个数!比如有十个数,它就加前面的九个,最后一个不要了,该怎么解决呢?
int sum = 0;
string sql = "select SUM(shjdefen) as shj from tb_kaoshilist where shjmbId='" + id + "'";
OleDbConnection conn = new OleDbConnection(da.DataBasePath(Server));
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
object count = cmd.ExecuteScalar();
if (count != System.DBNull.Value)
{
sum = Convert.ToInt32(count);
}
设断点和不设断点传过来的值不一样!!!
唉,还是没解决,为什么sum()会在这少算一个数据呢,再别的页面都可以!! 展开
6个回答
展开全部
看了你的代码是觉得没有问题的。数据库的操作上就难说了。毕竟在最后得出的结果都是从数据库查询而得来的。当查询出的结果有了问题,反映到了前台上也就是有问题。LZ说用断点一步一步调试是没得问题的。那我建议你用断点来进行多行的调试,这样也可以将问题确定在一行或多行代码的范围内。再进行检查问题。
希望对你有所帮助!
希望对你有所帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你看一下,
1、sql中联的数据库 和你用SQL直接查询是否一样!登陆用户还有其它什么是否一样!
要是登陆的库不一样,就要换库了!或在表前加库名!
2、shjmbId 的类型是否为varchar2或字符类型
为数字类型时,最好不要加 ' '
3、我不知道你后面的程序是否有错,最好检查一下
1、sql中联的数据库 和你用SQL直接查询是否一样!登陆用户还有其它什么是否一样!
要是登陆的库不一样,就要换库了!或在表前加库名!
2、shjmbId 的类型是否为varchar2或字符类型
为数字类型时,最好不要加 ' '
3、我不知道你后面的程序是否有错,最好检查一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试试这样可以不:
using System.Data;
int sum = 0;
string sql = "select SUM(shjdefen) as shj from tb_kaoshilist where shjmbId='" + id + "'";
OleDbConnection conn = new OleDbConnection(da.DataBasePath(Server));
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
DataTable tb= cmd.ExecuteReader();
if (tb,Rows.count>0)
{
string count =tb.Rows[0].ItemArray[0].toString();
sum = Convert.ToInt32(count);
}
using System.Data;
int sum = 0;
string sql = "select SUM(shjdefen) as shj from tb_kaoshilist where shjmbId='" + id + "'";
OleDbConnection conn = new OleDbConnection(da.DataBasePath(Server));
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
DataTable tb= cmd.ExecuteReader();
if (tb,Rows.count>0)
{
string count =tb.Rows[0].ItemArray[0].toString();
sum = Convert.ToInt32(count);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string sql = "select sum(shjdefen) from [tb_kaoshilist] where shjmbId='" + id + "'";
如果你确定你的代码没错的话
加个中括号试试
如果你确定你的代码没错的话
加个中括号试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string sql = "select sum(shjdefen) from tb_kaoshilist where shjmbId=" + id;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询