Как WCF может потреблять данные из базы данных phpmyadmin?

приятно познакомиться. Я новичок здесь.

Просто хочу спросить, как мой WCF может потреблять данные из базы данных phpmyadmin? Я только что попробовал мой WCF потреблять данные из базы данных sqlserver, и это работает в моем приложении wpf.

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

я пытаюсь изменить источник данных на IP в моей базе данных, он не работает. вот мой SqlConnection,

SqlConnection conn = new SqlConnection("Data Source=Alfred-PC;Initial Catalog=alfred;Integrated Security=True");

Это WCF

public class Jobs : IJobs
{
    SqlConnection conn = new SqlConnection("Data Source=Alfred-PC;Initial Catalog=alfred;Integrated Security=True");
    SqlDataAdapter da;
    DataSet ds;
    Data data = new Data();
    List<Data> listdata = new List<Data>();

    public DataSet Details()
    {
        conn.Open();
        ds = new DataSet();
        da = new SqlDataAdapter("Select * from data", conn);
        da.Fill(ds);
        conn.Close();
        return ds;
    }

    public Data GetDetails(int jobid)
    {
        conn.Open();
        ds = new DataSet();
        da = new SqlDataAdapter("Select * from data where id = " + jobid, conn);
        da.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            data.userid = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
            data.firstname = ds.Tables[0].Rows[0][1].ToString();
            data.lastname = ds.Tables[0].Rows[0][2].ToString();
            data.location = ds.Tables[0].Rows[0][3].ToString();
            ds.Dispose();
        }
        conn.Close();
        return data;
    }

    public List<Data> GetAllDetails()
    {
        conn.Open();
        ds = new DataSet();
        da = new SqlDataAdapter("Select * from data", conn);
        da.Fill(ds);
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            listdata.Add(
                new Data
                {
                    userid = Convert.ToInt32(dr[0]),
                    firstname = dr[1].ToString(),
                    lastname = dr[2].ToString(),
                    location = dr[3].ToString()
                }
            );
        }
        conn.Close();
        return listdata;
    }
}

это файл WPF

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        if (textbox1.Text.Trim().Length != 0)
        {
            ServiceReference1.JobsClient jc = new ServiceReference1.JobsClient();
            var x = jc.GetDetails(Convert.ToInt32(textbox1.Text));
            if (x.userid != 0)
            {
                textbox2.Text = x.userid.ToString();
                textbox3.Text = x.firstname;
                textbox4.Text = x.lastname;
                textbox5.Text = x.location;
            }
            else
                MessageBox.Show("RecordNotFound ... !", "Message", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        else
            MessageBox.Show("EnterID", "Message", MessageBoxButton.OK, MessageBoxImage.Warning);
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        ServiceReference1.JobsClient jc = new ServiceReference1.JobsClient();
        dataGrid1.ItemsSource = jc.Details().Tables[0].DefaultView;
    }

    private void button3_Click(object sender, RoutedEventArgs e)
    {
        ServiceReference1.JobsClient jc = new ServiceReference1.JobsClient();
        dataGrid1.ItemsSource = jc.GetAllDetails() ;
    }

}
 marc_s16 июн. 2012 г., 17:20
PHPMyAdmin являетсяdatabase administration tool - не база данных сама по себе.
 Tim S.16 июн. 2012 г., 20:08
КакJobsClient WPF использует подключение к БД? Кроме того, вы должны запуститьconn.Open() прежде чем пытаться использовать соединение, и вы всегда должны утилизировать свои соединения, как только вы закончите с ними. Сохранять соединение как поле неправильно, если вы не реализуетеIDisposable распоряжаться им, и всегда правильно распоряжаться вашимJobs возражать, как только вы закончите с ним. Было бы проще просто использоватьusing (var conn = new SqlConnection(...);.
 paparazzo16 июн. 2012 г., 17:04
WPF и WCF и оба .NET. То, как вы подключаетесь, должно работать в обоих случаях. Отправьте вам рабочий код WPF и нерабочий код WCF.

Ответы на вопрос(2)

Решение Вопроса

Так что формат строки подключения смотрите здесь:http://www.connectionstrings.com/mysql

Примером может бытьServer=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; если вы используете стандартный порт и не изменили его. В этом случае вы, тем не менее, не будете использовать встроенную защиту (вы будете указывать имя пользователя и пароль в строке подключения), поэтому проверьте, возможно ли это для вас.

Тогда вы можете использовать MySQL Connector (Пространство именMySql.Data.MySqlClient можно скачать здесьhttp://dev.mysql.com/downloads/dotnet.html) и подключиться к базе данных MySQL программно, как подробно описано здесьhttp://www.functionx.com/mysqlnet/csharp/Lesson02.htm

 Alfred Angkasa18 июн. 2012 г., 05:25
Вчера я попробовал базу данных localhost на своем компьютере. Используя адрес по умолчанию, 127.0.0.1, а также используйте имя пользователя и пароль, которые я создал из phpmyadmin. Работает отлично. Теперь я просто попробую с моей базой данных на моем сайте. Я создаю имя пользователя и пароль, используя phpmyadmin на моем сайте cpanel. и я отсылаю сервер к IP в удаленной базе данных на моем сайте. Но когда я запускаю приложение, оно подсказывает. доступ запрещен для пользователя (используется пароль ДА). Я думаю, что я уже правильно ввел имя пользователя и пароль. Любое решение? Благодарю.

сь, используемая для аутентификации доступа к БД, представляет собой учетную запись, в которую вы вошли как. Но в службе WCF учетная запись контролируется настройками сервера (IIS), на котором она размещена. У вас есть несколько вариантов:

Change to use a username and password to connect to the DB Change the DB to accept the account that the WCF service is trying to connect as (the DB should tell you in an error message or log) Change the server settings to use a Windows account that has privileges
 16 июн. 2012 г., 22:59
@AlfredAngkasa Какая часть PHPMyAdmin является инструментом администратора, а не базой данных, которую вы сейчас получаете? +1 Тим за ваше терпение
 Alfred Angkasa16 июн. 2012 г., 19:45
Хорошо. Если я хочу найти в Google, что я должен ввести ключевое слово? Я пытаюсь использовать базу данных WCF на phpmyadmin, она всегда отображается с использованием SQL Server. сделали с этим? Я имею в виду, вы пытаетесь что ваш WCF потребляет данные из phpmyadmin?
 16 июн. 2012 г., 19:42
Если вход в систему не удался, значит, вы не правильно что-то настроили ни в БД, ни в строке подключения. Я не знаю, как это сделать с вашей БД. На данный момент, я могу только предложить вам изучить его самостоятельно.
 16 июн. 2012 г., 19:48
Как сказал @marc_s ранее, «PHPMyAdmin - это инструмент администрирования базы данных, а не база данных сама по себе». WCF не соединяется с PHPMyAdmin. PHPMyAdmin и WCF (должны) подключаться к одной и той же базе данных MySQL. Пока вы не поймете это, у вас не будет ничего, кроме попыток работать с этим. Например. может быть, вы создали логин для PHPMyAdmin вместо БД и попытались использовать его в WCF.
 Alfred Angkasa16 июн. 2012 г., 19:06
я пробовал № 1 раньше, он не будет подключаться к базе данных. логин не удался для пользователя, которого я установил. Я уже создал имя пользователя и пароль, которые дают все привилегии. я не очень понимаю насчет №2 и №3. поменять БД? это значит, что я перехожу в свою базу данных? как я могу это изменить? а также как я могу изменить настройки сервера? у вас есть пример для этого №2 и №3? Благодарю.

Ваш ответ на вопрос