我试图弄清楚如何检查我SqlDataReader是否为空或没有行(意味着保留不存在),然后显示一个消息框.出于某种原因,当我调试一次它遇到While dr.Read())代码时,如果它没有返回结果,它就会退出.
我已经尝试将此代码放在几个不同的位置,但如果没有返回任何记录,似乎都没有触发消息框
if (dr.GetValue(0) == DBNull.Value || !dr.HasRows)
{
MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
(read records)
}
Run Code Online (Sandbox Code Playgroud)
我的代码......
try
{
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "usp_StoredProcedureName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@regnum", regnumber);
using (SqlDataReader dr = cmd.ExecuteReader())
{
//Loop through all the rows, retrieving the columns you need.
while (dr.Read())
{
lblConf.Text = dr.GetValue(0).ToString();
lblName.Text = dr.GetValue(1).ToString() + "," + …Run Code Online (Sandbox Code Playgroud) 这些是来自ac#book的例子,我正在阅读这个例子实际上正在做的一点点麻烦,想要一个解释来帮助我进一步了解这里发生的事情.
//creates and initialzes firstArray
int[] firstArray = { 1, 2, 3 };
//Copy the reference in variable firstArray and assign it to firstarraycopy
int[] firstArrayCopy = firstArray;
Console.WriteLine("Test passing firstArray reference by value");
Console.Write("\nContents of firstArray " +
"Before calling FirstDouble:\n\t");
//display contents of firstArray with forloop using counter
for (int i = 0; i < firstArray.Length; i++)
Console.Write("{0} ", firstArray[i]);
//pass variable firstArray by value to FirstDouble
FirstDouble(firstArray);
Console.Write("\n\nContents of firstArray after " +
"calling FirstDouble\n\t");
//display contents …Run Code Online (Sandbox Code Playgroud) 我收到在我的属性中检测到无法访问的代码.这适用于常规字符串字段,但不适用于DateTime数据类型.
private DateTime m_RenewalDate;
public DateTime M_RenewalDate
{
get { return m_RenewalDate != null ? m_RenewalDate : DateTime.MinValue; }
set { m_RenewalDate = value; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的sqldatareader
reader.GetDateTime(reader.GetOrdinal("M_RENEWALDATE"))
Run Code Online (Sandbox Code Playgroud) 我有一个简单的表单,其中有一个文本框将数据传递给SQL,我希望它在用户点击回车键时提交.
在Firefox中,这非常有效.用户输入数字命中输入返回结果.
但是在IE 8和IE 9中,这不起作用.
<form id="form1" runat="server" accept="cmdclick"
style="background-position: center; background-image: url('BG.gif'); background-repeat: no-repeat;">
<div style="text-align: center">
<br /><br /> <br /><br /><br /> <br /><br /><br />
<asp:TextBox ID="txttrack" runat="server" Height="20px"
Width="175px" Wrap="False"></asp:TextBox>
<asp:Button ID="cmdclick" runat="server"
CommandName="cmdclick" BackColor="White" BorderStyle="None" />
Run Code Online (Sandbox Code Playgroud)
我不确定会导致这种情况.我看到很多人使用JavaScript来解决问题,但我不知道如何编写JavaScript代码.
怎么做(最好没有JavaScript)?
您好我有一个搜索框,当我搜索记录时,记录显示很好但是一旦我点击gridview上的编辑页面进行回发并且所有记录显示备份,并选择第一条记录进行编辑.当我点击编辑所有记录不再显示时,如何禁用此帖子或进行此操作?
VB.CodeBehind
Protected Sub btnClear_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClear.Click
txtSearch.text = ""
sourcegridview.DataBind()
End Sub
Protected Sub btnSearch_Click(sender As Object, e As System.EventArgs) Handles btnSearch.Click
SqlDataSource1.SelectCommand = "select * from Stg_Employee_All_Info where Name like '%" & txtSearch.Text & "%'"
SqlDataSource1.DataBind()
End Sub
Run Code Online (Sandbox Code Playgroud)
Gridview代码
<asp:GridView ID="sourcegridview" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC"
BorderStyle="None" BorderWidth="1px" CellPadding="4"
DataSourceID="SqlDataSource1" Width="422px" AllowSorting="True"
DataKeyNames="Row">
<Columns>
<asp:BoundField DataField="Row" HeaderText="Row"
SortExpression="Row" ReadOnly="True" />
<asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True"
SortExpression="Name" />
<asp:BoundField DataField="Dept" HeaderText="Dept" ReadOnly="True"
SortExpression="Dept" …Run Code Online (Sandbox Code Playgroud) 我用来创建一个属性类,其中我将包括我的所有字段,并且必须编写所有get/set属性,然后有另一个Database类,我将进行所有数据库调用.
Properties Class
private int _intCard
public int IntCard
{
set { _intcard = value;}
}
Constructor here
Run Code Online (Sandbox Code Playgroud)
现在这不是正确的方法,因为我将处理超过120个属性,并且似乎非常耗费时间来编写每个属性.我需要为某些属性添加验证是我选择这种方式的原因,我可以在set方法中验证它.任何人都可以提出一种替代方法,我可以调查以完成相同的结果.
********************---------------*******************
Run Code Online (Sandbox Code Playgroud)
所以给出评论,我理解我的设计是有缺陷的,这是我想到的问题.我知道如何解决这个问题,但不知道这是否是正确的解决方法.我搜索了对象设计原则并阅读了它,但需要更多时间来掌握它教我的内容.现在我想知道这种方法是否正确
我跟踪申请人姓名,地址,电话,传真号码,手机,altphone,altaddress,配偶相同,然后是孩子,参考,公司信息.....等等
我不会撒谎我不理解抽象类,为了实现这个,如果这是我应该采取的方法,我将花更多的时间来学习,但现在希望这是合适的.
属性类如apply.cs,applicantspouse.cs,applicantcontactinfo.cs,appreferences.cs ......
这是否与我应该做的一致?
再次感谢