传递参数以从c#访问查询
我设计了一个访问查询,如下所示:
SELECT Replace(names,'lion','kiss') AS Expr1 FROM table1;
狮子和吻这两个值是暂时的,现在我希望这些是两个变量,这样我就可以从c#中传递值。
如何从c#调用此查询,并将其传递给两个值。
我正在使用Access 2007。
谢谢你的帮助 :)
尝试这样的事情(我在这个问题上找到了这个 ):
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中可以做的更有效。 真的,你只是继续在Access中继续射击……
你这样执行它:
sqlcmd2.ExecuteNonQuery();
我认为你需要修改这样的代码
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()); } } }