最近在个一家轮胎外贸公司写个小管理程序,我负责整理他们的烂摊子,他们以前长期用的一个工作流程生成的一个十分蛋疼的表结构数据库是Access数据库,我好不容易把需要的信息用access的查询整理起来,结果在.net里用oledbdatareader对象操作居然没结果返回,但是在access里对查询进行查询却有2000多个结果,在.net里操作表也有结果就是不能操作查询,请高人指点,在线等
解决方案 »
- C#获取时间
- insert语句报错语法错误,大家帮忙来看下
- 从gridview中一个一个celll导出到excel太慢,有好的办法吗,谢谢
- 取二位数组
- 求一条SQL语句.SQL高手请进
- [调查]三层应用,各位是用objectDataSource绑定还是直接操作gridview?或者仍用datagrid?
- 发邮件的这段代码有什么错误啊?
- datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了
- 请问TreeView控件的点击事件是什么?
- 怎样往自定义控件ascx里传递参数.
- 把一个HTML网页文件直接更改扩展名为.ASPX行不行?为什么?
- 请教一个asp.net 定时任务的功能 急
第二、sql语句是否正确;
第三、获取adapter对象的方式是否正确。
try catch
连接字符串
<add key="TireAccess" value="provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|GTC05415Samson.mdb;Jet OLEDB:Database Password=123456"/><!--轮胎信息数据库连接-->
<add key="SystemAccess" value="SystemDB.mdb"/><!--系统数据库连接-->
</appSettings>
这是连接没问题
public class ShipMentInfoService : ShipMentInfo
{
#region 查询
/// <summary>
/// 返回未发货的客户名称
/// </summary>
/// <returns>客户名称集合</returns>
public List<string> GetAllCustomer()
{
string constr = ConfigurationManager.AppSettings["TireAccess"].ToString();
string sql = "select customer,count(*) from(select * from (SELECT [Release Information].ReleaseID, [Release Information].customer, [Release Details].[order#], [Release Details].release_no, [Release Information].address, [ERP Information].erp, [Release Details].cat_no, [Release Details].qty, ([Basic Information of Tires].[design for dl]+'('+[Basic Information of Tires].[supply]+')') AS description, [Release Details].[price issue], (IIf([Release Details].[qty]>=0,[Release Details].[qty]*[Basic Information of Tires].[tire weight(kg) all],\"\")) AS [Net Wt/kgs], [Basic Information of Tires].[D40'Quantity], [Tire Type].Typename FROM [Tire Type] INNER JOIN ([Release Information] INNER JOIN ([Basic Information of Tires] INNER JOIN ([Release Details] INNER JOIN [ERP Information] ON [Release Details].Cat_No = [ERP Information].[Cat#]) ON [Basic Information of Tires].Cat_No = [Release Details].Cat_No) ON [Release Information].ReleaseID = [Release Details].ReleaseID) ON [Tire Type].Type = [Basic Information of Tires].Type) where [release_no] like '*NV' ) group by customer";//获得所有未发货用户极其订单数量
OleDbConnection con=null;
OleDbDataReader dr = null;
List<string> customer = new List<string>();
try
{
con = new OleDbConnection(constr);
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
string subcustomer = Convert.ToString(dr[0]);
customer.Add(subcustomer);
}
}
catch(Exception ex)
{
}
finally
{
dr.Close();
dr.Dispose();
con.Close();
con.Dispose();
}
return customer;
}
这是具体执行代码,
select customer,count(customer) from (select * from shipmentinfo where [release_no] like '*NV') group by customer
这是查询的语句,其中shipmentinfo 不是表是access里的查询
/// 返回未发货的客户名称
/// </summary>
/// <returns>客户名称集合</returns>
public List<string> GetAllCustomer()
{
string constr = ConfigurationManager.AppSettings["TireAccess"].ToString();
string sql = "select customer,count(customer) from (select * from shipmentinfo where [release_no] like '*NV') group by customer";
OleDbConnection con=null;
OleDbDataReader dr = null;
List<string> customer = new List<string>();
try
{
con = new OleDbConnection(constr);
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
string subcustomer = Convert.ToString(dr[0]);
customer.Add(subcustomer);
}
}
catch(Exception ex)
{
}
finally
{
dr.Close();
dr.Dispose();
con.Close();
con.Dispose();
}
return customer;
}
这个是直接调用查询,上面那个是查询里的具体内容
Access使用的是Jet-SQL,与SQL Server使用的T-SQL差别很大
http://topic.csdn.net/u/20100530/18/12b442ea-b5cd-4e13-bac7-ec7f3fc40ddd.html
非常有可能,楼主乱用 catch,这代码将来也是个烂摊子