真是不知道那有错误,却提示System.Data.OleDb.OleDbException: FROM 子句语法错误。
<%@ Page Language="C#" Debug="true" %>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<script language="c#" runat="server">
void Page_Load(Object sender,EventArgs e)
{
OleDbConnection conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\web\\db1.mdb");
OleDbCommand com1=new OleDbCommand("SELECT * FROM counter",conn);
conn.Open();
OleDbDataReader dr=com1.ExecuteReader();
dr.Read();
int i=-1;
i=(int)dr["cou"];
dr.Close();
if(Session["flag"]==null)
{
i++;
Session["flag"]="true";
}
message.Text="您是第"+i+"访客";
OleDbCommand com2=new OleDbCommand("UPDATE counter SET cou=i",conn);
com2.ExecuteNonQuery();
conn.Close();
}
</script>
<htlm>
<body>
<asp:Label id="message" runat="server"/>
</body>
</htlm>
<%@ Page Language="C#" Debug="true" %>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<script language="c#" runat="server">
void Page_Load(Object sender,EventArgs e)
{
OleDbConnection conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\web\\db1.mdb");
OleDbCommand com1=new OleDbCommand("SELECT * FROM counter",conn);
conn.Open();
OleDbDataReader dr=com1.ExecuteReader();
dr.Read();
int i=-1;
i=(int)dr["cou"];
dr.Close();
if(Session["flag"]==null)
{
i++;
Session["flag"]="true";
}
message.Text="您是第"+i+"访客";
OleDbCommand com2=new OleDbCommand("UPDATE counter SET cou=i",conn);
com2.ExecuteNonQuery();
conn.Close();
}
</script>
<htlm>
<body>
<asp:Label id="message" runat="server"/>
</body>
</htlm>
再试试看
int i=-1;
i=(int)dr["cou"];
dr.Close();
if(Session["flag"]==null)
{
i++;
Session["flag"]="true";
}请使用while(rs.read();)循环,因为你是循环取值。
又提示Line 13: i=(int)dr["cou"];句柄无效,原来这个没错的
还是Exception Details: System.Data.OleDb.OleDbException: 行句柄无效。
表中cou字段是设成长整形
OleDbCommand com1=new OleDbCommand("SELECT * FROM counter",conn);
conn.Open(); string i; i = objCmd.ExecuteScalar().ToString();if(Session["flag"]==null)
{
i++;
Session["flag"]="true";
}
message.Text="您是第"+i+"访客";
com1.CommaneText = "UPDATE counter SET cou="+ i;
com1.ExecuteNonQuery();
com1.Dispose();
conn.Close();
i = com1.ExecuteScalar().ToString();
OleDbCommand com2=new OleDbCommand("UPDATE counter SET cou=" & i,conn);
com2.ExecuteNonQuery();
conn.Close();
}
这行怎么改
<%@ Page Language="C#" Debug="true" %>
<%@Import NameSpace="System.Data"%>
<%@Import NameSpace="System.Data.OleDb"%>
<script language="c#" runat="server">
void Page_Load(Object sender,EventArgs e)
{
OleDbConnection conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\web\\db1.mdb");
OleDbCommand com1=new OleDbCommand("SELECT * FROM [counter]",conn);
conn.Open();
OleDbDataReader dr=com1.ExecuteReader();
dr.Read();
string str;
str=dr["cou"].ToString();
int i=int.Parse(str);
dr.Close();
if(Session["flag"]==null)
{
i++;
Session["flag"]="true";
}
message.Text="您是第"+i+"访客";
OleDbCommand com2=new OleDbCommand("UPDATE counter SET cou"+i,conn);
com2.ExecuteNonQuery();
conn.Close();
}
</script>
<htlm>
<body>
<asp:Label id="message" runat="server"/>
</body>
</htlm>
依然提示str=dr["cou"].ToString();句柄无效
肯定是在那隐藏着重大错误,请高手看看
1)
/* OleDbDataReader dr=com1.ExecuteReader();
dr.Read();
string str;
str=dr["cou"].ToString();
int i=int.Parse(str); */
------->int i= Convert.ToInt16(com1.ExecuteScalar());2)
message.Text="您是第"+i+"访客"; ---> message.Text = "您是第"+i.ToString()+"访客";
OleDbCommand com1=new OleDbCommand("SELECT * FROM counter",conn);
conn.Open(); int i; i = (int) com1.ExecuteScalar().ToString();if(Session["flag"]==null)
{
i = i++;
Session["flag"]="true";
}
message.Text="您是第"+ i.Tostring() +"访客";
com1.CommaneText = "UPDATE counter SET cou = "+ i;
com1.ExecuteNonQuery();
com1.Dispose();
conn.Close();
if cou is defined as char type, just do some type convertion work here on int i.
if (dr.HasRows) //看看你这个dr里有没有数据,我估计是没有
{
Response.Write("有");
}
else
{
Response.Write("没有");
} //dr.Read();
//string str;
//str=dr["cou"].ToString();
//int i=int.Parse(str);
//dr.Close();
按楼上两位的做了,真的没有读出数据
用Server.MapPath也没有读出数据,db1设为存档属性
这怎么办