PDA

View Full Version : مبتدی: کمک در رفع خطای ارتباط با بانک اطلاعاتی



yazahrayaali
یک شنبه 27 اردیبهشت 1394, 10:55 صبح
:تشویق: با سلام خدمت اساتید محترم.
من از روی یک سایت یک آموزش پروژه محور را دانلود کردم و طبق گفته استاد هم پیش رفتم ولی متاسفانه در ارتباط با بانک اطلاعاتی دچار مشکل شده ام.
لطفا منو در رفع مشکل راهنمایی بفرمائید.
فایل حاوی تصویر خطا را هم پیوست کردم.

131336

salibsatan
یک شنبه 27 اردیبهشت 1394, 11:09 صبح
فایل رو دقیقا کجا پیوست کردین؟چیزی اینجا نیست

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 11:26 صبح
131337131337

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 11:27 صبح
دوستان عکس پیغام خطا را فرستادم خواهشناً کمک کنید.

salibsatan
یک شنبه 27 اردیبهشت 1394, 11:38 صبح
کانکشن استرینگ و کامندت رو هم بزار.

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 12:00 عصر
con =new sqlconnection("data source = yazahra-Pc; initial catalog =FactoryDb; integrated security = true")
cmd = new sqlcommand(selectText , con)


استاد گرامی بقیه موارد مورد نیاز شما هم در فایل پیوستی کاملاً واضح است

hsا

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 12:02 عصر
con =new sqlconnection("data source = yazahra-Pc; initial catalog =FactoryDb; integrated security = true");
cmd = new sqlcommand(selectText , con);

salibsatan
یک شنبه 27 اردیبهشت 1394, 12:39 عصر
دوست عزیز مشکل شما در sqlcommand و در قسمتی نزدیک به 12345 هست و از اونجایی که کامندتون رو نزاشتین راهنمایی بیشتری نمیشه کرد

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 12:57 عصر
با سلام خدمت شما.
من این دستورات را دقیقاً از روی آموزش نوشتم.
میشه دقیقاً بگید مشکل را چطور میشه حل کرد با همین اطلاعات داده شده.
ضمناً مگه فایل پیوستی گویای مشکل ایجاد شده نیست.
با توجه به اطلاعات موجود اگه امکان داره راهنمایی کنید چون دقیقاً مشکل در همین چند خط نمایش داده شده است.

ebrahim.rayatparvar
یک شنبه 27 اردیبهشت 1394, 13:01 عصر
شما لطف کنید مقدار selectText که کد sql باید باشد رو بزارید ببینیم به چه صورت کد زدید

ebrahim.rayatparvar
یک شنبه 27 اردیبهشت 1394, 13:02 عصر
مهندس جان من که فایل پیوستی نمیبینم به جز عکسی که گذاشتید.

