private void select()
{
try {
string sql = String.Format("select ima_itemid,ima_itemname,IMA_PurLeadTime,IMA_MfgLeadTime,IMA_ItemStatusCode from item where ima_itemid like '{0}%'", textBox1.Text);
SqlCommand command = new SqlCommand(sql,DBHelper.connection);
DBHelper.connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
listView1.Clear();
string itemID;
string itemName;
string PurLeadTime;
string MfgLeadTime;
string itemStatus;
string ItemStatusCode;
string Active = "Active";
while (dataReader.Read())
{
itemID = (string)dataReader["ima_itemid"];
itemName = (string)dataReader["ima_itemname"];
PurLeadTime = (string)dataReader["IMA_PurLeadTime"];
MfgLeadTime = (string)dataReader["IMA_MfgLeadTime"];
ItemStatusCode = (string)dataReader["IMA_ItemStatusCode"];
itemStatus = (ItemStatusCode.Equals(Active)) ? "可用" : "非可用"; ListViewItem list = new ListViewItem(itemID);
listView1.Tag = (string)dataReader["ima_itemid"];
listView1.Items.Add(list);
list.SubItems.AddRange(new string[] { itemName,PurLeadTime,MfgLeadTime,itemStatus });
}
dataReader.Close();
}
catch (Exception ex) {
MessageBox.Show("连接失败","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
finally { DBHelper.connection.Close(); }
}不知道为什么每次运行到PurLeadTime = (string)dataReader["IMA_PurLeadTime"];就跳到catch了。我单独运行sql是没问题的。IMA_PurLeadTime在数据库是int型的。我在这里把它转换为string不行吗?PurLeadTime 与MfgLeadTime 有一个是空值。应该不会是应为读到空值就跳到catch吧。
{
try {
string sql = String.Format("select ima_itemid,ima_itemname,IMA_PurLeadTime,IMA_MfgLeadTime,IMA_ItemStatusCode from item where ima_itemid like '{0}%'", textBox1.Text);
SqlCommand command = new SqlCommand(sql,DBHelper.connection);
DBHelper.connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
listView1.Clear();
string itemID;
string itemName;
string PurLeadTime;
string MfgLeadTime;
string itemStatus;
string ItemStatusCode;
string Active = "Active";
while (dataReader.Read())
{
itemID = (string)dataReader["ima_itemid"];
itemName = (string)dataReader["ima_itemname"];
PurLeadTime = (string)dataReader["IMA_PurLeadTime"];
MfgLeadTime = (string)dataReader["IMA_MfgLeadTime"];
ItemStatusCode = (string)dataReader["IMA_ItemStatusCode"];
itemStatus = (ItemStatusCode.Equals(Active)) ? "可用" : "非可用"; ListViewItem list = new ListViewItem(itemID);
listView1.Tag = (string)dataReader["ima_itemid"];
listView1.Items.Add(list);
list.SubItems.AddRange(new string[] { itemName,PurLeadTime,MfgLeadTime,itemStatus });
}
dataReader.Close();
}
catch (Exception ex) {
MessageBox.Show("连接失败","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
finally { DBHelper.connection.Close(); }
}不知道为什么每次运行到PurLeadTime = (string)dataReader["IMA_PurLeadTime"];就跳到catch了。我单独运行sql是没问题的。IMA_PurLeadTime在数据库是int型的。我在这里把它转换为string不行吗?PurLeadTime 与MfgLeadTime 有一个是空值。应该不会是应为读到空值就跳到catch吧。
PurLeadTime = dataReader["IMA_PurLeadTime"] == null ? "" : (string)dataReader["IMA_PurLeadTime"];
MfgLeadTime = dataReader["IMA_MfgLeadTime"] == null ? "" : (string)dataReader["IMA_MfgLeadTime"];
PurLeadTime = dataReader["IMA_PurLeadTime"].ToString();
dataReader["IMA_PurLeadTime"] == DBNul.Value? "" : dataReader["IMA_PurLeadTime"].ToString();
ListViewItem list = new ListViewItem(itemID);
list.Tag = (string)dataReader["ima_itemid"];
listView1.Items.Add(list);
list.SubItems.AddRange(new string[] { itemName,PurLeadTime,MfgLeadTime,itemStatus });
这段代码没结果出来。不知道为什么?listView1是ListView的name。sql没问题。