窗体中有两个listview控件 当点击listview2中的某条记录时,listview1中就显示出相应的记录,可以,系统总提示我commandText属性尚未初始化,请问这是什么原因啊?! 代码如下: 请问代码有问题吗?! 谢谢!
private void Xflist()
{
for (int i = 0; i < this.listView2.Items.Count; i++)
{
if (this.listView2.Items[i].Selected == true)
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems[0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1; }
break;
}
try
{
this.sqlCommand1.CommandText = null;
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
} catch (System.Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{ this.sqlConnection1.Close();
}
private void Xflist()
{
for (int i = 0; i < this.listView2.Items.Count; i++)
{
if (this.listView2.Items[i].Selected == true)
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems[0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1; }
break;
}
try
{
this.sqlCommand1.CommandText = null;
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
} catch (System.Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{ this.sqlConnection1.Close();
}
没有private SqlCommand sqlCommand1 = new SqlCommand();
{
this.sqlCommand1.CommandText = null; 这是null了
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
}
这句去掉
上面有这样一段代码吗?
{
if (this.listView2.Items[i].Selected == true)
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems[0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1; break; }
}
{
this.sqlCommand1.CommandText = null; 这是null了
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
} this.sqlCommand1.CommandText = null;之后就没有给this.sqlCommand1.CommandText赋值
另外,this.sqlCommand1.CommandText = null;肯定要去掉。
{
if (this.listView2.Items[i].Selected == true)
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems[0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1;
//break;似乎应该放在这里
}
break; //这里循环跳出?似乎应该是放到if的括号里。
}
try
{
this.sqlCommand1.CommandText = null; //这里又==null这是什么意思?
namespace CanYinManager
{
public partial class FormMain : Form
{
private string selectStr1; private SqlConnection sqlConnection1 = null;
private SqlCommand sqlCommand1 = null;
public FormMain()
{
//在构造函数中为变量赋值 InitializeComponent();//系统初始函数
this.sqlConnection1 = new SqlConnection(CanYinManager.DataLevel.Connection.ConnString);
this.sqlCommand1 = new SqlCommand();
this.sqlCommand1.Connection = this.sqlConnection1;
private void FormMain_Load(object sender, EventArgs e)
{
this.UpdateListView();//更新listview显示内容
this.Xflist();
}
private void Xflist()
{
for (int i = 0; i < this.listView2.Items.Count;i++)
{
if (this.listView2.Items[i].Selected == true)
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems[0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1;
break;
}
}
try
{
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
} catch (System.Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{ this.sqlConnection1.Close();
}
}
}
}
namespace CanYinManager
{
public partial class FormMain : Form
{
private string selectStr1; private SqlConnection sqlConnection1 = null;
private SqlCommand sqlCommand1 = null;
private SqlDataReader SqlDataReader1 = null;
public FormMain()
{
//在构造函数中为变量赋值 InitializeComponent();//系统初始函数
this.sqlConnection1 = new SqlConnection(CanYinManager.DataLevel.Connection.ConnString);
this.sqlCommand1 = new SqlCommand();
this.sqlCommand1.Connection = this.sqlConnection1;
private void FormMain_Load(object sender, EventArgs e)
{
this.UpdateListView();//更新listview显示内容
this.Xflist();
}
private void Xflist()
{
for (int i = 0; i < this.listView2.Items.Count;i++)
{
if (this.listView2.Items[i].Selected == true)
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems[0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1;
break;
}
}
try
{
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
} catch (System.Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{ this.sqlConnection1.Close();
}
}
}
}
还有就是上边阁楼提到的 你在使用commandText之前又将其置空了,这样这个dommandText当然始终是null 你的程序就肯定报错了
{
public partial class FormMain : Form
{
private string selectStr1; private SqlConnection sqlConnection1 = null;
private SqlCommand sqlCommand1 = null;
private SqlDataReader SqlDataReader1 = null;
public FormMain()
{
//在构造函数中为变量赋值 InitializeComponent();//系统初始函数
this.sqlConnection1 = new SqlConnection(CanYinManager.DataLevel.Connection.ConnString);
this.sqlCommand1 = new SqlCommand();
this.sqlCommand1.Connection = this.sqlConnection1;
private void FormMain_Load(object sender, EventArgs e)
{
this.UpdateListView();//更新listview显示内容
this.Xflist(); //这个方法这里调用肯定会出错原因看代码红色部分
}
private void Xflist()
{
for (int i = 0; i < this.listView2.Items.Count;i++)
{
if (this.listView2.Items[i].Selected == true) //你肯定这条语句始终是false
{
this.selectStr1 = "SELECT * FROM Xfxm WHERE Ctid='" + this.listView2.Items[i].SubItems [0].Text.ToString() + "'";
this.sqlCommand1.CommandText = this.selectStr1;
break;
}
}
try
{
if (this.sqlConnection1.State == ConnectionState.Closed) this.sqlConnection1.Open(); //如果 connection1关闭就打开
this.SqlDataReader1=this.sqlCommand1.ExecuteReader(); //用sqldatareadrer来读取数据库中的内容
while (this.SqlDataReader1.Read())
{
ListViewItem li = new ListViewItem();//生成新的listview的item
li.SubItems.Clear();//消除所有列的内容
li.SubItems[0].Text = SqlDataReader1["Ctid"].ToString();//给新记录第1列添加餐台号内容
li.SubItems.Add(SqlDataReader1["Xfitem"].ToString());
li.SubItems.Add(SqlDataReader1["Dj"].ToString());//给新记录第2列添加单价
li.SubItems.Add(SqlDataReader1["Dzbl"].ToString());//给新记录第3添加单价
li.SubItems.Add(SqlDataReader1["Sl"].ToString());//给新记录第4列添加数量
li.SubItems.Add(SqlDataReader1["Money"].ToString());
li.SubItems.Add(SqlDataReader1["FUs"].ToString());
li.SubItems.Add(SqlDataReader1["Bz"].ToString());
this.listView1.Items.Add(li);//把新记录添加到listview1中去 }
} catch (System.Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{ this.sqlConnection1.Close();
}
}
}
}