передача параметра для доступа к запросу из c # - PullRequest
0 голосов
/ 02 марта 2011

Я разработал запрос доступа, который выглядит следующим образом:

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

два значения: лев и поцелуй , которые являются временными, теперь яхочу, чтобы они были двумя переменными, чтобы я мог передать ему значение из c #.

как вызвать этот запрос из c # и передать ему два значения.

Я использую доступ 2007.

Спасибо за вашу помощь:)

Ответы [ 3 ]

2 голосов
/ 02 марта 2011

Попробуйте что-то вроде этого (я нашел это по теме):

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();
        }
    }
}

Запрос доступа будет выглядеть так:

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

Именапараметры, которые вы передаете, не имеют значения, это порядок, в котором вы передаете их.

Используя оператор «using», вы гарантируете, что .NET правильно освобождает соединения и ресурсы.

Кроме того, я настоятельно рекомендую перейти на SQL Server Express Edition.Это бесплатно и намного более мощно, чем то, что вы можете приготовить в Access.На самом деле, вы просто стреляете себе в ногу, продолжая в Access ...

1 голос
/ 02 марта 2011

Вы выполняете это так:

sqlcmd2.ExecuteNonQuery();

0 голосов
/ 02 марта 2011

Я думаю, вам нужно изменить код, подобный этому

    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());
            }
            }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...