Resimler gönderiler için kullanışlıdır. Ancak mümkün olduğunca az ve / veya küçük resimler kullanmak gerekir.
Bilgisayardaki bir hata mesajı veya kodu resim olarak eklemek yerine kendisini
kopyalayıp yapıştırın.
Resimler gönderiler için kullanışlıdır. Ancak mümkün olduğunca az ve / veya küçük resimler kullanmak gerekir.
Bilgisayardaki bir hata mesajı veya kodu resim olarak eklemek yerine kendisini
kopyalayıp yapıştırın.
0
datagrid üzerindeki verileri veri kaynağına kaydetmek
merhaba,
excel üzeriden veriyi datagrid üzerine atıyorum.
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Prg_Listesi.xlsx; Extended Properties='Excel 12.0 Xml;HDR=YES'");
baglanti.Open();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sayfa1$]", baglanti);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt.DefaultView;
baglanti.Close();
fakat, daha sonra datagrid deki verileri veri tabanına kaydetmeyi beceremedim.
yardımcı olur musunuz?
teşekkürler.
yardımcı olur musunuz? →
hakandogan 29.01.17 09:52
0
ben şu şekilde çözmüştüm.
OleDbCommand komut = new OleDbCommand("SELECT * FROM [Sayfa1$]", bağlantıexcel);
OleDbDataReader oku = komut.ExecuteReader();
while (oku.Read())
{
bağ.Open();
OleDbCommand kmt = new OleDbCommand("insert into tblprg (i1,i2) values ('" + oku["i1"].ToString() + "','" + rgx.Replace(oku["i1"].ToString(),"") + "')", bağ);
kmt.ExecuteNonQuery();
kayitsay++;
bağ.Close();
}
çok teşekkür ederim.
0
SQL Server kullansaydın işin şu kadar kolaydı:
SqlBulkCopy sbc = new SqlBulkCopy(baglanti);
bulkcopy.WriteToServer(dt);
OleDb için biraz daha uzun bir yol kullanılabilir. Kısa yolunu bilmiyorum. Birisi şunu yapmış, bir dene istersen.
public static string GenerateInsert(DataTable table)
{
var names = new List<string>();
foreach (DataColumn col in table.Columns)
{
names.Add("[" + col.ColumnName + "]");
}
var output = new StringBuilder();
output.AppendFormat("INSERT INTO [{0}]\n\t({1})\nVALUES ", table.TableName, string.Join(", ", names.ToArray()));
bool firstRow = true;
foreach (DataRow rw in table.Rows)
{
if (firstRow)
{
firstRow = false;
output.AppendLine("");
}
else
{
// there was a previous item, so add a comma
output.AppendLine(",");
}
output.Append("\t(");
output.Append(GetInsertColumnValues(table, rw));
output.Append(")");
}
return output.ToString();
}
public static string GetInsertColumnValues(DataTable table, DataRow row)
{
var output = new StringBuilder();
bool firstColumn = true;
foreach (DataColumn col in table.Columns)
{
if (firstColumn)
{
firstColumn = false;
}
else
{
output.Append(", ");
}
output.Append(GetInsertColumnValue(row, col));
}
return output.ToString();
}
public static string GetInsertColumnValue(DataRow row, DataColumn column)
{
string output = "";
if (row[column.ColumnName] == DBNull.Value)
{
output = "NULL";
}
else
{
if (column.DataType == typeof(bool))
{
output = (bool)row[column.ColumnName] ? "1" : "0";
}
else
{
bool addQuotes = false;
addQuotes = addQuotes || (column.DataType == typeof(string));
addQuotes = addQuotes || (column.DataType == typeof(DateTime));
if (addQuotes)
{
output = "'" + row[column.ColumnName].ToString() + "'";
}
else
{
output = row[column.ColumnName].ToString();
}
}
}
return output;
}
Kullanımı:
string SQLKodu = generateInsert(dt);
Bundan sonra SQLKodu değişkenini ile elde ettiğin sorguyu kullanarak ekleme yapabilirsin. Tabi tablonun veritabanında mevcut olması gerekir.
0
Alan adları az ve belliyse çözümün iyi. Access kullanma imkanım yok, toplu sorgu çalıştırmayı destekler mi bilmem ama, bunu şu şekilde biraz daha hızlı ve şık hale getirebiliriz.
OleDbCommand komut = new OleDbCommand("SELECT * FROM [Sayfa1$]", bağlantıexcel);
OleDbDataReader oku = komut.ExecuteReader();
StringBuiledr sb = new StringBuilder();
while (oku.Read())
{
sb.Append(String.Format("insert into tblprg (i1,i2) values ('{0}','{1}');\r\n", oku["i1"], rgx.Replace(oku["i1"].ToString(),""));
kayitsay++;
}
bağ.Open();
OleDbCommand kmt = new OleDbCommand(sb.ToString(), bağ);
kmt.ExecuteNonQuery();
bağ.Close();
cevapsitesi.com'a katkınızdan dolayı teşekkür ederiz. Cevap yazarken lütfen şunlara dikkat edin:
Cevabınız açık ve net olmalıdır. Varsa alıntılar, bağlantılar, resim veya program kodu eklemelisiniz.
Eğer soru hakkında görüş bildirecekseniz veya cevap haricinde başka bir şey söylemek istiyorsanız yorum olarak yazın.
Tartışma çıkaracak cevaplardan kaçının, hitabınıza dikkat edin, "Kardeşim", "Arkadaşım" gibi ifadeler kullanmayın.
Eleştirmeyin. Sadece bilginizi gösterin ve fikrinizi söyleyin.
Büyük harf kullanmaktan ve cümle kurmaktan çekinmeyin. :)
Buraya yeni bir soru yazmayın, "benim de şöyle bir sorunum var" gibi eklemeler yapmayın. Sorunuz varsa yeni soru ekleyin.
ÜSLUP
ve SAYGI çok önemlidir. İnsanlar cevabınızdan çok üslubunuza dikkat ederler.
Cevabı, bir cevabın veya sorunun yorumu olarak dönüştürmek için ilgili cevabı veya soruyu tıklayın. [
İptal ]