0

考虑 C# 中的这段代码:

var command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "usp_my_procedure";

当我执行这个命令时,SQL Server(或MySQL服务器)会知道我想在哪个数据库中运行这个存储过程吗?

这里最好的约定是什么(考虑到性能和安全性)?我是不是该...

  1. 明确指定数据库名称?
  2. 每次创建连接后使用USE命令设置默认数据库?
  3. 假设当前数据库已经设置了连接?(例如Database=mydb
  4. 其他?

此外,在 SQL Server 中,我认为最好明确指定数据库所有者:

command.CommandText = "dbo.usp_my_procedure";
4

2 回答 2

3
objSqlConnection.ChangeDatabase("Database");

或者

command.CommandText = "database.dbo.usp_my_procedure";

希望这可以帮助

于 2012-11-14T08:41:53.750 回答
1

如果您打算对一个数据库使用连接,并且您确定它不会被更改,那么您可以设置当前数据库一次 - 使用 USE 命令或仅使用连接字符串。在这种情况下,您可以省略对象全名 - writedbo.table1而不是db_name.dbo.table1.

如果您要修改/引用某些数据库中的对象,那么您有一个选择:在语句之前执行 USE 命令,或使用全名 - db_name.dbo.table1。你可以自己回答这个问题——哪一个更适合你。

于 2012-11-14T11:22:52.663 回答