salibsatan
یک شنبه 27 اردیبهشت 1394, 15:25 عصر
دوست عزیز دستور شما مشکل داره.همون sqlcomand. توی عکس هم کامند نیست و فقط کانکشن استرینگتون (اونم کمی تا قسمتی) معلومه.مشخصا یک جای کار ایراد داره.یعنی comand شما انقدر حیاتی هست که نمیتونید بزارید؟اصولا دستور،یک خط گزارش گیریه و هیچ(!) ارزشی نداره.

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 18:04 عصر
استاد ابراهیم ببینید میتونید با این کد راهنمایی کنید ؟

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace factorytest
{

public class clsDatabase
{
private SqlConnection con;
private SqlCommand cmd;
private SqlDataAdapter da;
private DataTable dt;

public void DoCommand(string commandText)
{
con = new SqlConnection();
con.ConnectionString = "Data Source=local ;Initial Catalog=FactoryDb;Integrated Security=True ";
cmd = new SqlCommand(commandText, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
public DataTable select(string selectText)
{
con = new SqlConnection("Data Source=local;Initial Catalog=FactoryDb;Integrated Security=True ");
cmd = new SqlCommand(selectText, con);
da = new SqlDataAdapter(cmd);
dt = new DataTable();
con.Open();
da.Fill(dt);
con.Close();
return dt;
}

public int select_slaler(string select_scalerText)
{
int return_final;
object return_value;
con = new SqlConnection("Data Source=YAZAHRA-PC;Initial Catalog=FactoryDb;Integrated Security=True");
cmd = new SqlCommand(select_scalerText, con);
con.Open();
return_value = cmd.ExecuteScalar();
con.Close();
return_final = (int)return_value;
return return_final;
}


}
}

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 18:06 عصر
اینم کد دوم .

using System;
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;
using System.Data.SqlClient;

namespace factorytest
{
public partial class frmlogin : Form
{
public frmlogin()
{
InitializeComponent();
}

private void frmlogin_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'factoryDbDataSet1.tblLogin' table. You can move, or remove it, as needed.
// this.tblLoginTableAdapter.Fill(this.factoryDbDataS et1.tblLogin);

}

private void reflectionImage1_Click(object sender, EventArgs e)
{

}

private void btnCancel_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void btnLogin_Click(object sender, EventArgs e)
{
if (txtUser.Text == "")
{
MessageBox.Show("لطفاً نام کاربری را وارد کنید");
txtUser.BackColor = Color.Yellow;
txtUser.Focus();
}
else if (txtPass.Text == "")
{
MessageBox.Show("لطفاً کلمه عبور را وارد کنید");
txtPass.BackColor = Color.Yellow;
txtPass.Focus();
}
else if (cbPermition.SelectedIndex == -1)
{
MessageBox.Show("لطفاً سطح دسترسی را وارد کنید");
}
else if (cbPermition.SelectedIndex == 0)
{
// clsOption.permition = 1;
string sql = "select * from tblLogin where type='"+1+ "' AND username = '" +txtUser.Text+ "'AND password '" +txtPass.Text+ "'";
clsDatabase database = new clsDatabase();
DataTable dt = new DataTable();
dt = database.select(sql);
if (dt.Rows.Count > 0)
{
this.Hide();
frmMain main = new frmMain();
main.ShowDialog();
}
else
{
MessageBox.Show("نام کاربری یا کلمه عبور اشتباه است دوباره تلاش کنید");
txtUser.Text = "";
txtPass.Text = "";
}


}

else
{
// clsOption.permition = 2;
string sql = "select * from tblLogin where type='"+2+"' AND username = '" +txtUser.Text+ "'AND password '" +txtPass.Text+"'";
clsDatabase database = new clsDatabase();
DataTable dt = new DataTable();
dt = database.select(sql);
if (dt.Rows.Count > 0)
{
this.Hide();
frmMain main = new frmMain();
main.ShowDialog();
}
MessageBox.Show("نام کاربری یا کلمه عبور اشتباه است دوباره تلاش کنید");
txtUser.Text = "";
txtPass.Text = "";
}

}

private void fillByToolStripButton_Click(object sender, EventArgs e)
{
try
{
this.tblCustomerTableAdapter.FillBy(this.factoryDb DataSet.tblCustomer);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}

}
}
}

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 18:10 عصر
البته در کد اول نام دیتاسورس YAZAHRA-PC است.

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 18:23 عصر
قابل توجه دوست عزیز salibsatan استاد عزیز این کدها را درج کردم راهنمایی بفرمایید.

ebrahim.rayatparvar
یک شنبه 27 اردیبهشت 1394, 18:32 عصر
مهندس جان برای شما پیغام خصوصی دادم که اگه کدهای شما تو تگ بود خوانایی بهتری داشت و چرا برای نوشتن کدهای sql از string.format مثل زیر استفاده نمی کنید



string sql = "select * from tblLogin where type='"+1+ "' AND username = '" +txtUser.Text+ "'AND password '" +txtPass.Text+ "'";

string sql = string.format("select * from tblLogin where type='{0}' AND username = '{1}' AND password = '{2}'" , 1 , txtUser.Text , txtPass.Text );


و مساله بعدی تو کد اولی که شما نوشتید چرا برای password علامت انتصاب = را نذاشتین؟؟

ebrahim.rayatparvar
یک شنبه 27 اردیبهشت 1394, 18:48 عصر
مهندس جان یک کلاس تعریف کن برای connection به دیتابیس که داخل این کلاس یه متد به عنوان Connect که برای connection string و open کردن باشه و یه متد هم برای disConnect که close کرده بانک باشه که هر بار لازم نباشه connection string رو تو برنامه دوباره بنویسی و برای ویرایش همه رو دوباره دست بزنی کافیه یک بار کلاسش کنی تو کل برنامه ازش استفاده کنی.
این نکته هم باعث میشه کانکشن های تو همیشه یکی باشه و امکان اشتباه هم میاد پایین.

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 20:49 عصر
:لبخند: آقا ابراهیم سلام.
برادر مشکل من در عکسها معلومه کارهایی که شما گفته بودید را انجام دادم فقط نمیدونم چرا در باز کردن ارتباط مشکل داره اگه میشه عکسو مشاهده کنید و بفرمائید مشکل چیه ؟

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 21:01 عصر
یه سوال دیگه ؟
آیا برای نصب اس کیو ال سرور شیوه خاصی وجود داره آخه بعضیا میگن اول باید اس کیو ال نصب بشه و بعد ویژوال استودیو درسته یا نه ؟ و دیگه آیا ممکنه مشکل در اصل ارتباط خود نرم افزار اس کیو ال با ویژوال استودیو باشه یا نه؟

yazahrayaali
یک شنبه 27 اردیبهشت 1394, 22:10 عصر
:لبخند: دوستان مشکل حل شد.
در بخش کانکشن استرینگ باید یک پرانتز اضافه میشد.