在调用“填充”之前,尚未初始化SelectCommand属性。在WinForm中

时间:2013-04-04 06:16:39

标签: c#

我正在使用C#构建一个Windows应用程序。在我的登录表单中,我在调用填充方法之前选择Command属性尚未初始化

以下是代码:

public partial class frmlogin : Form
{
    SqlConnection con = new SqlConnection("Data Source=TH07L019;Initial Catalog=loginerror;Integrated Security=True");
    DataTable dt = new DataTable();
    SqlCommand cmd = new SqlCommand();
    SqlDataAdapter adp = new SqlDataAdapter();

    public frmlogin()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cmd.Connection = con;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        con.Open();
        cmd.CommandText = "select * from login where username='" + txt1.Text + "' and password='" + txt2.Text +"'";
        adp.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            frmmain main = new frmmain();
            main.Show();
        }
        else
        {
            MessageBox.Show("Please enter correct name and passowrd", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

4 个答案:

答案 0 :(得分:14)

在填充表之前,必须指定SqlDataAdapter的select命令。你没有这样做。您的SqlCommand对象未以任何方式连接到您的SqlDataAdapter。

 adp.SelectCommand=cmd;

答案 1 :(得分:3)

另一种实现方法是简单地将SQLCommand作为参数传递到数据适配器中,如下所示 -

SqlCommand cmd = new SqlCommand();
SqlDataAdapter adp = new SqlDataAdapter(cmd);

答案 2 :(得分:0)

SQL数据适配器与数据表进行交互。它用于从SQL Server数据库填充数据表。在填充数据表之前,数据适配器应该知道它将要执行的命令。因此,我们必须填充SQL Command Type的对象,即

SqlDataAdapter da = new SqlDataAdapter(cmd);

此处cmd是SQL命令的对象。

现在,数据适配器将在填充数据表之前知道要执行哪个命令。

答案 3 :(得分:0)

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 Employees_Details_Management_System
{
    public partial class ShowEmpDtlsFrm : Form
    {

        SqlConnection con = new SqlConnection(@"Data Source = (local); Initial Catalog = sp_emp; Integrated Security = True");

        public SqlCommand cmd { get; private set; }

        // private SqlCommand cmd;

        public ShowEmpDtlsFrm()
        {
            InitializeComponent();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ShwEmpDtlsLbl.Text = "Employee Database Management";
            comboBox1.Text = "Click";
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        public void DataGridChk()//Check if DataGrid is empty or not
        {
           if (dataGridView1.RowCount == 1)
            {
                dataGridView1.Visible = false;
                MessageBox.Show("The Given " + comboBox1.Text+ " is Invalid  \nEnter Valid " + comboBox1.Text);
            }
        }

        public void DbDataFetch(String Qry)//For Fetching data from database
        {
            SqlCommand cmd = new SqlCommand(Qry, con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, "emp");
            dataGridView1.DataSource = ds.Tables["emp"].DefaultView;
            DataGridChk();
        }

        public void SrchBtn_Click(object sender, EventArgs e)
        {
            try
            {
                if (comboBox1.Text == "Employee ID" || comboBox1.Text == "Department ID" || comboBox1.Text == "Manager ID")
                {
                    if (textBox1.Text != "")
                    {
                        con.Open();
                        dataGridView1.Visible = true;
                        if (comboBox1.Text == "Employee ID")
                        {
                            string Qry = "select * from emp where emp_id='" + textBox1.Text + "' ";
                            DbDataFetch(Qry);
                        }
                        else if (comboBox1.Text == "Department ID")
                        {
                            string Qry = "select * from emp where  dep_id='" + textBox1.Text + "'  ";
                            DbDataFetch(Qry);
                        }
                        else if (comboBox1.Text == "Manager ID")
                        {
                            string Qry = "select * from emp where manager_id='" + textBox1.Text + "' ";
                            DbDataFetch(Qry);
                        }
                        con.Close();
                    }
                    else
                    {
                        MessageBox.Show("Please Enter the ID...");
                    }
                }
                else
                {
                    MessageBox.Show("Choose Valid Option...");
                }
            }
            catch (System.Data.SqlClient.SqlException sqlException)
            {
                System.Windows.Forms.MessageBox.Show(sqlException.Message);
                con.Close();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            EmpDtlsFrm edf = new EmpDtlsFrm();
            edf.Show();
            this.Hide();
        }
    }
}