2016-04-11 23 views
-2

SQL Server veritabanlarına bağlanmak için ADO.NET kullanmayı deniyorum. Bir pencere formu oluşturmaya çalışıyorum ve bir metin kutusu ve düğme koydum, böylece değer girebilir ve veritabanındaki kaydı kontrol edebilirim. Ancak sonuç, System.Windows.Forms, Textbox öğesinden türetilmiş bir yönetilen yerel türüne eşleme yok eşlemesi var diyor.Nesne türünde eşleşme yok, Sistem pencereleri formu

Bana bir öneri verebilir misiniz?

böyle kod uygulamak:

using System; 
using System.Data.SqlClient; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace casestudy 
{ 
    public partial class Form1 : Form 
    { 
     SqlConnection vcon1 = new SqlConnection(@"Data Source=SOPHIA-PC\SQLEXPRESS;Initial Catalog=casestudy;Integrated Security=True"); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      try 
      { 
      vcon1.Open(); 

     } 

     catch (Exception ex) 
     { 
      MessageBox.Show("error.occured" + ex.Message); 
      this.Dispose(); 
     } 

    } 
    private void Find_Click(object sender, EventArgs e) 
    { 
     string querystring = "SELECT * FROM AssignedSolution WHERE CASEID = @caseid"; 
     SqlCommand Vcom = new SqlCommand(querystring, vcon1); 
     Vcom.Parameters.AddWithValue("@caseid", txtCASEID); 
     SqlDataReader rdr = null; 

     try 
     { 
      Vcom.Connection = vcon1; 

      Vcom.ExecuteNonQuery(); 


      rdr = Vcom.ExecuteReader(); 
          while (rdr.Read()) 
      { 
       Console.WriteLine(rdr[0]); 

      } 
      Vcom.Dispose(); 

     } 

     catch (Exception ex) 
     { 
      MessageBox.Show("error.occured" + ex.Message); 

     } 
      finally 
      { 
       vcon1.Close(); 
       vcon1.Dispose(); 
      } 
     } 
    } 
} 
+0

Ayrıca bu yöntemde 'Form1_Load'da oradaki bağlantıyı açmanıza gerek yoktur, sıfırdan beri sıfırdır .. click olayı içine koyup' using() {} '' Sql Data'yu kullanarak nasıl kullanılır Nesneleri 'açıkça Dispose() yöntemini çağırmak zorunda değilsiniz. – MethodMan

cevap

0

senin sorunun bu hat üzerinde olduğuna inanıyoruz:

Vcom.Parameters.AddWithValue("@caseid", txtCASEID); 

yerine bu deneyin:

Vcom.Parameters.AddWithValue("@caseid", txtCASEID.Text); 

Sen çalışıyorsanız TextBox'dan SqlParameter'a değer verin. AddWithValue yöntemi, parametre adını ve değerini argümanlar olarak alır, ancak değer argümanı, object türündedir, bu nedenle, txtCASEID'u atamaya çalışarak derleyiciden herhangi bir şikayet almazsınız. Bununla birlikte, txtCASEID, string numaralı telefon numarasına sahip olmayan bir TextBox; string değerini, dolayısıyla txtCASEID.Text değerini almak için Text özelliğini kullanmanız gerekir.

+0

Merhaba Roryap, Çok teşekkür ederim! Bir Text ekledim, bu yüzden bana bu kez herhangi bir hata vermeyin. Ancak, bulduğumda kaydı göremiyorum. DataGridview veya Datareader eklemem gerekip gerekmediğini bilmiyorum? Sonuçları formda nasıl görebiliyorum bilmiyorum. – Sophia

İlgili konular