数据库SQL2005。表为ZHzjdfx。我想在一个连接里,做如下几件事情
1:将表里列名为edit_num的一行的最大值取出来(比如说是20)赋给变量a;
2:将表里列名为zb1里的每一行数据取出来,加起来求平均值后赋给变量b;
请问这两个过程是需要进行两次数据库连接么。还是一次就能完成。具体代码怎么写呢?ADO.NET的代码还不是太熟悉。麻烦热心人帮助写一下具体的代码
1:将表里列名为edit_num的一行的最大值取出来(比如说是20)赋给变量a;
2:将表里列名为zb1里的每一行数据取出来,加起来求平均值后赋给变量b;
请问这两个过程是需要进行两次数据库连接么。还是一次就能完成。具体代码怎么写呢?ADO.NET的代码还不是太熟悉。麻烦热心人帮助写一下具体的代码
解决方案 »
- 有谁研究过怎么换showBolloonTip的那个图标为自己定义的图标吗?
- 数据库中提取图片并显示的问题!
- SqlServer 2005 中重设'sa'密码后不能登录
- C#怎么能简单的把图片和文字弄成互动的?
- 如何得到文件夹下几种类型的文件?
- C#中如何打包?
- 在ASP.NET中怎样截图?
- 请教主窗体与子窗体的设置
- C#读取Word的两个问题
- To: CForce() 如何用C#写Ftp文件上传方面的程序?myEmail : [email protected] (肯定给分)
- C# 我想用VC#2008 做一个表格并打印 预览,有高手清帮忙呀急,网上很难找到
- dockpanel 实现右键点击关闭打开的选项卡?
--------------int sum = 0;
For(int i = 0;i< dt.Rows.count -1 ;i++)
{
sum = sum + int.Parse(dt.Rows[i]["zb1"].toString());
}
恩 用SQL 处理后绑定 也行- - 我竟然忘记了AVG
呵呵
给你个SQL。
select (select max(edit_num) from ZHzjdfx) as a,(select sum(zb1)/count(*) from ZHzjdfx) as b
{
string Connect = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + System.Path.GetFullPath("ACCESS数据库相对路径");
OleDbConnection conn = new OleDbConnection(Connect);
return conn;
}
public DataTable fillDT()
{
conn = GetSqlConnection();
sqlword = " SELECT MAX(edit_num) AS MAX_edit_num,AVG(zbl) AS AVG_zbl FROM USC_TABLE
"
coda = new OleDbDataAdapter(sqlword, conn);
try
{
DataSet fillds = new DataSet();
coda.Fill(fillds, "list");
c = fillds.Tables["list"].Rows.Count;
GC.Collect();
return fillds.Tables["list"];
}
catch (Exception e)
{
DataTable dt = new DataTable();
GC.Collect();
return dt;
}
}
private void button3_Click(object sender, System.EventArgs e)
{ System.Data.DataTable dt = new System.Data.DataTable();
dt = fillDT();
this.lable1.text = dt.Rows[0]["MAX_edit_num"].ToString();
this.lable2.text = int.Parse(dt.Rows[0]["AVG_zbl"].ToString());
}
SELECT MAX(edit_num) AS MAX_edit_num,AVG(zbl) AS AVG_zbl FROM ZHzjdfx这样不就好了 - -
C#
谢谢您给我写了这么多。我想说的是,我用的是C#。另外您这个是不是有点复杂啊,我看其他人的好像简单一些。能不能您再给写一下呢,呵呵。谢谢啦
[/Quote]C#.. 这段些代码通用的啊 除非数据库连接要改动下。。 其他应该没什么 public OleDbConnection GetSqlConnection() //Access数据库获取连接(用于ACCESS From Winform应用程序)
{string Connect="Provider=Microsoft.Jet.OleDb.4.0;Data Source="+ System.Path.GetFullPath("ACCESS数据库相对路径"); //获取连接字符串
OleDbConnection conn=new OleDbConnection(Connect);
return conn;//返回连接字符串
}public DataTable fillDT()//查询数据库结果 返回DataTable
{
conn= GetSqlConnection();
sqlword=" SELECT MAX(edit_num) AS MAX_edit_num,AVG(zbl) AS AVG_zbl FROM USC_TABLE
" coda=new OleDbDataAdapter(sqlword, conn);try
{
DataSet fillds=new DataSet();
coda.Fill(fillds,"list");
c= fillds.Tables["list"].Rows.Count;
GC.Collect();return fillds.Tables["list"];
}catch (Exception e)
{
DataTable dt=new DataTable();
GC.Collect();return dt;
}
}privatevoid button3_Click(object sender, System.EventArgs e)
{ System.Data.DataTable dt=new System.Data.DataTable();
dt= fillDT();
this.lable1.text= dt.Rows[0]["MAX_edit_num"].ToString();//将查询出的Max_edit_num这一列的值绑定 lable1.text
this.lable2.text=int.Parse(dt.Rows[0]["AVG_zbl"].ToString());();//将查询出的AVG_zbl这一列的值绑定 lable1.text } SELECT MAX(edit_num) AS MAX_edit_num,AVG(zbl) AS AVG_zbl FROM ZHzjdfx
MAX(edit_num) AS MAX_edit_num //获取edit_num的最大值 重命名为MAX_edit_num
AVG(zbl) AS AVG_zbl //获取zbl的平均值 重命名为AVG_zbl
avg SQL自带求平均的函数
avg( )函数返回的平均价值,数值栏。
数据库的AVG ( )语法
SELECT AVG(列名) FROM table_name不用那么麻烦。。
请问SQL语句写完之后,怎么讲数据读取出来呢?sqldateReader怎么用啊?
{
conn= GetSqlConnection();
sqlword=" SELECT MAX(edit_num) AS MAX_edit_num,AVG(zbl) AS AVG_zbl FROM USC_TABLE
" coda=new OleDbDataAdapter(sqlword, conn);try
{
DataSet fillds=new DataSet();
coda.Fill(fillds,"list");
c= fillds.Tables["list"].Rows.Count;
GC.Collect();return fillds.Tables["list"];
}catch (Exception e)
{
DataTable dt=new DataTable();
GC.Collect();return dt;
}
}这个方法不是已经返回了一个 DataTable 了么?
dt= fillDT();
string a = dt.Rows[0]["MAX_edit_num"].ToString();//将查询出的Max_edit_num这一列的值绑定 lable1.text
string b =int.Parse(dt.Rows[0]["AVG_zbl"].ToString());();//将查询出的AVG_zbl这一列的值绑定 lable1.text-.-给a,b赋值
{
string Connect = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + System.Path.GetFullPath("ACCESS数据库相对路径"); //获取数据库连接字符串
OleDbConnection conn = new OleDbConnection(Connect);
return conn; //返回数据库连接
}
public DataTable fillDT()
{
conn = GetSqlConnection();
sqlword = " SELECT MAX(edit_num) AS MAX_edit_num,AVG(zbl) AS AVG_zbl FROM ZHzjdfx" //数据库查询语句
coda = new OleDbDataAdapter(sqlword, conn);
try
{
DataSet fillds = new DataSet();
coda.Fill(fillds, "list");
c = fillds.Tables["list"].Rows.Count;
GC.Collect();
return fillds.Tables["list"];
}
catch (Exception e)
{
DataTable dt = new DataTable();
GC.Collect();
return dt;
}
}
private void button3_Click(object sender, System.EventArgs e)
{ System.Data.DataTable dt = new System.Data.DataTable();
dt = fillDT();
string a = dt.Rows[0]["MAX_edit_num"].ToString();//给a赋值
string b = int.Parse(dt.Rows[0]["AVG_zbl"].ToString());//给b赋值
}
(zj_num, zb2)
VALUES (max(edit_num), avg(zb1))
FROM ZHzjdfx
WHERE year = 2009
说不允许使用列名。请问该怎么写呢?
你直接这样子做就可以了呀
select (select max(edit_num) from ZHzjdfx) as a,(select sum(zb1)/max(edit_num) from ZHzjdfx) as b
VALUES (SELECT max(edit_num) FROM ZH_total , SELECT avg(zb1) FROM ZH_total)