此处将为大家介绍关于MSSQLSERVER中的BETWEENAND的使用的详细内容,此外,我们还将为您介绍关于asp.net-mvc-3–使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学
此处将为大家介绍关于MSSQL SERVER中的BETWEEN AND的使用的详细内容,此外,我们还将为您介绍关于asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过的路---MSSQL 2008 安装过程、C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)、Connect to MSSQL Database using Flask-SQLAlchemy的有用信息。
本文目录一览:
MSSQL SERVER中的BETWEEN AND的使用
資料 Customer
Id |
Name |
RegisterDate |
1 |
澎澎 |
2007/1/5 00:00:00 |
2 |
丁丁 |
2007/1/6 00:00:00 |
3 |
亞亞 |
2007/1/7 00:00:00 |
aspx頁面查詢條件:
最小日期: [2007-01-06] 最大日期: [2007-01-06]
使用的 sql:
SELECT ID, Name, RegisterDate FROM Customer WHERE (RegisterDate BETWEEN ''2007-01-06'' AND ''2007-01-06'')
結果是傳回1筆:丁丁, 符合我的預期
但是 如果丁丁的RegisterDate 的時間 不是00:00:00呢?
如果資料是這樣
Id |
Name |
RegisterDate |
1 |
澎澎 |
2007/1/5 00:00:00 |
2 |
丁丁 |
2007/1/6 04:37:00 |
3 |
亞亞 |
2007/1/7 00:00:00 |
一樣的sql
SELECT ID, Name, RegisterDate FROM Customer WHERE (RegisterDate BETWEEN ''2007-01-06'' AND ''2007-01-06'')
傳回來的是0筆
嗯,因為我沒有給予正確的時間範圍嘛,我的查詢條件應該是2007/1/6 號整天時間範圍。
所以我通常程式在查詢前,都會先幫日期加1天
RegisterMaxDate = RegisterMaxDate.AddDays(1);
但是,這樣就對了嗎??
這樣的程式產生的sql是
SELECT ID, Name, RegisterDate FROM Customer WHERE (RegisterDate BETWEEN ''2007-01-06'' AND ''2007-01-07'')
反而傳回2筆,把亞亞也傳回來了
因為 Sql 的 between min And max 是 value >=min && value <= max 的意思
所以我應該更精確的
RegisterMaxDate = RegisterMaxDate.AddDays(1).AddSeconds(-1);
那樣產生的sql 才會是
SELECT ID, Name, RegisterDate FROM Customer WHERE (RegisterDate BETWEEN ''2007-01-06'' AND ''2007/1/6 23:59:59'')
傳回1筆,也就是丁丁,我要的資料。 |
4.3.5 限定数据范围——BETWEEN
在WHERE子句中,使用BETWEEN关键字可以更方便地限制查询数据的范围。当然,还可以使用NOT BETWEEN关键字查询限定数据范围之外的记录。
语法格式可表示如下:
表达式[NOT] BETWEEN 表达式1 AND 表达式2
比如,选择范围在10~100之间的数,采用BETWEEN运算符可以表示为BETWEEN 10 AND 100。
★ 注意 ★
使用BETWEEN限制查询数据范围时同时包括了边界值,而使用NOT BETWEEN进行查询时没有包括边界值。
实例20 使用BETWEEN限定数据范围查询
本实例实现在BookInfo表中,查询图书价格在35~60之间的所有图书记录。代码如下:
USE Library
SELECT *
FROM BookInfo
WHERE price BETWEEN 35 AND 60
运行该代码,得到的查询结果如图4.21所示。
|
图4.21 查询BookInfo表中图书价格在35~60之间的记录
从结果可见,使用BETWEEN关键字查询包含了边界值。
实际上,使用BETWEEN表达式进行查询的效果完全可以用含有“>=”和“<=”的逻辑表达式来代替,使用NOT BETWEEN进行查询的效果完全可以用含有“>”和“<”的逻辑表达式来代替。
对于实例20,若采用含有“>=”和“<=”的逻辑表达式来代替BETWEEN表达式,代码如下:
USE Library
SELECT *
FROM BookInfo
WHERE price >=35
AND price <=60
执行该代码,会得到同样的查询结果。
使用BETWEEN运算符也可以实现时间的比较,下面就给出一个具体的应用实例。
实例21 使用BETWEEN运算符限定时间范围查询
本实例实现在BookInfo表中,查询出版日期在2004/5/1和2006/1/1之间的所有图书记录。代码如下:
USE Library
SELECT *
FROM BookInfo
WHERE pubdate BETWEEN ''2004/5/1'' AND ''2006/1/1''
运行该代码,得到的查询结果如图4.22所示。
|
图4.22 查询BookInfo表中出版日期在2004/5/1和2006/1/1之间的记录

asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案
我正在使用Dapper主要用于调用数据库MSsql 2008 R2中的存储过程.我没有映射到数据库表的类.大多数数据以IEnumerable< Dynamic>结尾.并传输到屏幕上的网格.
我可以使用现成的数据缓冲解决方案吗? (我需要在MVC上使用它).
数据库中的数据本质上是静态的和动态的.我使用存储库模型来访问数据.
解决方法
Dapper不包含任何内置数据缓存功能(虽然它在内部为元编程层使用了广泛的缓存):它本身就是针对ADO.NET的东西 – 但是,你几乎可以使用任何现成的缓存组件,包括HTTP运行时缓存(HttpContext.Current.Cache)或更新的ObjectCache等实现.因为这些只是对象,它应该工作正常.
如果您使用分布式缓存(可能通过app-fabric,redis或memcached),那么您需要将数据序列化.在那种情况下,我强烈建议使用正式的POCO类型进行绑定,而不是动态API.例如,我们在内部使用dapper来填充用protobuf-net标记进行注释以进行序列化的POCO,并通过BookSleeve存储到redis.这听起来比实际更复杂.

BI学习走过的路---MSSQL 2008 安装过程
学习BI,开始的路程十分坎坷啊。
我学习的是针对MS sql Server的BI开发
刚熟悉了各种术语之后,开始安装数据库、sql服务、SSAS、SSIS
结果悲催的是,从官网下载了Express版本的2008数据库,怎么找都找不到SSAS、SSIS等服务。
为此足足失眠了3天左右的时间……
不过,功夫不负有心人,终于找到了一个可以十分简单的下载微软软件的网站,再次分享给各位朋友。
http://msdn.itellyou.cn/
同时,在此处分享一个sql Server 2008的安装图解
http://www.cnblogs.com/downmoon/archive/2010/05/18/1738479.html
国内关于BI的学习,在网络上资料比较有限,而且杂乱,本人在学习过程中会将一些学习心得在此与大家分享下,希望能给大家带来帮助。

C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)
MSSQL

SQLITE

