我是asp.net的新手;只是想在阅读我的问题之前让你们知道。我正在创建一个地址簿,我正在使用数据集在aspx页面的gridview中显示我的SQL数据库中的数据。到目前为止我有这个代码
SqlConnection conn = new SqlConnection(conectionstring);
conn.Open();
string sql = "SELECT * FROM Directorio";
SqlDataAdapter myCommand = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
myCommand.Fill(ds);
DataView source = new DataView(ds.Tables[0]);
GridView1.DataSource = source;
GridView1.DataBind();
此代码从数据库获取数据,填充数据集,并在gridview中显示它。我的问题是如何更改gridview,然后更新数据集,以便我可以在SQL数据库中应用更改。 我发现了许多教程,但他们做的事情有所不同。他们将数据库链接到项目并且不编码任何这些,我想学习如何手动完成。 我还尝试在使用编辑按钮创建列的gridview属性中启用编辑,但是当我单击它时,应用程序崩溃。 感谢我的同事们:)
PS:我确实不支持ADO.NET架构
答案 0 :(得分:1)
基本上,数据源控件需要协调更改,因为它在asp.net体系结构的上下文中很复杂。
我想我知道你来自哪里,我完全在那里 - 你可能会喜欢这篇文章:http://msdn.microsoft.com/en-us/library/aa581776.aspx
答案 1 :(得分:0)
你有很多选择。我假设您正在使用webforms和asp.net与使用asp.net MVC。
根据项目的强大程度或计划如何实施,您可以选择几条路线。 如果您有数据访问层,则可以使用EF(实体框架)来处理数据的检索和提交。 EF非常好用,它会在你的webform之外为你处理很多CRUD操作。不完全抽象,但它从你的代码隐藏中获取sql并进入一个单独的/可管理的层。
如果这是一个小项目或者你正在玩的东西,你可以使用相同的ado / sql将数据插回到表中
public int CreateNewUser(string username, string password)
{
int insertUser = DatabaseUtilities.Perform_CRUD_Operation(
String.Format(
"INSERT INTO ContactsUser (UserName, Password) " +
"VALUES ('{0}', '{1}',
username, password),
ConnectionString);
}
//factored out the Perform operation for reuse in other classes you could do all this in one call
public static int Perform_CRUD_Operation(string sqlStatement, string connectionString)
{
OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;" + connectionString);
OleDbCommand cmd = new OleDbCommand(sqlStatement, con);
try
{
con.Open();
int affectedRows = cmd.ExecuteNonQuery();
if (affectedRows == 1)
{
return 0;
}
else
{
return AFFECTED_ROWS_ERROR;
}
}
catch (Exception)
{
return UNHANDLED_ERROR;
}
finally
{
con.Close();
}
}
以上只是一个例子。如果您正在为生产代码做任何事情我强烈建议使用EF或使用存储过程。使用上面的代码可以用于测试或概念验证,但它实际上很容易被sql注入,并且可能非常不安全。
对于没有看到UI或代码背后的代码的网格视图,几乎不可能对要做什么或在哪里查看提出建议。