1

よろしく。私はここに新しいです。

質問したいのですが、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() ;
    }

}
4

2 に答える 2

1

私の理解が正しければ、接続文字列の例が必要です。接続文字列の形式については、http: //www.connectionstrings.com/mysqlを参照してください。

例としてServer=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;、標準ポートを使用していて変更していない場合が考えられます。この場合、統合セキュリティは使用しません (接続文字列でユーザー名とパスワードを指定します) ので、それが可能かどうかを確認してください。

次に、MySQL コネクタ (名前空間はhttp://dev.mysql.com/downloads/dotnet.htmlMySql.Data.MySqlClientからダウンロード可能) を使用して、 http : //www.functionx.com/mysqlnet で詳細に説明されているように、プログラムで MySQL データベースに接続できます。 /csharp/Lesson02.htm

于 2012-06-17T15:03:22.893 に答える
1

統合セキュリティを使用しています。WPF アプリの場合、DB へのアクセスを認証するために使用されるアカウントは、ログインしているアカウントです。ただし、WCF サービスでは、アカウントはそれをホストする (IIS) サーバーの設定によって制御されます。いくつかのオプションがあります:

  1. ユーザー名とパスワードを使用して DB に接続するように変更します
  2. WCF サービスが接続しようとしているアカウントを受け入れるように DB を変更します (DB はエラー メッセージまたはログで通知する必要があります)。
  3. 特権を持つ Windows アカウントを使用するようにサーバー設定を変更する
于 2012-06-16T15:27:24.953 に答える