当前位置: 首页 > 编程语言 > C#

C#OleDbParameterwithAccessDateTimeQueryShare

时间:2023-04-11 02:35:57 C#

C#OleDbParameterwithAccessDateTimeQueryWHERE(Table1.DateTimeBetween#5/16/2013#And#5/17/2013#)GROUPBYTable1.ProductType;Table1.DateTime是日期/时间数据类型。现在我想将日期作为OleDbParameters传递。SELECTTable1.ProductType,Sum(Table1.ProductsSold)FROMTable1WHERE(Table1.DateTimeBetween#@StartDate#And#@StopDate#)GROUPBYTable1.ProductType;cmd.Parameters.Add(newOleDbParameter("@StartDate",OleDbType.Date));cmd.Parameters["@StartDate"].Value=dateTimePicker1.Value.ToShortDateString();cmd.Parameters.Add(newOleDbParameter("@StopDate",OleDbType.Date));cmd.Parameters["@StopDate"].Value=dateTimePicker2.Value.ToShortDateString();我已经搜索并尝试了很多东西(VarChar和字符串、单引号而不是主题标签、命令或参数中的主题标签等),没有运气。我希望日期从午夜开始(因此ToShortDateString()和Date类型。)您需要删除查询文本中的井号(#)分隔符。像#fordate和'forstrings这样的定界符对于文字SQL查询是必需的,但在参数化SQL查询中必须省略。作为参考,这是我的工作测试代码:usingSystem;使用System.Collections.Generic;使用System.Linq;使用系统文本;使用System.Data.OleDb;namespaceoledbTest1{classProgram{staticvoidMain(string[]args){varconn=newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:__tmptestData.accdb;");conn.Open();varcmd=newOleDbCommand("SELECTTable1.ProductType,SUM(Table1.ProductsSold)ASTotalSold"+"FROMTable1"+"WHERETable1.DateTimeBETWEEN@StartDateAND@StopDate"+"GROUPBYTable1.ProductType",conn);cmd.Parameters.AddWithValue("@StartDate",newDateTime(2013,5,16));cmd.Parameters.AddWithValue("@StopDate",newDateTime(2013,5,17));OleDbDataReaderrdr=cmd.ExecuteReader();int行数=0;while(rdr.Read()){rowCount++;Console.WriteLine("行"+rowCount.ToString()+":");for(inti=0;i请注意,我为参数添加了不同的名称(以便更接近您所做的),但请记住,对于AccessOLEDB,参数名称将被忽略,并且必须以完全相同的顺序定义参数因为它们出现在命令文本中。编辑如果您只想提取DateTimePicker值的Date部分,请尝试这样的操作:DateTimejustTheDate=dateTimePicker1.Value.Date;MessageBox.Show(justTheDate.ToString());当我运行它时,MessageBox总是显示类似2013-05-0100:00:00的内容(而不是当前时间)。以上就是C#学习教程:C#OleDbParameterwithAccessDateTimequery分享的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,并不代表侵权,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: