小弟新手,遇到一个问题没弄明白:
请看代码:
网页内代码:
Entity.FunctionEntity fe = new Entity.FunctionEntity();
DataAccess.FunctionDataAccess fda = new DataAccess.FunctionDataAccess();
protected void Button1_Click(object sender, EventArgs e)
{
fe.FunctionName = this.tbPositionName.Text.ToString();
fe.FunctionExplain = this.tbPositionExplain.Text.ToString();
if (fda.PositionNameIsSelect(fe) == false)
{
if (fda.PositionNameAdd(fe) == true)
Response.Write("<script>window.alert('操作成功!')</script>");
else
Response.Write("<script>window.alert('操作失败!')</script>");
}
else
Response.Write("<script>window.alert('此职位已存在!')</script>");
}
封装类文件的PositionNameAdd方法:
//增加职位
public bool PositionNameAdd(Entity.FunctionEntity fe)
{
SqlParameter[] p=new SqlParameter[2];
p[0]=new SqlParameter("FunctionName",SqlDbType.Char,50);
p[0].Value=fe.FunctionName;
p[1]=new SqlParameter("FunctionExplain",SqlDbType.VarChar,200);
p[1].Value=fe.FunctionExplain;
if(dc.CompanyExe("FunctionNameInsert",p)==true)
return true;
else
return false;
}
数据成员类:
namespace Entity
{
public class FunctionEntity
{
int functionid;
string functionname;
string functionexplain; public FunctionEntity()
{
functionid = 0;
functionname = string.Empty;
functionexplain = string.Empty;
} public int FunctionID
{
get { return functionid; }
set { functionid = value; }
} public string FunctionName
{
get { return functionname; }
set { functionname = value; }
} public string FunctionExplain
{
get { return functionexplain; }
set { functionexplain = value; }
}
}}
数据库非查询操作方法:
//执行带参数的更新操作 public bool CompanyExe(string sql, SqlParameter[] p)
{
try
{
con.ConnectionString = sqlstring;
con.Open();
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = sql;
for (int i = 0; i < p.GetLength(0); i++)
{
com.Parameters.Add(p[i]);
}
int result = com.ExecuteNonQuery();
if (result > 0)
{
return true;
}
else
{
return false;
}
}
catch (SqlException)
{
return false;
}
finally
{
con.Close();
con.Dispose();
com.Dispose();
}
}
存储过程:
ALTER procedure [dbo].[FunctionNameInsert]
@FunctionName char(50),
@FunctionExplain varchar(200)
as
begin
insert into Functions (FunctionName,FunctionExplain)
values (@FunctionName,@FunctionExplain);
end现在问题是插入数据操作不成功,现在问题是插入数据操作不成功,经调试P中参数有两个,而com.Parameters[]有三个:P[0].value="职位",p[1].value="说明"com.Parameters[0].value="职位",
com.Parameters[1].value="职位",
com.Parameters[2].value="说明",错误是:数据库非查询操作方法:
//执行带参数的更新操作
public bool CompanyExe(string sql, SqlParameter[] p)出错,数据库中,我用EXEC 执行过存储过程没问题,类中参数传递也调试过没发现问题!
想知道插入数据不成功是不是上面说的问题!
再就是调试代码到下面直接抛出异常!
int result = com.ExecuteNonQuery();
if (result > 0)
{
return true;
}
else
{
return false;
}
}
catch (SqlException)
{
return false;
}
finally
{
con.Close();
con.Dispose();
com.Dispose();
}
sqlinsert
请看代码:
网页内代码:
Entity.FunctionEntity fe = new Entity.FunctionEntity();
DataAccess.FunctionDataAccess fda = new DataAccess.FunctionDataAccess();
protected void Button1_Click(object sender, EventArgs e)
{
fe.FunctionName = this.tbPositionName.Text.ToString();
fe.FunctionExplain = this.tbPositionExplain.Text.ToString();
if (fda.PositionNameIsSelect(fe) == false)
{
if (fda.PositionNameAdd(fe) == true)
Response.Write("<script>window.alert('操作成功!')</script>");
else
Response.Write("<script>window.alert('操作失败!')</script>");
}
else
Response.Write("<script>window.alert('此职位已存在!')</script>");
}
封装类文件的PositionNameAdd方法:
//增加职位
public bool PositionNameAdd(Entity.FunctionEntity fe)
{
SqlParameter[] p=new SqlParameter[2];
p[0]=new SqlParameter("FunctionName",SqlDbType.Char,50);
p[0].Value=fe.FunctionName;
p[1]=new SqlParameter("FunctionExplain",SqlDbType.VarChar,200);
p[1].Value=fe.FunctionExplain;
if(dc.CompanyExe("FunctionNameInsert",p)==true)
return true;
else
return false;
}
数据成员类:
namespace Entity
{
public class FunctionEntity
{
int functionid;
string functionname;
string functionexplain; public FunctionEntity()
{
functionid = 0;
functionname = string.Empty;
functionexplain = string.Empty;
} public int FunctionID
{
get { return functionid; }
set { functionid = value; }
} public string FunctionName
{
get { return functionname; }
set { functionname = value; }
} public string FunctionExplain
{
get { return functionexplain; }
set { functionexplain = value; }
}
}}
数据库非查询操作方法:
//执行带参数的更新操作 public bool CompanyExe(string sql, SqlParameter[] p)
{
try
{
con.ConnectionString = sqlstring;
con.Open();
com.Connection = con;
com.CommandType = CommandType.StoredProcedure;
com.CommandText = sql;
for (int i = 0; i < p.GetLength(0); i++)
{
com.Parameters.Add(p[i]);
}
int result = com.ExecuteNonQuery();
if (result > 0)
{
return true;
}
else
{
return false;
}
}
catch (SqlException)
{
return false;
}
finally
{
con.Close();
con.Dispose();
com.Dispose();
}
}
存储过程:
ALTER procedure [dbo].[FunctionNameInsert]
@FunctionName char(50),
@FunctionExplain varchar(200)
as
begin
insert into Functions (FunctionName,FunctionExplain)
values (@FunctionName,@FunctionExplain);
end现在问题是插入数据操作不成功,现在问题是插入数据操作不成功,经调试P中参数有两个,而com.Parameters[]有三个:P[0].value="职位",p[1].value="说明"com.Parameters[0].value="职位",
com.Parameters[1].value="职位",
com.Parameters[2].value="说明",错误是:数据库非查询操作方法:
//执行带参数的更新操作
public bool CompanyExe(string sql, SqlParameter[] p)出错,数据库中,我用EXEC 执行过存储过程没问题,类中参数传递也调试过没发现问题!
想知道插入数据不成功是不是上面说的问题!
再就是调试代码到下面直接抛出异常!
int result = com.ExecuteNonQuery();
if (result > 0)
{
return true;
}
else
{
return false;
}
}
catch (SqlException)
{
return false;
}
finally
{
con.Close();
con.Dispose();
com.Dispose();
}
sqlinsert
{
com.Parameters.Add(p[i]);
}
这三句改成
com.Parameters.Clear();
for (int i = 0; i < p.Length; i++)
{
com.Parameters.Add(p[i]);
}
不是.GetLength(0)