传递参数以从c#访问查询

时间:2011-03-02 09:58:23

标签: c# ms-access

我设计了一个访问查询,如下所示:

SELECT Replace(names,'lion','kiss') AS Expr1
FROM table1;

两个值狮子,这是暂时的,现在我希望这些是两个变量,这样我就可以从c#传递值了。

如何从c#调用此查询,并将其传递给两个值。

我正在使用Access 2007。

感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

尝试这样的事情(我在主题上找到了this):

public void ReplaceColumnA(string oldvalue, string newvalue)
{
    using(OleDbConnection connection1 = (OleDbConnection)DatabaseConnection.Instance.GetConnection())
    {
        connection1.Open();  
        using(OleDbCommand sqlcmd2 = new OleDbCommand("queryname", connection1))
        {
            sqlcmd2.Parameters.AddWithValue("param1", newvalue); 
            sqlcmd2.Parameters.AddWithValue("param2", oldvalue);
            sqlcmd2.ExecuteNonQuery();
        }
    }
}

Access查询如下所示:

UPDATE [t]
SET [a] = ?
WHERE [a] = ?

您传递的参数名称无关紧要,它是您传递给它们的顺序。

通过使用“using”语句,您可以确保.NET正确释放连接和资源。

此外,我强烈建议您切换到SQL Server Express Edition。它是免费的,比你在Access中可以做的更有效。真的,你只是在继续探索自己的脚......

答案 1 :(得分:1)

你这样执行:

sqlcmd2.ExecuteNonQuery();

答案 2 :(得分:0)

我认为你需要像这样修改代码

    string q = "SELECT Replace(names,'{0}','{1}') AS Expr1 FROM table1";
//You can provide any values instead of LION and KISS
    string query = string.format(q,"LION","KISS") 

    using(OleDbConnection cnn = (OleDbConnection)DatabaseConnection.Instance.GetConnection())
    {
        cnn.Open();  
        using(OleDbCommand cmd = new OleDbCommand(query, cnn))
            {
            OleDbDataReader reader = cmd.ExecuteReader();
            while(reader.Read())
            {
                Console.WriteLine(reader["Expr1"].toString());
            }
            }
    }