实际上我是这个主题的新手,所以需要一些帮助。
我在Web.Config
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
并且知道,要使用它,我必须将此语句放在我的C#代码后面
string connStr = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
这就是我所知道的。
我的问题是
如果我想对aspnetdb.mdf
数据库执行某些查询(在Visual Studio 2010中内置于登录控件中构建的ASP.NET内置数据库),我该怎么办?
早些时候,我这样做是为了完成我的任务
1)Web.Config
中没有连接字符串。和
2)代码隐藏中的硬代码
SqlConnection con = new SqlConnection("data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true");
SqlCommand cmd = new SqlCommand();
protected void btnnameedit_Click(object sender, EventArgs e)
{
try
{
con.Open();
cmd.CommandText = "update tamhankarnikhil set fname = '" + fname.Text + "'";
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
fname.Text = "";
}
catch (Exception a)
{
Response.Write(a.Message);
}
}
答案 0 :(得分:4)
以下是您可以做的事情:
protected void btnnameedit_Click(object sender, EventArgs e)
{
try
{
string connStr = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
using (var conn = new SqlConnection(connStr))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "UPDATE tamhankarnikhil SET fname = @fname";
cmd.Parameters.AddWithValue("@fname", fname.Text);
cmd.ExecuteNonQuery();
fname.Text = "";
}
}
catch (Exception a)
{
Response.Write(a.Message);
}
}
您将注意到参数化查询的使用,以避免由于您在构造SQL查询时使用的字符串连接而导致代码易受攻击的SQL注入。
您还会注意到SqlConnection和SqlCommand包含在using语句中,以确保即使在发生异常时也能正确处理它们。