出了两个问题,帮我看看吧
第一个:
public partial class Image_TryNews2 : System.Web.UI.Page
{
public DataSet ds;
public DataRow dr;
public String newsid;
private void Page_Load(object sender, EventArgs e)
{
SqlConnection MyConnection;
String ConnStr,strCon;
newsid = Request.Params[ "ID "];
MyConnection =new SqlConnection( "Initial Catalog=sol;Data Source=hnu-a4cafe281e0\\sqlexpress;Integrated Security=SSPI; ");
MyConnection.Open();
String strCom= "SELECT Title ,FromTo ,Content,Counter ,Time FROM TableNews1 where ID= "+newsid;
ds= new DataSet();
SqlDataAdapter myCommand=new SqlDataAdapter(strCom,MyConnection);
myCommand.Fill(ds, "TableNews1 ");
dr = ds.Tables[ "TableNews1 "].Rows[0];
strCon = "SELECT Counter FROM TableNews1 WHERE ID = ' "+newsid+ " ' ";
SqlCommand myCommand2 = new SqlCommand(strCon, MyConnection);
SqlDataReader reader = myCommand2.ExecuteReader();
reader.Read();
int i = reader.GetInt32(0);
i++;
reader.Close();
strCon = "UPDATE TableNews1 SET Counter = "+i.ToString()+ " WHERE ( ID= "+newsid+ ") ";
myCommand2.CommandText = strCon;
myCommand2.ExecuteNonQuery();
MyConnection.Close();
}
}
报错:
'= ' 附近有语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: '= ' 附近有语法错误。
源错误:
行 29: ds= new DataSet();
行 30: SqlDataAdapter myCommand=new SqlDataAdapter(strCom,MyConnection);
行 31: myCommand.Fill(ds, "TableNews1 ");
行 32: dr = ds.Tables[ "TableNews1 "].Rows[0];
行 33: strCon = "SELECT Counter FROM TableNews1 WHERE ID = ' "+newsid+ " ' ";
第二个
ConnStr = " SET IDENTITY_INSERT sol.dbo.TableNews1 on; insert into TableNews1(Title,Content,Time,Image,Counter) VALUES( ' " + biaoti.Text + " ', ' " + zhaizi.Text + " ', " + neirong2 + " ', ' " + now.ToString() + " ', ' " + img.Text + " ', 0) ;SET IDENTITY_INSERT sol.dbo.TableNews1 off ";
MyCommand=new SqlCommand(ConnStr,MyConnection);
MyCommand.ExecuteNonQuery();
Label1.Text= "增加成功! ";
}
biaoti.Text= " ";
zhaizi.Text= " ";
neirong.Text= " ";
img.Text= " ";
}
我一提交文章就报错:
在此上下文中不允许使用名称 "ds "。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
字符串 ', ', 0) ;SET IDENTITY_INSERT sol.dbo.TableNews1 off ' 后的引号不完整。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 在此上下文中不允许使用名称 "ds "。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
字符串 ', ', 0) ;SET IDENTITY_INSERT sol.dbo.TableNews1 off ' 后的引号不完整。
源错误:
行 61: ConnStr = " SET IDENTITY_INSERT sol.dbo.TableNews1 on; insert into TableNews1(Title,Content,Time,Image,Counter) VALUES( ' " + biaoti.Text + " ', ' " + zhaizi.Text + " ', " + neirong2 + " ', ' " + now.ToString() + " ', ' " + img.Text + " ', 0) ;SET IDENTITY_INSERT sol.dbo.TableNews1 off ";
行 62: MyCommand=new SqlCommand(ConnStr,MyConnection);
行 63: MyCommand.ExecuteNonQuery();
行 64: Label1.Text= "增加成功! ";
行 65: }
谢谢!
[解决办法]
都是SQL EXCEPTION,用SQL Profiler跟踪下.
[解决办法]
调试,把你的ConnStr 的值放到查询分析其上去执行(断行较好,查询分析其可以告诉你错误在哪一行)。
另外,例如
+ biaoti.Text +
这种写法,如果不是程序有紧密相关的地方可以保证biaoti.Text中没有单引号,那么这种写法往往是不够认真的或者缺乏经验的。程序甚至可以写得烂,但是要认真,不认真的程序由于含义不全面则本人调试起来很难全面。这个应该写为
+ biaoti.Text.Replace( " ' ", " ' ' ") +