怎么连续执行SQL语句

snowcloud2002 2004-12-17 09:28:42
string ConnStr;
ConnStr = PortalSettings.ConnectionString+Server.MapPath(PortalSettings.DataPath);
string sql;
OleDbConnection conn = new OleDbConnection(ConnStr);
conn.Open();
sql = "select caption from CateList where caption ='" + OfficeName.Text + "'";
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbDataReader reader = cmd.ExecuteReader();
if(reader.Read())
{
conn.Dispose();
cmd.Dispose();
reader.Close();
Msg.Visible = true;
//Msg.Text = OfficeName.Text;
Msg.Text = "该科室已存在";
}
else
{
sql = "insert into CateList caption Values ('" + OfficeName.Text + "')";
//执行到这句出错了,怎么办啊
cmd.ExecuteNonQuery();
Msg.Visible = true;
Msg.Text = "添加科室成功";
conn.Dispose();
cmd.Dispose();
reader.Close();
}
...全文
490 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowcloud2002 2004-12-18
  • 打赏
  • 举报
回复
关闭reader后终于好了!!
OneDotRed 2004-12-18
  • 打赏
  • 举报
回复
循环
sql += "insert into CateList caption Values ('" + OfficeName.Text + "');";

跳出循环后执行一条

cmd.ExecuteNonQuery();

wlss 2004-12-18
  • 打赏
  • 举报
回复
连续执行sql语句,建议用存储过程
OneDotRed 2004-12-18
  • 打赏
  • 举报
回复
string sql = "select * from a; " + " select * from b; ";


SqlDataAdapter sda = new SqlDataAdapter( sql , cn );

DataSet ds = new DataSet();
sda.Fill( ds );
...

ds.Tables[ 0 ]
ds.Tables[ 1 ]
coley 2004-12-17
  • 打赏
  • 举报
回复
打开连接
建立cmd
cmd.ExecuteNonQuery
建立mcd
cmd.ExecuteNonQuery
................
关闭连接
gbbword 2004-12-17
  • 打赏
  • 举报
回复
1 你的else语句块中sql值的变化跟cmd没有任何关系。应加上cmd.CommandText = sql这一句
2.就是 welshem(天堂客)说的。我想你是想看看数据库中有没有这样的记录,没有的话就添加。你可以用那个返回第一列的方法。然后判断就好了。不要用OleDbDataReader。
lxcc 2004-12-17
  • 打赏
  • 举报
回复
ConnStr = PortalSettings.ConnectionString+Server.MapPath(PortalSettings.DataPath);
//看看你的连接字符串对不对?
hbzh1014 2004-12-17
  • 打赏
  • 举报
回复
cmd.ExecuteNonQuery();前加上
cmd = new OleDbCommand(sql,conn);
welshem 2004-12-17
  • 打赏
  • 举报
回复
还有一个问题,我起先没发现,你前面用了OleDbDataReader,OleDbDataReader对连接是独占的
你在
cmd.ExecuteNonQuery();
命令前加一句
reader.Close();
DinoSaur_1985 2004-12-17
  • 打赏
  • 举报
回复
你的连接已经关闭了吧!
conn.open()一下!~~
welshem 2004-12-17
  • 打赏
  • 举报
回复
不是连接的问题,你犯的是低级错误,insert命令没写对
insert into 表名(字段表) values(值表)
snowcloud2002 2004-12-17
  • 打赏
  • 举报
回复
ExecuteNonQuery 需要打开的并且可用的连接。该连接的当前状态是 Open, Fetching。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: ExecuteNonQuery 需要打开的并且可用的连接。该连接的当前状态是 Open, Fetching。

源错误:


行 57: //cmd.Connection.Open();
行 58: //就下面这句错误,怎么办啊
行 59: cmd.ExecuteNonQuery();
行 60: Msg.Visible = true;
行 61: Msg.Text = "添加科室成功";

welshem 2004-12-17
  • 打赏
  • 举报
回复
sql = "insert into CateList(caption) Values ('" + OfficeName.Text + "')";

上面的不小心用了全角的括号了
welshem 2004-12-17
  • 打赏
  • 举报
回复
sql = "insert into CateList caption Values ('" + OfficeName.Text + "')";
是错了,用

sql = "insert into CateList(caption)Values ('" + OfficeName.Text + "')";
试试

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