我正在使用C#编写数据库应用程序.我需要在表格上显示数据,现在我已经完成了.但我的业务逻辑硬编码到我的代码.现在我想继续使用我的代码存储过程.我需要做哪些修改.一个简单的步骤列表就够了:)
SqlConnection myConnection = new SqlConnection("user id=dbblabla;" +
"password=1234;server=localhost\\SQLEXPRESS;" +
"Trusted_Connection=yes;" +
"database=myDB; " +
"connection timeout=30");
try
{
myConnection.Open();
} catch (SqlException excep){
Console.WriteLine(excep.StackTrace);
}
String selectionQuery = "SELECT * FROM myTable";
SqlDataAdapter myAdapter = new SqlDataAdapter(selectionQuery,myConnection);
DataSet ds = new DataSet();
myAdapter.Fill(ds,"AllInfo");
dataGridSearchOutput.DataSource = ds.Tables["AllInfo"].DefaultView;
Run Code Online (Sandbox Code Playgroud)
我从创建一个新的SQL命令开始,但我不确定我使用的是正确的方法.
SqlCommand newCommand = new SqlCommand("SELECT * FROM PMInfo");
newCommand.CommandType = CommandType.StoredProcedure;
Run Code Online (Sandbox Code Playgroud) 我读了一本关于SQLServer 2008的书.在这本书中,作者说尽管存储过程主要是解决方案,但你应该避免一直使用它们.
我知道存储过程是预编译的,因此它们比正常命令运行得更快.另外,因为它们使用参数来传递数据,所以在SQL注入攻击的情况下,它们比普通的SQL命令更安全.
所以我不明白的是:为什么不总是使用存储过程?
我目前有一个数据访问层,它也使用Web服务公开一些API.
[WebMethod]
public List<GlobalStat> GetStats()
{
List<GlobalStat> Stats = new List<GlobalStat>();
string sql = @"
A huge multi-line SQL query
";
try
{
string ConString = Constants.connString;
con = new SqlConnection(ConString);
cmd = new SqlCommand(sql, con);
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
GlobalStat stat = new GlobalStat();
stat.Key = dr[0].ToString();
stat.Value = int.Parse(dr[1].ToString());
Stats.Add(stat);
}
}
catch (Exception x)
{
Response.Write(x);
}
return Stats;
}
Run Code Online (Sandbox Code Playgroud)
我有点担心SQL的编写方式.
有很多东西硬编码到这里:数据库名称,表名等.
要解决这个问题,我是否只是在一个地方创建一个包含所有SQL命令的单独的全局文件,或者是否有更好的范例?我不是在应用程序内部创建SQL表,但这些表驻留在不同的预构建数据库中.
我应该如何构建一个使用内联SQL从数据库生成数据的应用程序?
我被告知将MySQL代码与PHP代码分开是一种常见的做法,这是真的吗?这是一个新的编码标准吗?这样做有什么好处吗?
有人可以指导我PHP/MySQL为大众写作时最好的编码实践(例如开源脚本).
谢谢!