2

我有一个关于从 Visual Studio 执行 sql 命令的问题,我有一些不那么短的程序,所以如果我用命令类型文本执行它们并用 stringbuilder 编写它会很麻烦。我决定将它们写在保存在我的项目中的 .sql 文件中,但我对此了解不多。就像如果有创建的过程一样,我假设我需要创建一次,但是如何调用它,然后稍后再进行其他操作等。当用户单击时,我需要使用各种参数调用它。关于它的任何教程或示例?
就像是

FileInfo file = new FileInfo(@"\\ares\c$\Inetpub\wwwroot\TestArea\SQL\testsql.sql");


        string script = file.OpenText().ReadToEnd();


        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["WhatIfDatabaseConnectionString"].ConnectionString))
        {
              SqlCommand sqlCmd = new SqlCommand(script, conn);
              sqlCmd.ExecuteNonQuery(script);

但是有参数。

4

2 回答 2

0
SqlCommand cmd = new SqlCommand();

cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "CRUD_myproc";

cmd.Parameters.Add("@flag", SqlDbType.Char).Value = 'a';
cmd.Parameters.Add("@type", SqlDbType.Int).Value = cmbBuildingType.SelectedIndex;

cmd.ExecuteNonQuery();

所以你应该在 sql 中创建名为 'CRUD_myproc' 的 proc。希望这对你有一点帮助

于 2013-01-19T10:36:25.073 回答
0

你走的是正确的路线,我个人有一个缓存 SQL 文件并检查最后修改日期的工厂,但它正在做你正在做的事情:

string script = File.ReadAllText(_serverPath + sqlName + ".sql");
using (SqlConnection conn = new SqlConnection(ConnString))
{
    conn.Open();
    using (SqlCommand sqlCmd = new SqlCommand(script, conn))
    {
        sqlCmd.CommandType = CommandType.Text;
        sqlCmd.Parameters.AddWithValue("@CompanyGuid", CompanyGuid);
        sqlCmd.ExecuteNonQuery();
    }
}

然后,您将拥有一个 SQL 文本文件,其参数以 @ 符号为前缀:

SELECT * FROM tblCompany WHERE CompanyGuid = @CompanyGuid
于 2016-04-19T08:49:00.707 回答