PDA

View Full Version : مشکل در کدینگ #C


shat
26 May 2007, 12:21 PM
سلام
اگه میشه کد برنامه ی login کردن در C# رو برام بذارید. من خودم این کد رو نوشتم به نظرمم درسته ولی ارور میده ببینید می فهمید مشکلش کجاس؟

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Login
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection cn = new SqlConnection();
private void Form1_Load(object sender, EventArgs e)
{
cn.ConnectionString = "Server=.;DataBase=Login;UID=sa";
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
SqlDataAdapter da = new SqlDataAdapter(cmd);

}
private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlDataReader dr;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SELECT Password,UserName FROM checku" + txtpass.Text;

dr = cmd.ExecuteReader();
while (dr.Read())
{
string Password = dr["Password"].ToString();
if (txtpass.Text == Password)
{
Form2 f2 = new Form2();
f2.Show();
}
else
{
MessageBox.Show("Invalid UserName or Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
ارورشم اینه:

ExecuteReader requires an open and available Connection. The connection's current state is closed.

reza1357
26 May 2007, 02:24 PM
دوست عزیز وقتی متغییر cn رو تعریف کردی بعدش باید با دستور :

cn.open()

اون رو باز کنی تا عمل اتصال به سرور برقرار شود بعدش هم در نهایت اون رو با دستور :
cn.close()
ببنیدید.

موفق باشید.

shat
26 May 2007, 04:24 PM
سلام.

من توی یه کتابی خونده بودم که اگه open و close رو نذاریم خود برنامه کار باز و بسته کردنش رو به عهده می گیره ! به هر حال وقتی هم که open و close رو گذاشتم و برنامه رو ران کردم و username و password رو وارد کردم قسمت dr = cmd.ExecuteReader(); رو مشخص کردو این ارور رو داد

Could not find stored procedure 'SELECT Password,UserName FROM checku1234' .

کرگدن
26 May 2007, 08:43 PM
سلام.

من توی یه کتابی خونده بودم که اگه open و close رو نذاریم خود برنامه کار باز و بسته کردنش رو به عهده می گیره ! به هر حال وقتی هم که open و close رو گذاشتم و برنامه رو ران کردم و username و password رو وارد کردم قسمت dr = cmd.ExecuteReader(); رو مشخص کردو این ارور رو داد

Could not find stored procedure 'SELECT Password,UserName FROM checku1234' .

من سی شارپ کار نمی کنم ( آشنایی دارم)

فکر می کنم شما نوع کامندتون رو StoredProcedure گذاشتید ولی یک کوئری که StoredProcedure رو صدا نکرده براش فرستادید

به جز StoredProcedure چه چیز های دیگه ای داره؟
cmd.CommandType = CommandType.StoredProcedure;

reza1357
27 May 2007, 07:57 AM
سلام.

من توی یه کتابی خونده بودم که اگه open و close رو نذاریم خود برنامه کار باز و بسته کردنش رو به عهده می گیره ! به هر حال وقتی هم که open و close رو گذاشتم و برنامه رو ران کردم و username و password رو وارد کردم قسمت dr = cmd.ExecuteReader(); رو مشخص کردو این ارور رو داد

Could not find stored procedure 'SELECT Password,UserName FROM checku1234' .
بله در بعضی از دستورات لزومی بر باز یا بسته کردن Connection نیست ولی روندی که شما انتخاب کردین میبایست این دو ارگمان رو باز و بسته کنید و پیغامی خطایی که نشون داده مال همینه.

alggar
30 April 2008, 01:16 PM
سلام
اگه میشه کد برنامه ی login کردن در C# رو برام بذارید. من خودم این کد رو نوشتم به نظرمم درسته ولی ارور میده ببینید می فهمید مشکلش کجاس؟

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Login
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection cn = new SqlConnection();
private void Form1_Load(object sender, EventArgs e)
{
cn.ConnectionString = "Server=.;DataBase=Login;UID=sa";
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
SqlDataAdapter da = new SqlDataAdapter(cmd);

}
private void button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlDataReader dr;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SELECT Password,UserName FROM checku" + txtpass.Text;

dr = cmd.ExecuteReader();
while (dr.Read())
{
string Password = dr["Password"].ToString();
if (txtpass.Text == Password)
{
Form2 f2 = new Form2();
f2.Show();
}
else
{
MessageBox.Show("Invalid UserName or Password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
ارورشم اینه:

ExecuteReader requires an open and available Connection. The connection's current state is closed.

شما وقتی که از SQlCommand استفاده میکنید نیازی به DataAdapter ندارید.
اینجوری عمل کنید:
sqlcommand cm = new sqlcommand("select password from login where username='"+txtuser.text+"'",cn)
بعدش هم برای گرفتن پسورد از database از دستور cm.executescalar استفاده کنید.