建自定义表类型的好处是在不同的数据库之间操作比较方便速度比较快。
1、在数据库中建自定义表类型。
如:
CREATE TYPE [dbo].[UdtDealerScore] AS TABLE(
[UserID] [int] NULL,
[bangScore] [int] NULL
)
GO
[UserID] [int] NULL,
[bangScore] [int] NULL
)
GO
2、建存储过程。
如:
create PROCEDURE [dbo].[DealerScoreSync]
@DealerScore dbo.UdtDealerScore READONLY--@DealerScore:传过来的参数,dbo.UdtDealerScore:自定义表类型,READONLY:只读
AS
BEGIN
Update ude
set ude.Score = ds.bangScore
FROM dbo.UserDealerExtend ude--dbo.UserDealerExtend:数据库表明
INNER JOIN @DealerScore ds on ude.UserID = ds.UserID
END
GO
@DealerScore dbo.UdtDealerScore READONLY--@DealerScore:传过来的参数,dbo.UdtDealerScore:自定义表类型,READONLY:只读
AS
BEGIN
Update ude
set ude.Score = ds.bangScore
FROM dbo.UserDealerExtend ude--dbo.UserDealerExtend:数据库表明
INNER JOIN @DealerScore ds on ude.UserID = ds.UserID
END
GO
3、代码方面的操作:
(1)查出来userid和bangScore的两行数据,
如:
Database db=DB.Read;
DataTabel dt=db.GetTable("select userid,bangScore from Dealer");
using (SqlConnection sqlConn = new SqlConnection("数据库连接字符串"))
{
SqlCommand cmd = new SqlCommand("DealerScoreSync", sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = cmd.Parameters.AddWithValue("@DealerScore",dt);--@DealerScore传的参数
tvpParam.SqlDbType = SqlDbType.Structured;
tvpParam.TypeName = "UdtDealerScore";--自定义表类型名称
sqlConn.Open();
cmd.ExecuteNonQuery();
sqlConn.Close();
}
{
SqlCommand cmd = new SqlCommand("DealerScoreSync", sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = cmd.Parameters.AddWithValue("@DealerScore",dt);--@DealerScore传的参数
tvpParam.SqlDbType = SqlDbType.Structured;
tvpParam.TypeName = "UdtDealerScore";--自定义表类型名称
sqlConn.Open();
cmd.ExecuteNonQuery();
sqlConn.Close();
}