这是我从数据库中得到数据的操作: SqlCommand Selectcmd = new SqlCommand("select PackageDetail_Info.Count,Project_Info.Price,Project_Info.Project_ID from PackageDetail_Info,Project_Info where PackageDetail_Info.Project_ID=Project_Info.Project_ID and Package_ID='" + Package_ID + "'", conn);
System.Data.SqlClient.SqlDataReader dr = Selectcmd.ExecuteReader();
int k = 0;
//计算价格
while (dr.Read())
{
int count = dr.GetInt32(0);
double Price = dr.GetDouble(1);
total = total + count * Price;
string Project_ID=dr.GetString(2);
}
total = total * double.Parse(Discount);
Session["Total"] = total;
dr.Close();
我想要将得到的count,Project_ID插入到另一个表Customer_Package_count中,本来可以直接用下面的SQL语句直接实现:
SqlCommand Insertcmd1 = new SqlCommand("INSERT INTO Customer_Package_count(Customer_ID,Project_ID,Package_ID,Count)SELECT Customer_info.Customer_ID,Project_Info.Project_ID,Package_Info.Package_ID,PackageDetail_Info.Count FROM Customer_info,Project_Info,Package_Info,PackageDetail_Info WHERE Customer_info.Customer_ID=Package_Info.Customer_ID AND Package_Info.Package_ID=PackageDetail_Info.Package_ID AND PackageDetail_Info.Project_ID=Project_Info.Project_ID AND Customer_info.Customer_ID='0000000005'", conn);
k = k + Insertcmd1.ExecuteNonQuery();//执行插入操作
但是这个在数据库中写可以实现,但是搬到这里就不行了。
所以我就想着能不能定义一个集合来保存我从数据库中得到的多行count,Project_ID值,再一条一条的插入到数据库中,但是小弟才疏学浅,不会定义集合,所以还请大神指点!!
System.Data.SqlClient.SqlDataReader dr = Selectcmd.ExecuteReader();
int k = 0;
//计算价格
while (dr.Read())
{
int count = dr.GetInt32(0);
double Price = dr.GetDouble(1);
total = total + count * Price;
string Project_ID=dr.GetString(2);
}
total = total * double.Parse(Discount);
Session["Total"] = total;
dr.Close();
我想要将得到的count,Project_ID插入到另一个表Customer_Package_count中,本来可以直接用下面的SQL语句直接实现:
SqlCommand Insertcmd1 = new SqlCommand("INSERT INTO Customer_Package_count(Customer_ID,Project_ID,Package_ID,Count)SELECT Customer_info.Customer_ID,Project_Info.Project_ID,Package_Info.Package_ID,PackageDetail_Info.Count FROM Customer_info,Project_Info,Package_Info,PackageDetail_Info WHERE Customer_info.Customer_ID=Package_Info.Customer_ID AND Package_Info.Package_ID=PackageDetail_Info.Package_ID AND PackageDetail_Info.Project_ID=Project_Info.Project_ID AND Customer_info.Customer_ID='0000000005'", conn);
k = k + Insertcmd1.ExecuteNonQuery();//执行插入操作
但是这个在数据库中写可以实现,但是搬到这里就不行了。
所以我就想着能不能定义一个集合来保存我从数据库中得到的多行count,Project_ID值,再一条一条的插入到数据库中,但是小弟才疏学浅,不会定义集合,所以还请大神指点!!
解决方案 »
- 关于定时器的问题,如定义每1秒执行一函数A,但这个函数A在1秒内可能执行不完,需要5秒
- 窗体之间的问题
- IDbDataParameter 是什麼數據類型?
- 怎么样屏蔽掉一个程序注册的热键?我用了热键注册和hook都不行。大家帮我想想办法。。。。
- 窗体间事件响应,和数据交换在C#中如何做。本人只会VB。
- 求C#操作OutLook日历的代码
- 超难问题把一张表插入到远端数据库中问题
- listviewitem 屏幕的绝对位置 不是相对listview的相对位置
- 寻求一份C#编程规范!(up有分)
- C#读身份证照片无法读出
- axWindowsMediaPlayer 求助在线播放缓存问题
- 将DLL文件部署到GAC的问题
{
public string Name;
public double Value;
}然后在查询中就可以写:
List<MyObj> result;
using (var conn = new OracleConnection(cnStr))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = "select * from ..........";
comm.CommandType = System.Data.CommandType.Text;
result = ( from DbDataRecord record in comm.ExecuteReader()
let name = (string)record["TheName"]
select new TableDefine {
Name = name,
Value = (double)record["Number"]
};
).ToList();
}
string sqlStr;
sqlStr="要执行的语句";
SqlDataAdapter adapter = new SqlDataAdapter(sqlStr,conn); //实例化数据库适配器DataTable dt = new DataTable(); //定义一个表用来储存数据源的数据,该表存在内存缓冲中。
adapter.Fill(dt); //将adapter的数据填充到表dt中。然后,对表操作~
Name = name,
Value = (double)record["Number"]
};
其实我很想知道你这么写有什么好处,相对于传统的数据操作模式,还有就是
在你回复另一篇帖子上 封装一个高级一点的SQLHelper时返回 DbDataReader 的所谓公共类是被认为有设计思路错误的。 这个返回DbDataReader 有什么错误呢(我一直使用IDataReader返回的)