1

我正在忙着将旧的经典 asp 网站转换为 .NET 网站。我现在也在使用 SQL Server。

现在我有一些旧代码

strsql = "select * FROM tabel WHERE ID = " & strID & " AND userid = " & struserid 
rs1.open strsql, strCon, 2, 3

if rs1.eof THEN
   rs1.addnew
end if

if straantal <> 0 THEN
   rs1("userid") = struserid
   rs1("verlangid") = strID
   rs1("aantal") = straantal
end if

rs1.update
rs1.close

我想在 SQL Server 中使用它。更新方式。我怎样才能做到这一点?

  • 如何检查数据读取器是否为 EOF/EOL
  • 如何插入一个行 id 它是 EOF/EOL
  • 如何使用一个函数更新一行或删除一行?
4

3 回答 3

2

如果你想使用原始 SQL 命令,你可以尝试这样的事情

using (SqlConnection cnn = new SqlConnection(_connectionString))
using (SqlCommand cmd = new SqlCommand())
{
    cnn.Open();
    cmd.Connection = cnn;

    // Example of reading with SqlDataReader
    cmd.CommandText = "select sql query here";

    using (SqlDataReader reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            myList.Add((int)reader[0]);
        }
    }

    // Example of updating row
    cmd.CommandText = "update sql query here";

    cmd.ExecuteNonQuery();
}
于 2012-11-13T09:13:21.900 回答
0

这取决于您使用的方法...您打算使用实体框架和 LINQ 吗?你打算使用直接的 SQL 连接吗?我强烈建议沿着 EF 路线走,但一个简单的直接 SQL 片段看起来像:

using (var connection = new SqlConnection("Your connection string here"))
{
    connection.Open();
    using (var command = new SqlCommand("SELECT * FROM xyz ETC", connection))
    {                
        // Process results
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                int userId = (int)reader["UserID"];
                string somethingElse = (string)reader["AnotherField"];
                // Etc, etc...
            }
        }
    }

    // To execute a query (INSERT, UPDATE, DELETE etc)
    using (var commandExec = new SqlCommand("DELETE * FROM xyz ETC", connection))
    {
        commandExec.ExecuteNonQuery();
    }
}

您会注意到using中包含的各种元素,这是因为您需要在完成后释放内存/连接。这应该很快回答你的问题,但正如其他人(包括我)所建议的那样,我会调查实体框架,因为它更强大但有一个学习曲线!

于 2012-11-13T09:07:24.313 回答
0

您可以使用 SQL 存储过程进行更新。并通过 C# 调用此存储过程。

创建过程 [dbo].[xyz_Update] (@para1 @para2) AS BEGIN 更新表名 Set Fieldname1=@para1, Set Feildname2=@para2

结尾

于 2012-11-20T12:31:28.317 回答