Могу ли я указать, куда мой параметр MySQL должен идти более осмысленно, чем просто наличие?отметить позицию - используя ODBC-коннекторы и .NET - PullRequest
0 голосов
/ 22 марта 2010

У меня есть кусок кода, где я могу передать информацию в команду MySQL, используя параметры через соединение ODBC. Пример кода, показывающего фамилию, переданную с использованием строки surnameToLookFor:

using (OdbcConnection DbConn = new OdbcConnection( connectToDB ))
{

   OdbcDataAdapter cmd = new OdbcDataAdapter(
   "SELECT Firstname, Address, Postcode FROM customers WHERE Surname = ?", DbConn);

    OdbcParameter odbcParam = new OdbcParameter("surname", surnameToLookFor);
    cmd.SelectCommand.Parameters.Add(odbcParam);

    cmd.Fill(dsCustomers, "customers");
}

Что я хотел бы знать, могу ли я указать, куда мой параметр должен идти более значимо, чем просто иметь? отметить позицию - как я мог видеть, это становится довольно трудно отлаживать, если заменяется несколько параметров.

Я бы хотел дать имя параметру примерно так:

SELECT Firstname, Address, Postcode FROM customers WHERE Surname = ?surname ", 

Когда я пытаюсь это сделать, он просто задыхается.

следующий код

    public System.Data.DataSet Customer_Open(string sConnString, long ld) 
    { 
        using (MySqlConnection oConn = new MySqlConnection(sConnString)) 
        { 
            oConn.Open(); 

            MySqlCommand oCommand = oConn.CreateCommand(); 
            oCommand.CommandText = "select * from cust_customer where id=?id"; 

            MySqlParameter oParam = oCommand.Parameters.Add("?id", MySqlDbType.Int32); 
            oParam.Value = ld; 

            oCommand.Connection = oConn; 
            DataSet oDataSet = new DataSet(); 
            MySqlDataAdapter oAdapter = new MySqlDataAdapter(); 
            oAdapter.SelectCommand = oCommand; 
            oAdapter.Fill(oDataSet); 
            oConn.Close(); 
            return oDataSet; 
        } 
    }

от http://www.programmingado.net/a-389/MySQL-NET-parameters-in-query.aspx и включает в себя фрагмент

where id=?id

Что было бы идеально.

Это доступно только через разъем .Net, а не через ODBC? Если возможно использовать ODBC, как мне нужно изменить фрагмент кода, чтобы включить это?

1 Ответ

0 голосов
/ 22 марта 2010

Было бы неплохо, если бы в ODBC была эта функция, но, боюсь, ее нет. Я говорю о самом C API здесь - я не знаю, есть ли слой C #, который добавляет его. Впрочем, написать свою собственную функцию-обертку не так сложно, чтобы реализовать ее простую версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...