SQL语句无效
--------------------------------------------------------------------------------无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Exception: 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。
源错误:
行 128: catch (OleDbException ex)
行 129: {
行 130: throw new Exception(ex.Message);
行 131: }
行 132: finally
源文件: F:\work\MyHbgm\MyHbgm.DAL\DBHelper.cs 行: 130
数据库用的Access 代码生成没有错....
速求帮助啊!各位大虾们!!!! --------------------编程问答-------------------- 你先把你的代码,sql语句贴出来看看 --------------------编程问答-------------------- 貌似不会! --------------------编程问答-------------------- 代码贴出来 --------------------编程问答-------------------- selete * from newsInfo
select * from newsInfo where newsType=@newsType
update newsInfo set newTitle=@newsTitle,newsContent=@newsContent,newsType=@newsType,newsAuthor=@newsAuthor,creatTime=@creatTime where newsId=@newsId
这是我写的SQL语句 数据库用的Access --------------------编程问答-------------------- selete * from newsInfo
这句有问题,是select 不是 selete --------------------编程问答-------------------- 你的意思是把这些一起传进去执行么?
单独传这个看
返回DataSet
--------------------编程问答-------------------- 改过了,还是不行 --------------------编程问答-------------------- 调试看下DBHelper.cs 行: 130执行的哪条语句报的错,SQL语句里拼接时少了空格? --------------------编程问答-------------------- 1. access的参数用? 代替,不认名字,只认顺序
2. 不支持一条sql语句多步操作 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 这是 方法:public static IList<News> GetAllNews()
{
string sqlStr = "selece * from newsInfo";
IList<News> nlist = new List<News>();
using(OleDbDataReader dr=DBHelper.GetDataReader(sqlStr,CommandType.Text,null))
{
while (dr.Read())
{
News news = new News();
news.NewsId = (int)dr["newsId"];
news.NewsTitle = dr["newTitle"].ToString();
news.NewsContent = dr["newsContent"].ToString();
news.NewsType.NewsTypeName = dr["newsType"].ToString();
news.NewsAuthor = dr["newsAuthor"].ToString();
news.CreatTime = dr["creatTime"].ToString();
nlist.Add(news);
}
}
return nlist;
}
这是DBHelper
public static DataTable GetDataTable(string commandText, CommandType cmdType,OleDbParameter[] parameters)
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = Conn;
cmd.CommandText = commandText;
cmd.CommandType = cmdType;
try
{
if (parameters != null)
{
cmd.Parameters.AddRange(parameters);
}
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch (OleDbException ex)
{
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
} --------------------编程问答-------------------- selete * from newsInfo;
select * from newsInfo where newsType=@newsType;
update newsInfo set newTitle=@newsTitle,newsContent=@newsContent,newsType=@newsType,newsAuthor=@newsAuthor,creatTime=@creatTime where newsId=@newsId --------------------编程问答-------------------- list循环执行多条SQL语句
--------------------编程问答-------------------- selece * from newsInfo改成了select ,
又出现了rede无效阅读器关闭时尝试调用 Read 无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 阅读器关闭时尝试调用 Read 无效。
源错误:
行 103: using(OleDbDataReader dr=DBHelper.GetDataReader(sqlStr,CommandType.Text,null))
行 104: {
行 105: while (dr.Read())
行 106: {
行 107: News news = new News();
--------------------编程问答-------------------- string sqlStr = "selece * from newsInfo";
改成string sqlStr = "select * from newsInfo; ";
并且在每个SQL语句后面加入“;”
楼主这样做看看结果怎么样 如果不行得话 就将SQL一句一句去执行调试看看
--------------------编程问答-------------------- 自己看错误啊 连接未打开 不能使用reader --------------------编程问答-------------------- 连接打开了啊,上面有代码帮忙看一下,谢谢 --------------------编程问答--------------------
using的问题。而且finally会在自动关闭conn,而不管reader是否传递。把代码改成下面的就OK了
#--------------------编程问答--------------------
public static DbDataReader ExecuteReader(string sql)
{
//using (DbConnection conn = GetConncetion())
//{
DbConnection conn = GetConncetion();
DbCommand cmd = GetCommand(conn);
DbDataReader myReader;
try
{
conn.Open();
SetCommand(cmd, sql, CommandType.Text, COMMANDTIME, null);
myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
catch (DbException ex)
{
throw new Exception(ex.Message);
}
// finally
// {
// cmd.Dispose();
// conn.Close();
// }
//}
}
#public static DbDataReader ExecuteReader(string sql)--------------------编程问答-------------------- connnection不用关掉吗? --------------------编程问答-------------------- DBHelper里我没有用using啊 --------------------编程问答-------------------- access 数据库好像不支持 多条语句同步操作吧,
{
//using (DbConnection conn = GetConncetion())
//{
DbConnection conn = GetConncetion();
DbCommand cmd = GetCommand(conn);
DbDataReader myReader;
try
{
conn.Open();
SetCommand(cmd, sql, CommandType.Text, COMMANDTIME, null);
myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
catch (DbException ex)
{
throw new Exception(ex.Message);
}
// finally
// {
// cmd.Dispose();
// conn.Close();
// }
//}
}
只能循环一条一条语句的执行。 --------------------编程问答--------------------
en --------------------编程问答--------------------
--------------------编程问答--------------------
--------------------编程问答-------------------- --------------------编程问答-------------------- 这种问题。是你粗心造成的。
自己好好检查下吧。
我以前也常常这样。慢慢调试总会发现什么。问出来的问题。不会涨经验
补充:.NET技术 , ASP.NET