相关疑难解决方法(0)

与Parameters.Add和Parameters.AddWithValue的区别

基本上CommandsParameters和参数有像Add,AddWithValue等等的功能.在我看过的所有教程中,我通常注意到他们正在使用Add而不是AddWithValue.

.Parameters.Add("@ID", SqlDbType.Int)
Run Code Online (Sandbox Code Playgroud)

VS

.Parameters.AddWithValue("@ID", 1)
Run Code Online (Sandbox Code Playgroud)

有没有理由不使用AddWithValue?我宁愿用那个

Parameters.Add("@ID", SqlDbType.Int, 4).Value = 1
Run Code Online (Sandbox Code Playgroud)

因为它节省了我的编码时间.那么哪个更好用?哪个使用安全?它会提高性能吗?

.net c# vb.net ado.net

31
推荐指数
2
解决办法
4万
查看次数

SQL Server中不期望的DateTime舍入

我碰到了一些奇怪的东西.DateTime当我将它们保存到datetime列时,SQL Server似乎不恰当地舍入了一些值.我怀疑我错过了什么,但我无法发现它.我正在使用.NET 4.0对SQL Server 2008运行此测试.以下内容应说明问题:

我在SQL Server中创建了一个名为Timestamps的表.它有两列:

id - bigint,Identity,PK
timestamp - datetime

我还创建了一个简单的测试,它执行以下操作:

  1. 获取当前时间,将值截断为毫秒精度
  2. 保存截断的时间 Timestamps
  3. 从DB中检索datetime`值,并将其与原始(截断的)DateTime对象进行比较.
public static void RoundTest()
{
    DateTime preTruncation = DateTime.UtcNow;
    DateTime truncated = preTruncation.TruncateToMilliseconds();

    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["test"].ConnectionString))
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(@"INSERT INTO Timestamps(timestamp) 
                                            VALUES(@savedTime); 
                                            SELECT SCOPE_IDENTITY() AS id");
        cmd.Parameters.Add(new SqlParameter("savedTime", truncated));
        cmd.Connection = conn;
        var id = cmd.ExecuteScalar();

        SqlCommand get = new SqlCommand(@"SELECT timestamp FROM Timestamps 
                                            WHERE id = @id");

        get.Parameters.Add(new SqlParameter("id", id)); …
Run Code Online (Sandbox Code Playgroud)

sql-server datetime rounding

11
推荐指数
1
解决办法
6395
查看次数

标签 统计

.net ×1

ado.net ×1

c# ×1

datetime ×1

rounding ×1

sql-server ×1

vb.net ×1