我设计了一个访问查询,如下所示:
SELECT Replace(names,'lion','kiss') AS Expr1
FROM table1;
两个值狮子和吻,这是暂时的,现在我希望这些是两个变量,这样我就可以从c#传递值了。
如何从c#调用此查询,并将其传递给两个值。
我正在使用Access 2007。
感谢您的帮助:)
答案 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());
}
}
}