调用存储过程之前设置当前数据库?

时间:2012-11-14 08:33:36

标签: c# mysql sql-server

在C#中考虑这段代码:

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

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

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

  1. 明确指定数据库名称?
  2. 每次创建连接后,使用USE命令设置默认数据库?
  3. 假设当前数据库已由连接设置? (例如Database=mydb
  4. 其他?
  5. 此外,在SQL Server中,我认为最好明确指定数据库所有者:

    command.CommandText = "dbo.usp_my_procedure";
    

2 个答案:

答案 0 :(得分:3)

objSqlConnection.ChangeDatabase("Database");

OR

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

希望这有帮助

答案 1 :(得分:1)

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

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