2017-02-22 3 views
0

大学の講師は、postgresSqlデータベースとc#プログラムを接続するタスクを教えてくれました。これまでのところ、このように見えるものはありません。postgresデータベースとc#visual studioとの接続方法

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Data; 
using System.Data.OleDb; 
using System.Data.Sql; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 
using System.Data.Common; 
using Npgsql; 
using NpgsqlTypes; 

namespace ConsoleApplication4 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     string postgresConStr = "Server=localhost;Port=5432;UserId=ricards;Password=muzika23;Database=prog4;"; 
     NpgsqlConnection ncon = new NpgsqlConnection(postgresConStr); 
     NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM persona", ncon); 
     ncon.Open(); 
     NpgsqlDataReader dr = cmd.ExecuteReader(); 

     DataTable dt = new DataTable(); 
     dt.Columns.Add(new DataColumn("ID", typeof(int))); 
     dt.Columns.Add(new DataColumn("vards", typeof(string))); 
     dt.Columns.Add(new DataColumn("uzvards", typeof(string))); 
     dt.Columns.Add(new DataColumn("vecums", typeof(int))); 

     while (dr.Read()) 
     { 
      DataRow row = dt.NewRow(); 
      row["ID"] = dr["ID"]; 
      row["vards"] = dr["vards"]; 
      row["uzvards"] = dr["uzvards"]; 
      row["vecums"] = dr["vecums"]; 
      dt.Rows.Add(row); 
     } 
     ncon.Close(); 
     dt.AcceptChanges(); 
     int izvele; 
     do 
     { 
      Console.WriteLine("0 - Beigt darbu"); 
      Console.WriteLine("1 - Apskatīt tabulas datus"); 
      Console.WriteLine("2 - Pievienot tabulai datus"); 
      Console.WriteLine("3 - Labot tabulas datus"); 
      Console.WriteLine("4 - Dzēst tabuas datus"); 
      Console.Write("Jūsu izvēle: "); 
      izvele = int.Parse(Console.ReadLine()); 
      switch (izvele) 
      { 
       case 1: 
        PrintTable(dt); 
        break; 
       case 2: 

        DataRow drw = dt.NewRow(); 
        Console.Write("Ievadiet studenta vārdu: "); 
        string vards = Console.ReadLine(); 
        drw["vards"] = vards; 

        Console.Write("Ievadiet uzvārdu: "); 
        string uzvards = Console.ReadLine(); 
        drw["uzvards"] = uzvards; 

        Console.Write("Ievadiet vecumu: "); 
        int vecums = int.Parse(Console.ReadLine()); 
        drw["vecums"] = vecums; 

        dt.Rows.Add(drw); 
        ApplyToDb(dt, ncon); 

        break; 

       default: 
        break; 
      } 
     } while (izvele !=0); 



    } 
    static void PrintTable(DataTable dt) 
    { 
     foreach (DataColumn dc in dt.Columns) 
     { 
      Console.Write(dc.ColumnName + " "); 
     } 
     Console.WriteLine(); 
     Console.WriteLine(); 
     foreach (DataRow dr in dt.Rows) 
     { 
      for (int i = 0; i < dr.ItemArray.Length; i++) 
      { 

       Console.Write(dr[i] + "\t"); 


      } 
      Console.WriteLine(); 
      Console.WriteLine(); 
     } 

    } 
    static void ApplyToDb(DataTable dt, NpgsqlConnection ncon) 
    { 

     NpgsqlCommand update = new NpgsqlCommand("UPDATE persona SET vards=?,uzvards=?, vecums=? WHERE ID =? ", ncon); 

     update.Parameters.Add(new NpgsqlParameter("@vardss", OleDbType.VarChar)); 
     update.Parameters.Add(new NpgsqlParameter("@uzvards", OleDbType.VarChar)); 
     update.Parameters.Add(new NpgsqlParameter("@vecums", OleDbType.VarChar)); 
     update.Parameters.Add(new NpgsqlParameter("@ID", OleDbType.Integer)); 




     NpgsqlCommand add = new NpgsqlCommand("INSERT INTO persona (vards, uzvards, vecums) VALUES(@vards, @uzvards, @vecums)", ncon); 
     add.Parameters.Add(new NpgsqlParameter("@vards", OleDbType.VarChar)); 
     add.Parameters.Add(new NpgsqlParameter("@uzvards", OleDbType.VarChar)); 
     add.Parameters.Add(new NpgsqlParameter("@vecums", OleDbType.VarChar)); 


     foreach (DataRow dro in dt.GetChanges().Rows) 
     { 

      if (dro.RowState == DataRowState.Added) 
      { 
       add.Parameters[0].Value = dro[1]; 
       add.Parameters[1].Value = dro[2]; 
       add.Parameters[2].Value = dro[3]; 
       ncon.Open(); 
       add.ExecuteNonQuery(); 
       ncon.Close(); 
      } 
      if (dro.RowState == DataRowState.Modified) 
      { 
       update.Parameters[0].Value = dro[1]; 
       update.Parameters[1].Value = dro[2]; 
       update.Parameters[2].Value = dro[3]; 
       update.Parameters[3].Value = dro[0]; 
       ncon.Open(); 
       update.ExecuteNonQuery(); 
       ncon.Close(); 
      } 

     } 
    } 
} 

イム必ずそのコードは、私はpostgresの(ようにホスト、データベース、ユーザーおよび)へのconnectionStringsパスと彼らはすべての試合をチェックして、問題ではありません。 私が知りたい事は、そのpostgresデータベースをC#プログラムのデバッグフォルダーに入れなければならないのか、それとも何か?教授はそれについて何も言及しなかった?そして、どのように私はそのデータベースを見つけることができますか、私はPostgresフォルダ全体を検索しましたが、データベースが隠されている場所を見つけることはできません。

私を助けてください。

おかげ

EDIT

update.Parameters.Add(new NpgsqlParameter("@vardss", OleDbType.VarChar)); 

は、私はpostgresのタイプにOleDbTypeを変更する必要がありますか?どうやってするの? (このパート - OleDbType.VarChar)

+0

あなたはpostgresサーバーが必要です。 – McNets

+0

だから、ローカルにアクセスできないのですか?その場合、私はそれを実現させるために何をすることができますか?どのように私はサーバーを作成するには? –

答えて

0

postgresコンパクトエディションはありません。

postgres siteからダウンロードすることができます。ハイパーv、vmware、バーチャルボックスアプリをお持ちの場合は、turnkeyから1つの仮想アプライアンスをダウンロードできます。

関連する問題