PDA

View Full Version : مبتدی: مشکل در خروجی گرفتن از سی شارپ



hamidtmu
جمعه 16 آذر 1397, 17:14 عصر
با سلام.
خدمت استادان بزرگوار/بعداز سوالات زیاد من برنامه خودم را ساختم ولی الان می خوام فایل exe را از پوشه دبیوگ بردارم با دیتا بیس لوکالم ارتباط برقرار نمیکنه. دوتا دیتا بیسم را کنار فایل exe کپی کردم. می خواستم بپرسم باید به چه صورت این مشکل حل بشه و جداولم بدون داشتن و نصب sql به صورت مجدد نمایش داده بشه
چند جا سرچ کردم ولی چیزی نفهمیدم(می خوام نرم افزارم روی همه سیتسم ها جواب بده (بدون نیاز به نصب sql)
مثل اینکه باید کانکشن استرینگشو تغیر بدم ولی از کجا باید اینکار رو انجام بدم
اینم کد من هست.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Report_Stimul_AND_Crystal
{
public partial class frmKarbar : Form
{
public frmKarbar()
{
InitializeComponent();
}

SqlConnection con = new SqlConnection("Data Source=(Local);initial catalog=ReportDB;integrated security=true");
SqlCommand cmd = new SqlCommand();

void Display()
{
DataSet ds = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = new SqlCommand();
adp.SelectCommand.Connection = con;
adp.SelectCommand.CommandText = "Select * from Karbar";
adp.Fill(ds,"Karbar");
dgvKarbar.DataSource = ds;
dgvKarbar.DataMember = "Karbar";
//*******************************
dgvKarbar.Columns[0].HeaderText = "کد";
dgvKarbar.Columns[1].HeaderText = "نام کاربری";
dgvKarbar.Columns[2].HeaderText = "کلمه عبور";
}
private void frmKarbar_Load(object sender, EventArgs e)
{
Display();
}

private void btnSave_Click(object sender, EventArgs e)
{
try
{
cmd.Parameters.Clear();
cmd.Connection = con;
cmd.CommandText = "insert into Karbar(Uname,Password)values(@a,@b)";
cmd.Parameters.AddWithValue("@a",txtUName.Text);
cmd.Parameters.AddWithValue("@b",txtPassword.Text) ;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Display();
MessageBox.Show("ثبت کاربر انجام شد");
//******************************
txtPassword.Text = "";
txtUName.Text = "";
}
catch (Exception)
{
MessageBox.Show("مشکلی پیش آمده است");
}
}

private void btnDelete_Click(object sender, EventArgs e)
{
try
{
int x = Convert.ToInt32(dgvKarbar.SelectedCells[0].Value);
cmd.Parameters.Clear();
cmd.Connection = con;
cmd.CommandText = "Delete from Karbar where id=@N";
cmd.Parameters.AddWithValue("@N",x);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Display();
MessageBox.Show("حذف کاربر انجام شد");
}
catch (Exception)
{
MessageBox.Show("مشکلی پیش آمده است");
}
}

private void btnEdit_Click(object sender, EventArgs e)
{
try
{
cmd.Parameters.Clear();
cmd.Connection = con;
cmd.CommandText = "Update Karbar set UName='"+txtUName.Text+ "',Password='" + txtPassword.Text + "' where id="+Convert.ToInt32(dgvKarbar.SelectedCells[0].Value);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Display();
MessageBox.Show("ویرایش کاربر انجام شد");
//******************************
txtPassword.Text = "";
txtUName.Text = "";
}
catch (Exception)
{
MessageBox.Show("مشکلی پیش آمده است");
}
}

private void dgvKarbar_MouseUp(object sender, MouseEventArgs e)
{
txtUName.Text = dgvKarbar[1, dgvKarbar.CurrentRow.Index].Value.ToString() ;
txtPassword.Text = dgvKarbar[2, dgvKarbar.CurrentRow.Index].Value.ToString();
}
}
}




البته بگم چند صفحه دیگه نیز به همین صورت دارم
می خوام نرم افزارم روی همه سیتسم ها جواب بده (بدون نیاز به نصب sql

Mahmoud Zaad
جمعه 16 آذر 1397, 17:57 عصر
سلام
پس کلا نباید از sql server استفاده کنی مثلا می تونی از sqlite استفاده کنی که نیاز به نصب نداره.

hamidtmu
جمعه 16 آذر 1397, 18:01 عصر
سلام
پس کلا نباید از sql server استفاده کنی مثلا می تونی از sqlite استفاده کنی که نیاز به نصب نداره.
من واقعا متوجه نمیشم . یعنی شما می فرمایید اگه کسی با sql سرور استفاده کرد برای نصب نرم افزارش حتما باید sql سرور روی سیستم طرف مقابلش نصب باشه؟
قابل توجه اینکه من نمیخام روی سیستم های دیگه نرم افزار رو ویرایش کنم و فقط میخام اجرا بشه و کار بکنه.؟
یه جا خوندم میگن با برنامه هایی که ستاپ می سازند میشه مثل ادونس اینستالر

Mahmoud Zaad
جمعه 16 آذر 1397, 18:32 عصر
بله باید نصب باشه، البته یک نسخه سبک به اسم SQL Server Express برای کاربر نهایی کافیه.

hamidtmu
جمعه 16 آذر 1397, 18:44 عصر
بله باید نصب باشه، البته یک نسخه سبک به اسم SQL Server Express برای کاربر نهایی کافیه.

خیلی ممنون خیلی همین نکته کارم را راه میندازه.

این دو تا سوال را هم بی زحمت جواب بدید. اگه بخام نرم افزارم روی سیستم دیگه کار کنه باید sql سرور حالا همونی که شما فرمودید را نصب کنم. بعد ایا نیاز هست که کاربر نهایی این دیتا بیس ها را در Sql سرور اتچ کنه یا همون نصب تنها جواب میده. ممنون میشم کسی راهنمایی کنه

فقط یه سوال دیگه اینکه من به چه صورت به دیتا بیس ساخته شده توسط sql وصل بشم. میخام همه را توی یه پوشه بزارم. دیتا بیسم جداست-و فایل exe را می خوام اجرا کنم با مشکل عدم اتصال به دیتا بیس برنخورم

samiasoft
جمعه 16 آذر 1397, 21:49 عصر
خیلی ممنون خیلی همین نکته کارم را راه میندازه.

این دو تا سوال را هم بی زحمت جواب بدید. اگه بخام نرم افزارم روی سیستم دیگه کار کنه باید sql سرور حالا همونی که شما فرمودید را نصب کنم. بعد ایا نیاز هست که کاربر نهایی این دیتا بیس ها را در Sql سرور اتچ کنه یا همون نصب تنها جواب میده. ممنون میشم کسی راهنمایی کنه

فقط یه سوال دیگه اینکه من به چه صورت به دیتا بیس ساخته شده توسط sql وصل بشم. میخام همه را توی یه پوشه بزارم. دیتا بیسم جداست-و فایل exe را می خوام اجرا کنم با مشکل عدم اتصال به دیتا بیس برنخورم

در حالت اکسپرس با این کانکشن نیاز به اتچ دیتابیس نیست اتومات خودش ارتباط برقرار میکند :(با فرض قرار داشتن دیتابیس در کنار فایل اجرایی) :

Server=.\SQLExpress;AttachDbFilename=|DataDirector y|mydbfile.mdf;Database=dbname;Trusted_Connection= Yes;

hamidtmu
شنبه 17 آذر 1397, 00:54 صبح
سلام و تشکر از شما.لطف میفرمایید بگید این کانکشن را کجا قرار بدم؟

رامین مرادی
شنبه 17 آذر 1397, 11:39 صبح
مقدار رشته ای موجود در این کد رو با کدی که دوستمون دادن ویرایش کنید.

SqlConnection con = new SqlConnection("Data Source=(Local);initial catalog=ReportDB;integrated security=true");

میشه
SqlConnection con = new SqlConnection("Server=.\SQLExpress;AttachDbFilename=|DataDirector y|mydbfile.mdf;Database=dbname;Trusted_Connection= Yes;");