执行存储过程后,我没有收到填充数据集。
protected void btnsub_Click(object sender, EventArgs e)
{
ArrayList arInsert = ReturnParameter_insert();
DataSet dsInsertProfile = objadmin.GetGridData(arInsert, objconstant.sSP_INSERT_PROFILE);
if(int.Parse(dsInsertProfile.Tables[0].Rows[0].ItemArray[0].ToString())== 0)
{
lblThank.Text = "Your profile have been successfully saved.";
}
else
{
lblThank.Text = "Your profile is not saved, please try again later.";
}
}
public ArrayList ReturnParameter_insert()
{
ArrayList arProfile = new ArrayList();
Object[] c_first_name = new object[3] { "@strFname", "Varchar", (txtfname.Text != "") ? txtfname.Text : "" };
arProfile.Add(c_first_name);
return arProfile;
}
public DataSet GetGridData(ArrayList dbArray, string sSpName)
{
DataSet dsDataSet = new DataSet();
dsDataSet = datamanager.GetGridData(dbArray, sSpName);
return dsDataSet;
}
public static SqlDbType GetSqlDataType(string sDataType)
{
return (sDataType == "Integer") ? SqlDbType.Int : (sDataType == "Varchar") ? SqlDbType.VarChar : (sDataType == "Date") ? SqlDbType.Date : SqlDbType.BigInt;
}
public static DataSet GetGridData(ArrayList dbArray, string sSpName)
{
DataSet dsDataSet = new DataSet();
SqlConnection cn = createConnection();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = sSpName;
object objPrMtrName;
object objSqlType;
object objPrMtrVal;
int i;
for (i = 0; i < dbArray.Count; i++)
{
objPrMtrName = ((object[])(dbArray[i]))[0];
objSqlType = ((object[])(dbArray[i]))[1];
objPrMtrVal = ((object[])(dbArray[i]))[2];
cmd.Parameters.Add(objPrMtrName.ToString(), GetSqlDataType(objSqlType.ToString())).Value = objPrMtrVal;
}
cmd.Connection = cn;
try
{
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(dsDataSet);
return dsDataSet;
}
catch (Exception ex)
{
throw ex;
}
finally
{
cn.Close();
cn.Dispose();
}
}
我的存储过程:
CREATE Procedure spInsert_profile
(@strFname varchar(200))
AS
BEGIN
INSERT INTO gdt_Users([c_first_name], [d_modified_dttm], [d_created_dttm])
VALUES(@strFname, GETDATE(), GETDATE())
END
这里我使用的是3层,相同的方法可以成功地用于其他页面但不适用于此特定代码。 GETGRIDDATA方法中的数据集填充空值。我无法找到。请帮帮我......
答案 0 :(得分:1)
在您的过程中执行插入操作而不是如何返回数据Insert into statement
插入操作不会检索操作。
...要检索数据,您需要使用select *
语句调用过程。
答案 1 :(得分:0)
存储过程中没有select语句。 adapter.fill()应该从存储的proc输出中接收某种表。
答案 2 :(得分:0)
从我在这里看到你正在执行一个只执行INSERT命令的存储过程,你得到一个NULL值的原因是因为非查询命令如UPDATE或INSERT通常只会返回行数受影响的例如1而不是您插入的表的数据。
您需要在插入后执行SELECT命令以获取任何数据。
答案 3 :(得分:0)
因为您在存储过程中使用了Insert Into
。
基于Tables
属性的访问权限:
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(dsDataSet);
var table1 = dsDataSet.Tables[0];
var table2 = dsDataSet.Tables[1];
链接:http://msdn.microsoft.com/fr-fr/library/system.data.dataset.tables.aspx
答案 4 :(得分:0)
问题在于您的存储过程...您必须在 DataSet
中将select语句添加到存储过程中以返回结果