一、C# vs SQLite:
C# |
SQLite |
字段名 |
类型 |
库类型 |
GetFieldType(#) |
转换 |
备注 |
F_BOOL |
bool |
BIT NOT NULL |
Boolean |
|
|
F_BOOL_NULL |
bool? |
BIT |
Boolean |
|
|
F_SBYTE |
sbyte |
INT8 NOT NULL |
SByte |
sbyte_ |
|
F_SBYTE_NULL |
sbyte? |
INT8 |
SByte |
sbyte_ |
|
F_BYTE |
byte |
UINT8 NOT NULL |
Byte |
|
|
F_BYTE_NULL |
byte? |
UINT8 |
Byte |
|
|
F_SHORT |
short |
INT16 NOT NULL |
Int16 |
|
|
F_SHORT_NULL |
short? |
INT16 |
Int16 |
|
|
F_USHORT |
ushort |
UINT16 NOT NULL |
UInt16 |
ushort_ |
|
F_USHORT_NULL |
ushort? |
UINT16 |
UInt16 |
ushort_ |
|
F_INT |
int |
INT32 NOT NULL |
Int32 |
|
|
F_INT_NULL |
int? |
INT32 |
Int32 |
|
|
F_UINT |
uint |
UINT32 NOT NULL |
UInt32 |
uint_ |
|
F_UINT_NULL |
uint? |
UINT32 |
UInt32 |
uint_ |
|
F_LONG |
long |
INT64 NOT NULL |
Int64 |
|
|
F_LONG_NULL |
long? |
INT64 |
Int64 |
|
|
F_ULONG |
ulong |
UINT64 NOT NULL |
UInt64 |
ulong_ |
|
F_ULONG_NULL |
ulong? |
UINT64 |
UInt64 |
ulong_ |
|
F_FLOAT |
float |
FLOAT NOT NULL |
Double |
|
不转兼容 |
F_FLOAT_NULL |
float? |
FLOAT |
Double |
|
不转兼容 |
F_DOUBLE |
double |
DOUBLE NOT NULL |
Double |
|
|
F_DOUBLE_NULL |
double? |
DOUBLE |
Double |
|
|
F_DECIMAL |
decimal |
DECIMAL NOT NULL |
Decimal |
|
存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335] |
F_DECIMAL_NULL |
decimal? |
DECIMAL |
Decimal |
|
存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335] |
F_CHAR |
char |
TEXT NOT NULL |
String |
|
|
F_CHAR_NULL |
char? |
TEXT |
String |
|
|
F_STRING |
string |
TEXT NOT NULL |
String |
|
|
F_STRING_NULL |
string |
TEXT |
String |
|
|
F_DATETIME |
DateTime |
TEXT NOT NULL |
String |
|
|
F_DATETIME_NULL |
DateTime? |
TEXT |
String |
|
|
|
|
|
|
|
|
二、 C# vs MySQL:
C# |
MySQL |
字段名 |
类型 |
库类型 |
GetFieldType(#) |
转换 |
备注 |
F_BOOL |
bool |
BOOL NOT NULL |
Boolean |
|
|
F_BOOL_NULL |
bool? |
BOOL NULL |
Boolean |
|
|
F_SBYTE |
sbyte |
TINYINT NOT NULL |
SByte |
sbyte_ |
|
F_SBYTE_NULL |
sbyte? |
TINYINT NULL |
SByte |
sbyte_ |
|
F_BYTE |
byte |
TINYINT UNSIGNED NOT NULL |
Byte |
|
|
F_BYTE_NULL |
byte? |
TINYINT UNSIGNED NULL |
Byte |
|
|
F_SHORT |
short |
SMALLINT NOT NULL |
Int16 |
|
|
F_SHORT_NULL |
short? |
SMALLINT NULL |
Int16 |
|
|
F_USHORT |
ushort |
SMALLINT UNSIGNED NOT NULL |
UInt16 |
ushort_ |
|
F_USHORT_NULL |
ushort? |
SMALLINT UNSIGNED NULL |
UInt16 |
ushort_ |
|
F_INT |
int |
INT NOT NULL |
Int32 |
|
|
F_INT_NULL |
int? |
INT NULL |
Int32 |
|
|
F_UINT |
uint |
INT UNSIGNED NOT NULL |
UInt32 |
uint_ |
|
F_UINT_NULL |
uint? |
INT UNSIGNED NULL |
UInt32 |
uint_ |
|
F_LONG |
long |
BIGINT NOT NULL |
Int64 |
|
|
F_LONG_NULL |
long? |
BIGINT NULL |
Int64 |
|
|
F_ULONG |
ulong |
BIGINT UNSIGNED NOT NULL |
UInt64 |
ulong_ |
|
F_ULONG_NULL |
ulong? |
BIGINT UNSIGNED NULL |
UInt64 |
ulong_ |
|
F_FLOAT |
float |
FLOAT NOT NULL |
Single |
|
极值溢出 |
F_FLOAT_NULL |
float? |
FLOAT NULL |
Single |
|
极值溢出 |
F_DOUBLE |
double |
DOUBLE NOT NULL |
Double |
|
|
F_DOUBLE_NULL |
double? |
DOUBLE NULL |
Double |
|
|
F_DECIMAL |
decimal |
DECIMAL NOT NULL |
Decimal |
|
极值溢出 |
F_DECIMAL_NULL |
decimal? |
DECIMAL NULL |
Decimal |
|
极值溢出 |
F_CHAR |
char |
CHARACTER NOT NULL |
String |
|
中文报错 |
F_CHAR_NULL |
char? |
CHARACTER NULL |
String |
|
中文报错 |
F_STRING |
string |
VARCHAR(50) NOT NULL |
String |
|
|
F_STRING_NULL |
string |
VARCHAR(50) NULL |
String |
|
|
F_DATETIME |
DateTime |
DATETIME NOT NULL |
DateTime |
|
|
F_DATETIME_NULL |
DateTime? |
DATETIME NULL |
DateTime |
|
|
|
|
|
|
|
|
三、 C# vs MSSQL:
C# |
MSSQL |
字段名 |
类型 |
库类型 |
GetFieldType(#) |
转换 |
备注 |
F_BOOL |
bool |
bit NOT NULL |
Boolean |
|
|
F_BOOL_NULL |
bool? |
bit NULL |
Boolean |
|
|
F_SBYTE |
sbyte |
smallint NOT NULL |
Int16 |
sbyte_short |
|
F_SBYTE_NULL |
sbyte? |
smallint NULL |
Int16 |
sbyte_short |
|
F_BYTE |
byte |
tinyint NOT NUL; |
Byte |
|
|
F_BYTE_NULL |
byte? |
tinyint NULL |
Byte |
|
|
F_SHORT |
short |
smallint NOT NULL |
Int16 |
|
|
F_SHORT_NULL |
short? |
smallint NULL |
Int16 |
|
|
F_USHORT |
ushort |
int NOT NULL |
Int32 |
ushort_int |
|
F_USHORT_NULL |
ushort? |
int NULL |
Int32 |
ushort_int |
|
F_INT |
int |
int NOT NULL |
Int32 |
|
|
F_INT_NULL |
int? |
int NULL |
Int32 |
|
|
F_UINT |
uint |
bigint NOT NULL |
Int64 |
uint_long |
|
F_UINT_NULL |
uint? |
bigint NULL |
Int64 |
uint_long |
|
F_LONG |
long |
bigint NOT NULL |
Int64 |
|
|
F_LONG_NULL |
long? |
bigint NULL |
Int64 |
|
|
F_ULONG |
ulong |
real NOT NULL |
Single |
ulong_float |
|
F_ULONG_NULL |
ulong? |
real NULL |
Single |
ulong_float |
|
F_FLOAT |
float |
real NOT NULL |
Single |
|
|
F_FLOAT_NULL |
float? |
real NULL |
Single |
|
|
F_DOUBLE |
double |
float NOT NULL |
Double |
|
|
F_DOUBLE_NULL |
double? |
float NULL |
Double |
|
|
F_DECIMAL |
decimal |
decimal NOT NULL |
Decimal |
|
极值溢出 |
F_DECIMAL_NULL |
decimal? |
decimal NULL |
Decimal |
|
极值溢出 |
F_CHAR |
char |
char(1) NOT NULL |
String |
|
|
F_CHAR_NULL |
char? |
char(1) NULL |
String |
|
|
F_STRING |
string |
varchar(50) NOT NULL |
F_STRING: |
|
|
F_STRING_NULL |
string |
varchar(50) NULL |
String |
|
|
F_DATETIME |
DateTime |
datetime NOT NULL |
DateTime |
|
必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。 |
F_DATETIME_NULL |
DateTime? |
datetime NULL |
DateTime |
|
|
|
|
|
|
|
|
四、C# vs Oracle:
C# |
Oracle |
字段名 |
类型 |
库类型 |
GetFieldType(#) |
转换 |
备注 |
F_BOOL |
bool |
CHAR(1) NOT NULL |
String |
bool_string |
|
F_BOOL_NULL |
bool? |
CHAR(1) |
String |
bool_string |
|
F_SBYTE |
sbyte |
NUMBER(3) NOT NULL |
Int16 |
sbyte_short |
|
F_SBYTE_NULL |
sbyte? |
NUMBER(3) |
Int16 |
sbyte_short |
|
F_BYTE |
byte |
NUMBER(3) NOT NULL |
Int16 |
byte_short |
|
F_BYTE_NULL |
byte? |
NUMBER(3) |
Int16 |
byte_short |
|
F_SHORT |
short |
NUMBER(5) NOT NULL |
Int32 |
short_int |
|
F_SHORT_NULL |
short? |
NUMBER(5) |
Int32 |
short_int |
|
F_USHORT |
ushort |
NUMBER(5) NOT NULL |
Int32 |
ushort_int |
|
F_USHORT_NULL |
ushort? |
NUMBER(5) |
Int32 |
ushort_int |
|
F_INT |
int |
NUMBER(10) NOT NULL |
Int64 |
int_long |
|
F_INT_NULL |
int? |
NUMBER(10) |
Int64 |
int_long |
|
F_UINT |
uint |
NUMBER(10) NOT NULL |
Int64 |
uint_long |
|
F_UINT_NULL |
uint? |
NUMBER(10) |
Int64 |
uint_long |
|
F_LONG |
long |
NUMBER(19) NOT NULL |
Decimal |
long_decimal |
|
F_LONG_NULL |
long? |
NUMBER(19) |
Decimal |
long_decimal |
|
F_ULONG |
ulong |
NUMBER(19) NOT NULL |
Decimal |
ulong_decimal |
|
F_ULONG_NULL |
ulong? |
NUMBER(19) |
Decimal |
ulong_decimal |
|
F_FLOAT |
float |
BINARY_FLOAT NOT NULL |
Single |
|
|
F_FLOAT_NULL |
float? |
BINARY_FLOAT |
Single |
|
|
F_DOUBLE |
double |
BINARY_DOUBLE NOT NULL |
Double |
|
极值溢出 |
F_DOUBLE_NULL |
double? |
BINARY_DOUBLE |
Double |
|
极值溢出 |
F_DECIMAL |
decimal |
DECIMAL(33,3) NOT NULL |
Decimal |
|
|
F_DECIMAL_NULL |
decimal? |
DECIMAL(33,3) |
Decimal |
|
|
F_CHAR |
char |
CHAR(1) NOT NULL |
String |
|
|
F_CHAR_NULL |
char? |
CHAR(1) |
String |
|
|
F_STRING |
string |
VARCHAR(50) NOT NULL |
String |
|
不允许空字符 |
F_STRING_NULL |
string |
VARCHAR(50) |
String |
|
不允许空字符 |
F_DATETIME |
DateTime |
TIMESTAMP NOT NULL |
DateTime |
|
大值读取报错 |
F_DATETIME_NULL |
DateTime? |
TIMESTAMP |
DateTime |
|
大值读取报错 |
|
|
|
|
|
|
附、类型转换:
using System;
using System.Collections.Generic;
using System.Text; namespace vJine.Core.ORM { public class TypeConverter { public class sbyte_ /*: IConverter<sbyte>*/ { public static sbyte CONV_Q(object V) { return (sbyte)V; } } public class ushort_ /*: IConverter<ushort>*/ { public static ushort CONV_Q(object V) { return (ushort)V; } } public class uint_ /*: IConverter<uint>*/ { public static uint CONV_Q(object V) { return (uint)V; } } public class ulong_ /*: IConverter<ulong>*/ { public static ulong CONV_Q(object V) { return (ulong)V; } } public class bool_string /*: IConverter<bool>*/ { public static object CONV_I(object V) { if ((bool)V == true) { return "1"; } else { return "0"; } } public static bool CONV_Q(object V) { if ((string)V == "1") { return true; } else { return false; } } } public class sbyte_short /*: IConverter<sbyte>*/ { public static object CONV_I(object V) { return Convert.ToInt16(V); } public static sbyte CONV_Q(object V) { return Convert.ToSByte(V); } } public class byte_short /*: IConverter<byte>*/ { public static object CONV_I(object V) { return Convert.ToInt16(V); } public static byte CONV_Q(object V) { return Convert.ToByte(V); } } public class short_int /*: IConverter<short>*/ { public static object CONV_I(object V) { return Convert.ToInt32(V); } public static short CONV_Q(object V) { return Convert.ToInt16(V); } } public class ushort_int /*: IConverter<ushort>*/ { public static object CONV_I(object V, string Name) { return Convert.ToInt32(V); } public static ushort CONV_Q(object V, string Name) { return Convert.ToUInt16(V); } } public class int_long /*: IConverter<int>*/ { public static object CONV_I(object V) { return Convert.ToInt64(V); } public static int CONV_Q(object V) { return Convert.ToInt32(V); } } public class uint_long /*: IConverter<uint>*/ { public static object CONV_I(object V) { return Convert.ToInt64(V); } public static uint CONV_Q(object V) { return Convert.ToUInt32(V); } } public class long_decimal /*