1-) C# RMOS - MSSQL SQL Server ı gömülü setup yapma oluşturma
kaynak : http://roboturka.com/sql-server-ve-arduino/3-ders-c-ve-sql-server-setup-olusturma/
kaynak : https://youtu.be/g9RE_1ztEug
c# InstallShield indir ve kur. VS2015 crackli olsun veya olmadan da olabilir.
2-) BUNUNLA YAP DAHA İYİ->VS Installer ilede yapılabilir. Aşağıdan indirip kurabilirsin VS2015 için
3-) EN İYİ YÖNTEM
.mdf ve .log dosyasını C#'a Existing item diyerek DATASET olarak ekle
c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL
4-) En iyisinin en iyisi
oluşturduktan sonra aynı SQL Server gibi tablolarını oluştur identity pk felan yap
AŞAĞIDAKİ RESİMDEKİ ALANLARI KURCALAYABİLİRSİN
5-) Publish Ederken bunları seçeceksin
aşağıdaki gibi hata alırsan bunu yükle -> ekle kaldırdan VS2015 i değiştir -> update modify yap
**************************APP.CONFİG VE VERİTABANI***********************
1-) C# RMOS - App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<add name="MyCon" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=c:\Users\ramazan\Documents\Visual Studio 2015\Projects\SQLServerSetup\SQLServerSetup\ogrenci.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
2-) RHVeritabani.cs
/* -owner = Ramazan HABER- -date= 28.02.2018- -descreption= Veri Tabani İşlemleri- */
/* select Cast('' As Nvarchar(50)) as giderSure,* from uHKistekler */
using System;
using System.Data.SqlClient;
using System.Data;
using System.Collections.Generic;
using System.IO;
using System.Configuration;
namespace SQLServerSetup.Library
{
public class RHVeritabani
{
public static string connstr = ConfigurationManager.ConnectionStrings["MyCon"].ToString();
//"Data Source='RAMBO';Initial Catalog=SETUPPROJESI; Persist Security Info=True;uid='sa';pwd='123'";
public static SqlConnection con = new SqlConnection(connstr);
public static void MyConYenile()
{
try
{
connstr = "Data Source='RAMBO';Initial Catalog=SETUPPROJESI; Persist Security Info=True;uid='sa';pwd='123'";
con = new SqlConnection(connstr);
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyConYenile", "", ex);
}
}
/*Aşağısı benim*/
public static string MyClassIsmi = "RHVeritabani";
//static SqlConnection con;
static SqlTransaction tran;
//RHVeritabani.MyServerInfo("RAMAZANPC", "OrderTakerUltimate", "sa", "123");
/// <summary>
/// Veri tabanı bağlantıları için constructor(kurucu metot)
/// </summary>
/// <param name="pServerName"></param>
/// <param name="pVeriTabani"></param>
/// <param name="pUserName"></param>
/// <param name="pPassword"></param>
public static void MyServerInfo(string pServerName, string pVeriTabani, string pUserName, string pPassword) // KULLANILMIYOR ARTIK
{ // yüklenince
try
{
con = new SqlConnection("server=" + pServerName + "; Initial Catalog=" + pVeriTabani + ";User id=" + pUserName + ";Password=" + pPassword + ";Integrated Security=SSPI");
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "RHVeritabani_C", "Bağlantı Açılamıyor!", ex);
}
}
/// <summary>
/// Transaction başlatır
/// </summary>
public static void MyBeginTransaction()
{
try
{
MyOpen();
tran = con.BeginTransaction();
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyBeginTransaction", "Beklenmedik Hata!", ex);
}
}
/// <summary>
/// Transaction kayıt eder
/// </summary>
public static void MyCommit()
{
try
{
MyOpen();
tran.Commit();
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyCommit", "Beklenmedik Hata!", ex);
}
}
/// <summary>
/// Transaction iptal eder
/// </summary>
public static void MyRollback()
{
try
{
MyOpen();
tran.Rollback();
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyRollback", "Beklenmedik Hata!", ex);
}
}
public static void MyOpen()
{
try
{
if (con.State == ConnectionState.Closed)
{ // kapalıysa aç
con.Open();
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyOpen", "Bağlantı Açılamıyor!", ex);
}
}
public static void MyClose()
{
try
{
if (con.State == ConnectionState.Open)
{ // açıksa kapat
con.Close();
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyClose", "Bağlantı Kapatılamıyor!", ex);
}
}
/// <summary>
/// Gelen Sql Sorgusuna Göre Geriye DataTable Döndürür. Tablo Boş veya Sorgu hatalıysa NULL döner
/// </summary>
/// <param name="pSqlText"></param>
/// <returns></returns>
public static DataTable MyGetDataTable(string pSqlText) //
{ // datatable boş ise veya hata verirse null döner
try
{
MyOpen();
SqlCommand command = new SqlCommand(pSqlText, con);
SqlDataReader dataReader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dataReader);
foreach (System.Data.DataColumn col in dt.Columns) col.ReadOnly = false; //
dataReader.Close();
MyClose();
return dt;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyGetDataTable", "Beklenmedik Hata!", ex);
MyClose();
return null;
}
}
/// <summary>
/// insert,update,delete için Bu metodu kullan! HATALI VEYA YANLIŞ BİLGİ GİRİLİRSE -1 DÖNER
/// </summary>
/// <param name="pSqlText"></param>
/// <returns></returns>
public static int MySetQuery(string pSqlText)
{ // insert,update,delete de kullanılır. -1 dönerse hatalı veya yanlış giriştir. aksi durumda başarılı
try
{
MyOpen();
SqlCommand command = new SqlCommand(pSqlText, con);
int value = command.ExecuteNonQuery();
MyClose();
return value;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MySetQuery", "Beklenmedik Hata!", ex);
MyClose();
return -1;
}
}
/// <summary>
/// TOP 1 ile veya SUM,MAX gibi tek alan döndüreceksek kullanılır. Veri yoksa veya hataya düşerse -1 döner
/// </summary>
/// <param name="pDonecekDeger"></param>
/// <param name="pSqlText"></param>
/// <returns></returns>
public static string MyGetItem(string pDonecekDeger, string pSqlText)
{ // hatalı veya veri yoksa -1 döner . aksi durumda veri döner. Dikkat tek değer döner "Top 1","id" gibi alanlar için kullan!
try
{
MyOpen();
string DonecekDeger = "-1";
SqlCommand command = new SqlCommand(pSqlText, con);
SqlDataReader dataReader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dataReader);
if (dt.Rows.Count > 0)
{ //
foreach (DataRow item in dt.Rows)
{
DonecekDeger = item[pDonecekDeger].ToString();
}
}
dataReader.Close();
MyClose();
return DonecekDeger;
}
catch (Exception ex)
{
MyClose();
throw new Exception(ex.Message);
}
}
/******** aşağısını procedure kullancaksan kullan *************/
/// <summary>
/// Procedureli -> insert,update,delete için Bu metodu kullan! HATALI VEYA YANLIŞ BİLGİ GİRİLİRSE -1 DÖNER
/// </summary>
/// <param name="spName"></param>
/// <param name="sp"></param>
/// <returns></returns>
public static int MySetQuery_P(string pProcedureName, List<SqlParameter> pSqlParameter = null)
{
try
{
MyOpen();
int value = -1;
SqlCommand command = new SqlCommand(pProcedureName, con);
command.CommandType = CommandType.StoredProcedure;
if (pSqlParameter != null)
{
command.Parameters.AddRange(pSqlParameter.ToArray());
}
value = command.ExecuteNonQuery();
MyClose();
return value;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MySetQuery_P", "Beklenmedik Hata!", ex);
MyClose();
return -1;
}
}
/* MySetQuery_P metodunun kullanımı aşağıda "SqlDbType" yazmaya bilirsin sıralamaya dikkat et yeter
List<SqlParameter> sp = new List<SqlParameter>(){
new SqlParameter() {ParameterName = "@uAlanTanim_ad", SqlDbType = SqlDbType.NVarChar, Value= txtAd.EditValue.ToString()},
new SqlParameter() {ParameterName = "@uAlanTanim_durum", SqlDbType = SqlDbType.Bit, Value = radioAktif.Checked}};
RHVeritabani.MySetQuery_P("uAlanTanimEkle", sp);
// SqlDbType olmamış şeklinde
List<SqlParameter> sp = new List<SqlParameter>(){
new SqlParameter() {ParameterName = "@uAlanTanim_ad", Value= txtAd.EditValue.ToString()},
new SqlParameter() {ParameterName = "@uAlanTanim_durum", Value = radioAktif.Checked}};
RHVeritabani.MySetQuery_P("uAlanTanimEkle", sp);
*/
/******** aşağısını transaction kullancaksan kullan ve MyOpen ve Close lar arasına yaz çünkü onlar yok aşağıda *************/
/// <summary>
/// Gelen Sql Sorgusuna Göre Geriye DataTable Döndürür. Tablo Boş veya Sorgu hatalıysa NULL döner
/// </summary>
/// <param name="pSqlText"></param>
/// <returns></returns>
public static DataTable MyGetDataTable_T(string pSqlText)
{ // datatable boş ise veya hata verirse null döner
try
{
SqlCommand command = new SqlCommand(pSqlText, con);
command.Transaction = tran;
SqlDataReader dataReader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dataReader);
foreach (System.Data.DataColumn col in dt.Columns) col.ReadOnly = false;
dataReader.Close();
return dt;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyGetDataTable", "Beklenmedik Hata!", ex);
return null;
}
}
/// <summary>
/// insert,update,delete için Bu metodu kullan! HATALI VEYA YANLIŞ BİLGİ GİRİLİRSE -1 DÖNER
/// </summary>
/// <param name="pSqlText"></param>
/// <returns></returns>
public static int MySetQuery_T(string pSqlText)
{ // insert,update,delete de kullanılır. -1 dönerse hatalı veya yanlış giriştir. aksi durumda başarılı
try
{
SqlCommand command = new SqlCommand(pSqlText, con);
command.Transaction = tran;
int value = command.ExecuteNonQuery();
return value;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MySetQuery", "Beklenmedik Hata!", ex);
return -1;
}
}
/// <summary>
/// 1 tane değer döndüren SQL sorgularında Kullanılır. Örn : ID'ye göre Kodunu almak istersek veya TOP 1 ile veya SUM,MAX gibi tek alan döndüreceksek kullanılır.
/// </summary>
/// <param name="pDonecekDeger"></param>
/// <param name="pSqlText"></param>
/// <returns></returns>
public static string MyGetItem_T(string pDonecekDeger, string pSqlText)
{ // hatalı veya veri yoksa -1 döner . aksi durumda veri döner. Dikkat tek değer döner "Top 1","id" gibi alanlar için kullan!
try
{
string DonecekDeger = "-1";
SqlCommand command = new SqlCommand(pSqlText, con);
command.Transaction = tran;
SqlDataReader dataReader = command.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dataReader);
if (dt.Rows.Count > 0)
{ //
foreach (DataRow item in dt.Rows)
{
DonecekDeger = item[pDonecekDeger].ToString();
}
}
dataReader.Close();
return DonecekDeger;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClassIsmi, "MyGetItem", "Beklenmedik Hata!", ex);
return "-1";
}
}
}
}
2-) Örnek Main.cs ve Entity Framework Gömülü Veri tabanında kullanımı
using DevExpress.XtraReports.UI;
using FisBas.Library;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Linq;
using DevExpress.XtraGrid;
namespace FisBas
{
public partial class Main : Form
{
FisDBEntities db = new FisDBEntities();
public Main()
{
InitializeComponent();
}
public static string MyClass = "Main";
XtraReport1 report;
public void MyRaporGoster(bool pDuzen)
{
try
{
if (gridView1.FocusedRowHandle > -1)
{
int fis_id = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_id"]).ToString());
report = new XtraReport1();
Task<List<Fis>> sa = db.Fis.SqlQuery("select top 1 * from Fis where Fis_id="+ fis_id).ToListAsync();
if (sa.Result.Count >0)
{
if (File.Exists(@"ayarlar\ese.repx"))
{
report.LoadLayout(@"ayarlar\ese.repx");
report.DataSource = sa.Result;
}
if (pDuzen) report.ShowDesigner();
else report.ShowPreview();
}
else
{
RHMesaj.MyMessageInformation("Raporlanacak Veri Yok!");
}
}else
{
RHMesaj.MyMessageInformation("Lütfen Satır Seçiniz!");
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "MyRaporGoster", "", ex);
}
}
private void btnFisBas_Click(object sender, EventArgs e)
{
MyRaporGoster(false);
}
private void simpleButton1_Click(object sender, EventArgs e)
{
MyRaporGoster(true);
}
private void Form1_Load(object sender, EventArgs e)
{
DevExpress.Skins.SkinManager.Default.RegisterAssembly(typeof(DevExpress.UserSkins.BonusSkins).Assembly);
DevExpress.Skins.SkinManager.Default.RegisterAssembly(typeof(DevExpress.UserSkins.OfficeSkins).Assembly);
DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = "Money Twins";
this.defaultLookAndFeel1.LookAndFeel.SkinName = "Money Twins";
dateTarih.EditValue = DateTime.Now;
dateTeslimTarih.EditValue = DateTime.Now.AddDays(7);
MyLoad();
}
public void MyLoad()
{
try
{
Task<List<Fis>> sa = db.Fis.SqlQuery("select * from fis").ToListAsync();
gridControl1.DataSource = sa.Result;
gridView1.BestFitColumns();
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "MyLoad", "", ex);
}
}
public Fis MyGetFis()
{
try
{
Fis fis = new Fis();
fis.Fis_aciklama = txtAciklama.Text;
fis.Fis_ad = txtAd.Text;
fis.Fis_adres = txtAdres.Text;
fis.Fis_marka = txtMarka.Text;
fis.Fis_model = txtCihazModeli.Text;
fis.Fis_serino = txtCihazSeriNo.Text;
fis.Fis_sikayet = txtSikayet.Text;
fis.Fis_soyad = txtSoyad.Text;
fis.Fis_tarih = Convert.ToDateTime(dateTarih.EditValue);
fis.Fis_tel = txtTel.Text;
fis.Fis_teslimTarih = Convert.ToDateTime(dateTeslimTarih.EditValue);
fis.Fis_garanti = radioGroup1.EditValue.ToString();
return fis;
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "MyGetFis", "", ex);
return null;
}
}
private void btnKaydet_Click(object sender, EventArgs e)
{
try
{
Fis fis = MyGetFis();
if (fis != null)
{
db.Fis.Add(fis);
db.SaveChanges();
MyLoad();
gridView1.MoveLast();
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "btnKaydet_Click", "", ex);
}
}
private void btnSil_Click(object sender, EventArgs e)
{
try
{
if (gridView1.FocusedRowHandle > -1)
{
int fis_id = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_id"]).ToString());
Fis fis = db.Fis.Find(fis_id);
db.Fis.Remove(fis);
db.SaveChanges();
MyLoad();
gridView1.MoveFirst();
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "btnSil_Click", "", ex);
}
}
private void btnGuncelle_Click(object sender, EventArgs e)
{
try
{
Fis fis_yedek = MyGetFis();
if (gridView1.FocusedRowHandle > -1 && fis_yedek != null)
{
int aSeciliSatir = gridView1.FocusedRowHandle;
int fis_id = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_id"]).ToString());
Fis fis = db.Fis.Find(fis_id);
fis.Fis_aciklama = fis_yedek.Fis_aciklama;
fis.Fis_ad = fis_yedek.Fis_ad;
fis.Fis_adres = fis_yedek.Fis_adres;
fis.Fis_garanti = fis_yedek.Fis_garanti;
fis.Fis_marka = fis_yedek.Fis_marka;
fis.Fis_model = fis_yedek.Fis_model;
fis.Fis_serino = fis_yedek.Fis_serino;
fis.Fis_sikayet = fis_yedek.Fis_sikayet;
fis.Fis_soyad = fis_yedek.Fis_soyad;
fis.Fis_tarih = fis_yedek.Fis_tarih;
fis.Fis_tel = fis_yedek.Fis_tel;
fis.Fis_teslimTarih = fis_yedek.Fis_teslimTarih;
db.SaveChanges();
MyLoad();
gridView1.FocusedRowHandle = aSeciliSatir;
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "btnGuncelle_Click", "", ex);
}
}
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
try
{
if (gridView1.FocusedRowHandle > -1)
{
txtFisNo.Text= gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_id"]).ToString();
txtAciklama.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_aciklama"]).ToString();
txtAdres.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_adres"]).ToString();
radioGroup1.EditValue= gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_garanti"]).ToString();
txtMarka.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_marka"]).ToString();
txtCihazModeli.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_model"]).ToString();
txtCihazSeriNo.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_serino"]).ToString();
txtSikayet.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_sikayet"]).ToString();
txtSoyad.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_soyad"]).ToString();
dateTarih.EditValue= gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_tarih"]).ToString();
txtTel.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_tel"]).ToString();
dateTeslimTarih.EditValue= gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_teslimTarih"]).ToString();
txtAd.Text= gridView1.GetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Fis_ad"]).ToString();
}
}
catch (Exception ex)
{
RHMesaj.MyMessageError(MyClass, "gridView1_FocusedRowChanged", "", ex);
}
}
}
}