如何在C#中调用带参数的ACCESS查询???紧急求救啊~~~查询已经建好了:PARAMETERS RepDay DateTime;
SELECT ... FROM ... WHERE ReportDay = RepDay;请各位大侠不吝赐教~~~~~~在线等
SELECT ... FROM ... WHERE ReportDay = RepDay;请各位大侠不吝赐教~~~~~~在线等
解决方案 »
- 怎么识别SQL server数据库语句? ?
- datagridview手动梆定后列标头能不能用combobox?
- 找做GIS的探讨海量数据显示技术!(注: 探讨!)
- Form c# 程序 双击treeView的节点 同时toolStripDropDownButton里也显示相应的数据。treeView和toolStripDropDownButton要怎么绑定啊
- 如何实现往类的创建者或实例化的窗体(或类)传递参数或数据
- vs2005中使用datagridview无法更新数据库??
- 关于WEB开发中C和V结合方式的讨论
- 请问这个问题怎么解决啊???
- 怎么用msdn提高水平啊?100份
- c#程序如何调用vc编译的动态连接库
- 为什么字体的颜色换不了????
- 推荐大家一个代码搜索工具你写的大多数代码都能搜到
想这样?
然后连接数据库
进行查询呗
大侠们,刚才的问题你可能没理解我的意思,我的意思是:
我在ACCESS数据库里已经建立了一个带参数的查询(类似SqlServer的存储过程),然后我要在C#代码里进行调用,传入参数,得到查询后的结果集~就是想实现这个功能,可是代码不知道怎么写
请大侠们给指点指点呗~
我在ACCESS数据库里已经建立了一个带参数的查询(类似SqlServer的存储过程),然后我要在C#代码里进行调用,传入参数,得到查询后的结果集~就是想实现这个功能,可是代码不知道怎么写
请大侠们给指点指点呗~
我在ACCESS数据库里已经建立了一个带参数的查询(类似SqlServer的存储过程),然后我要在C#代码里进行调用,传入参数,得到查询后的结果集~就是想实现这个功能,可是代码不知道怎么写
请大侠们给指点指点呗~
OleDbConnection oeConn = new OleDbConnection(strConnection);
oeConn.Open();
string sql = string.Format("select * from tblAAA where A = '{0}'", "Filter");
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, oeConn);
adapter.Fill(dt);
oeConn.Close();
adapter.Dispose();这里这个DataTable dt 就已经填充数据库的数据了。你自己看着办吧。
oeConn.Open();
string sql ="SELECT * FROM table_Name WHERE ReportDay = ?RepDay;
OleDbCommand command=new OleDbCommand(sql,oeConn);
command.Parameters.AddWithValue("RepDay", OleDbType.DateTime).Value = 你的时参数值;
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(dt);
oeConn.Close();
adapter.Dispose();
oeConn.Open();
string sql ="SELECT * FROM table_Name WHERE ReportDay = ?";
OleDbCommand command=new OleDbCommand(sql,oeConn);
command.Parameters.AddWithValue("@RepDay", OleDbType.DateTime).Value = 你的时间参数值;
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(dt);
oeConn.Close();
adapter.Dispose();
oeConn.Open();
string sql ="你的视图名称";
OleDbCommand command=new OleDbCommand(sql,oeConn);
command.Parameters.AddWithValue("@RepDay", OleDbType.DateTime).Value = 你的时间参数值;
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(dt);
oeConn.Close();
adapter.Dispose();
strConnection += @"Data Source=C:\BegASPNET\Northwind.mdb"; OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbCommand comm = new OleDbCommand(); string sql = "把你在ACCESS中定义好的SQL语句引出来赋值"; comm.CommandText = sql;
comm.Connection = objConnection; comm.Parameters.Add();...//將你原SQL中的所有变量在这申明一下,就是加进去
comm.Parameters[1].Value = 123;//当你要出入的时候,再通过赋值,传入进去。就可以了
第一步,我在access数据里建了两个查询,查询aaa有一个参数,查询bbb有两个参数,这两个查询的代码分别如下:
aaa:
PARAMETERS RepDay DateTime;
SELECT ......FROM ...... WHERE ReportDay = RepDay;
(注:其中RepDay就是参数,执行这个查询的时候,只要给RepDay赋值,就能得到想要的结果集了)
bbb:
PARAMETERS StartDay DateTime, EndDay DateTime;
SELECT ......FROM......
WHERE ReportDay >= StartDay And ReportDay <= EndDay;
(注:其中StartDay,EndDay 就是参数,执行这个查询的时候,只要给RepDay赋值,就能得到想要的结果集了)第二步,我在C#代码里(WINFORM程序)调用这两个查询得到我想要的结果集,调用第一个查询的代码如下:
......
string sql = "EXEC aaa '2010-01-01'";//查询语句
DataSet ds = new DataSet();//DataSet是表的集合
OleDbDataAdapter da = new OleDbDataAdapter(sql, Connection);//从数据库中查询
da.Fill(ds);//将数据填充到DataSet
......
(注:连接数据库的代码省略了,'2010-01-01'就是赋给RepDay参数的值)
这样能够执行成功,而且能得到正确的结果集.但是,但是,但是,但是,但是,但是,但是,但是,但是
我用同样的用法去调用第二个查询,代码如下:
......
string sql = "EXEC bbb '2010-01-01','2010-01-10'";
DataSet ds = new DataSet();//DataSet是表的集合
OleDbDataAdapter da = new OleDbDataAdapter(sql, Connection);//从数据库中查询
da.Fill(ds);//将数据填充到DataSet
......
得到的ds总是空的,查不出应该有的数据
(注:数据库里有数据,就是查不出来)大侠给俺分析分析救救急~~~~望请不吝赐教~万分感谢~
AAA的你参照改一下就行,少传一个参数就可以了 OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\My Documents\db2.mdb;User Id=admin;Password=;";
conn.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "test"; //这里是你查询的名称就行了,例如你的aaa或bbb //ACCESS参数要注意:
//并不是按照名称匹配的,而是按照传入的顺序匹配的
OleDbParameter para1 = new OleDbParameter( "@StartDay", OleDbType.Date );
para1.Value = new DateTime( 2009, 1, 2 ); //假设日期为2010-01-01
cmd.Parameters.Add( para1 ); OleDbParameter para2 = new OleDbParameter( "@EndDay", OleDbType.Date );
para2.Value = new DateTime( 2009, 1, 15 ); //假设日期为2010-01-01
cmd.Parameters.Add( para2 ); DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter( cmd );
da.Fill( ds ); conn.Close();
试了一下,可以实现我要的效果.谢谢了
不过我稍微简化了一些
......
DataSet ds = new DataSet();
OleDbCommand command = new OleDbCommand(str_QueryName, Connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@StartDay", OleDbType.Date).Value = str_StartDay;
command.Parameters.AddWithValue("@EndDay", OleDbType.Date).Value = str_EndDay;
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(ds);
......
应该是和你给的代码一个效果的.虽然解决了,但是你可以给我分析分析我刚开始的代码为什么会查询不出结果呢?????愁人~
string sql = "EXEC bbb #2010-01-01#,#2010-01-10#";
试试
问题没出在语句上 OleDbConnection olecon = new OleDbConnection("......"); try
{
olecon.Open(); string sql = "EXEC aaa '2010-01-03','2010-01-08'";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(sql, olecon);
da.Fill(ds); }
catch
{
}得到3个记录ds.Tables[0].Rows.Count=3
找其他原因吧http://www.mybuffet.cn
不会吧,数据库里有数据,直接执行查询也能查出来数据,就是用"EXEC aaa '2010-01-03','2010-01-08'"; 得不到结果 真郁闷人啊~
我再找找看有没有别的原因
我的测试版本是ACCESS2000、VS2008
你试试在你那能不能行得通这几句
......
string sql = "EXEC aaa '2010-01-03','2010-01-08'";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(sql, olecon);
da.Fill(ds);
......