2014-10-10 23 views
0

我得到這個錯誤,當我寫了下面的代碼:C#擅長於SQL數據庫導入(必須聲明標量變量「@SICILNO」。)

必須聲明標量變量「@SICILNO」。

C#代碼:

private void button1_Click(object sender, EventArgs e) 
    { 
     openFileDialog1.Title = "Lütfen Dosya Seçiniz"; 
     openFileDialog1.Filter = " Excel Dosyası (*.xls)|*.xls"; 
     openFileDialog1.FileName = "*.xls"; 
     openFileDialog1.ShowDialog(); 
     textBox1.Text = openFileDialog1.FileName; 

     string dosya_yolu = openFileDialog1.FileName; 
     OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + dosya_yolu + "; Extended Properties=Excel 12.0"); 
     OleDbCommand sorgu = new OleDbCommand("select * from [Sayfa1$]", baglanti); 
     OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(sorgu); 
     DataSet ds; 
     DataTable Dt; 


     ds = new DataSet(); 
      objAdapter1.Fill(ds); 
      Dt = ds.Tables[0]; 

     baglanti.Open(); 
     OleDbDataReader drexcel = sorgu.ExecuteReader(); 


     SqlConnection baglan = new SqlConnection("Server=SBUKEN-NB; User ID=sa; Password=*******; Initial Catalog=PERSONEL"); 
     SqlCommand komut = new SqlCommand(); 
     baglan.Open(); 


     DialogResult sonuc; 
     sonuc = MessageBox.Show("Kayıtlar Veritabanına aktarılacak ! Onaylıyor musunuz ?","Onay Mesajı", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 
     if (sonuc == DialogResult.No) 
     { 
      baglan.Close(); 
     } 
     if (sonuc == DialogResult.Yes) 
     { 
      for (int i = 0; i < Dt.Rows.Count; i++) 
      { 
       DataRow row = Dt.Rows[i]; 
       int columnCount = Dt.Columns.Count; 
       string[] columns = new string[columnCount]; 
       for (int j = 0; j < columnCount; j++) 
       { 
        columns[j] = row[j].ToString(); 
       } 

       string sql = "INSERT INTO personel(SICILNO,ADI,SOYADI,KURUM,ISYERI,BOLUM,BIRIM,GOREVI,CINSIYET,"; 
       sql += " DTARIH,DYERI,MEDENIHALI,TCKIMLIKNO,EGITIM,ISEGIRIS,UCRETSIZIZIN,"; 
       sql += " UCRETI,SSKNO,OZELKOD,AGI,CIKISNEDENI,KIDEMYILI,YABANCIDIL, COCUKSAYISI,ASKERLIKDURUM,KANGURUBU,EHLIYET,ADRES,TELEFON,GSMNO,"; 
       sql += " ISTENCIKIS,MESLEKKODU,BABAADI)"; 
       sql += " VALUES (@SICILNO, @ADI, @SOYADI, @KURUM, @ISYERI, @BOLUM, @BIRIM, @GOREVI, @CINSIYET, @DTARIH, @DYERI, @MEDENIHALI, @TCKIMLIKNO, @EGITIM, @ISEGIRIS, @UCRETSIZIZIN, "; 
       sql += " @UCRETI, @SSKNO, @OZELKOD, @AGI, @CIKISNEDENI, @KIDEMYILI, @YABACIDIL, @COCUKSAYISI, @ASKERLIKDURUM, @KANGURUBU, @EHLIYET, @ADRES, @TELEFON, @GSMNO, @ISTENCIKIS, "; 
       sql += " @MESLEKKODU, @BABAADI) "; 


       SqlCommand cmd = new SqlCommand(sql, baglan); 
       MessageBox.Show(sql.ToString()); 

       komut.Parameters.Add("@SICILNO", columns[0]); 
       komut.Parameters.Add("@ADI", columns[1]); 
       komut.Parameters.Add("@SOYADI", columns[2]); 
       komut.Parameters.Add("@KURUM", columns[3]); 
       komut.Parameters.Add("@ISYERI", columns[4]); 
       komut.Parameters.Add("@BOLUM", columns[5]); 
       komut.Parameters.Add("@BIRIM", columns[6]); 
       komut.Parameters.Add("@GOREVI", columns[7]); 
       komut.Parameters.Add("@CINSIYET", columns[8]); 
       komut.Parameters.Add("@DTARIH", columns[9]); 
       komut.Parameters.Add("@DYERI", columns[10]); 
       komut.Parameters.Add("@MEDENIHALI", columns[11]); 
       komut.Parameters.Add("@TCKIMLIKNO", columns[12]); 
       komut.Parameters.Add("@EGITIM", columns[13]); 
       komut.Parameters.Add("@ISEGIRIS", columns[14]); 
       komut.Parameters.Add("@UCRETSIZIZIN", columns[15]); 
       komut.Parameters.Add("@UCRETI", columns[16]); 
       komut.Parameters.Add("@SSKNO", columns[17]); 
       komut.Parameters.Add("@OZELKOD", columns[18]); 
       komut.Parameters.Add("@AGI", columns[19]); 
       komut.Parameters.Add("@CIKISNEDENI", columns[20]); 
       komut.Parameters.Add("@KIDEMYILI", columns[21]); 
       komut.Parameters.Add("@YABACIDIL", columns[22]); 
       komut.Parameters.Add("@COCUKSAYISI", columns[23]); 
       komut.Parameters.Add("@ASKERLIKDURUM", columns[24]); 
       komut.Parameters.Add("@KANGURUBU", columns[25]); 
       komut.Parameters.Add("@EHLIYET", columns[26]); 
       komut.Parameters.Add("@ADRES", columns[27]); 
       komut.Parameters.Add("@TELEFON", columns[28]); 
       komut.Parameters.Add("@GSMNO", columns[29]); 
       komut.Parameters.Add("@ISTENCIKIS", columns[30]); 
       komut.Parameters.Add("@MESLEKKODU", columns[31]); 
       komut.Parameters.Add("@BABAADI", columns[32]); 

       cmd.ExecuteNonQuery(); 
       baglanti.Close(); 

      } 
+1

更好地隱藏你的密碼從你放在SO上的代碼。 – Vladimirs 2014-10-10 11:35:06

回答

1

您使用的SqlCommand

komutcmd 2個實例。

你從來沒有sql字符串添加到komut,從不參數添加到cmd ...

所以,你應該選擇你想哪個實例使用!

解決方案

刪除

SqlCommand komut = new SqlCommand(); 

cmdkomut.Parameters.Add(xxx)

0

你的參數取代komut ......你沒有那個執行所述查詢 的參數添加到命令嘗試 cmd.Parameters.Add(「@ SICILNO」,columns [0]);