本文将带您了解关于mssql使用游标遍历方式批量update更新数据的新内容,另外,我们还将为您提供关于asp.net-mvc-3–使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过
本文将带您了解关于mssql 使用游标遍历方式批量update更新数据的新内容,另外,我们还将为您提供关于asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过的路---MSSQL 2008 安装过程、C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)、Connect to MSSQL Database using Flask-SQLAlchemy的实用信息。
本文目录一览:
mssql 使用游标遍历方式批量update更新数据
mssql 使用游标遍历方式批量update更新数据
/*
--1.创建测试表
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
create TABLE Table2
(
a varchar(10),
c varchar(10),
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.创建测试数据
Insert into Table1 values(''赵'',''asds'',null)
Insert into Table1 values(''钱'',''asds'',''100'')
Insert into Table1 values(''孙'',''asds'',''80'')
Insert into Table1 values(''李'',''asds'',null)
Insert into Table2 values(''赵'',''90'')
Insert into Table2 values(''钱'',''100'')
Insert into Table2 values(''孙'',''80'')
Insert into Table2 values(''李'',''95'')
GO
select * from Table1
--3.通过游标方式更新
declare @name varchar(10)
declare @score varchar(10)
declare mycursor cursor for select a from Table1 where c is null
open mycursor
fetch next from mycursor into @name
while(@@fetch_status = 0)
BEGIN
select @score=c from Table2 where
update Table1 set c = @score where a = @name
fetch next from mycursor into @name
END
close mycursor
deallocate mycursor
GO
--4.显示更新后的结果
select * from Table1
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
虽然用游标可以实现,但代码看起来很复杂
Update是T-sql中再简单不过的语句了,update table set column=expression [where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。
假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1。一种常规的思路,通过游标遍历Table1中字段c为null的所有记录,在循环体内查找Table2并进行更新,即用游标Cursor的形式
*/

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 /*: IConverter<long>*/