我使用SqlDataReader
将值读取到数据库,然后将值存储在适当的文本框中。如果行中没有空值,代码工作正常,但如果有,则在遇到null后停止读取所有值,并在所有文本框中显示空白。
这是我正在使用的代码:
SqlConnection con = new SqlConnection(ConfigurationManager.
ConnectionStrings["CS"].ConnectionString.ToString());
con.Open();
cmd.CommandText = "SELECT dbo.asp2.CustomerName, dbo.asp2.Email,
dbo.asp2.CP, dbo.asp2.CPN, dbo.asp2.ProductName, dbo.asp2.Warranty,
dbo.asp2.ProductSerial, dbo.asp2.ProductNumber, dbo.asp2.Description,
dbo.asp2.IssueDate, dbo.asp2.Status, dbo.asp2.Remarks,
dbo.asp2.EngineerName from dbo.asp2 where ID='" + textBox1.Text + "'";
cmd.Connection = con;
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
textBox3.Text = rdr.GetString(0);
textBox4.Text = rdr.GetString(1);
textBox5.Text = rdr.GetString(2);
textBox6.Text = rdr.GetString(3);
textBox7.Text = rdr.GetString(4);
textBox8.Text = rdr.GetString(5);
textBox9.Text = rdr.GetString(6);
textBox10.Text = rdr.GetString(7);
textBox11.Text = rdr.GetString(8);
textBox2.Text = rdr.GetDateTime(9).ToString();
textBox12.Text = rdr.GetString(10);
textBox13.Text = rdr.GetString(11);
comboBox1.Text = rdr.GetString(12);
}
con.Close();
我似乎无法在这里找出问题所在。你能指出来吗?我需要它做的是,将文本框设置为空,其中有一个空值,如果表中有值,则将该值设置为文本框。
P.S我检索的所有值都存储为nvarchar
数据库,但IssueDate
中的smalldatetime
除外。
答案 0 :(得分:1)
我遇到了同样的问题(读者在遇到null后停止了),我做的是:
我取而代之:
textBox3.Text = rdr.GetString(0);
用这个:
textBox3.Text = rdr["ColumnName"].ToString();
答案 1 :(得分:0)
试试这个......
while(rdr.Read()){
if(rdr.IsDBNull(0)) {textBox3.Text = rdr.GetString(0); } else {textBox3.Text ="&#34 ;; }
----对于日期时间
if(rdr.IsDBNull(9)) {textBox2.Text = rdr.GetDateTime(9).ToString(); } else {textBox2.Text ="&#34 ;; }
}