标签: sqlcommand

SqlCommand with using语句

我看到在大多数样本中,SqlCommand都是这样使用的

using (SqlConnection con = new SqlConnection(CNN_STRING))
{
    using (SqlCommand cmd = new SqlCommand("Select ID,Name From Person", con))
    {
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);           
        return ds;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道为什么我们使用"使用"声明.但是SqlCommand没有包含Close()方法,所以我们应该在using语句中使用它

c# sqlcommand sqlconnection using-statement

20
推荐指数
2
解决办法
3万
查看次数

与SqlCommand一起使用时,为什么某些sql查询要慢得多?

我有一个存储过程,从Sql Server Management Studio(2秒)执行速度比运行时System.Data.SqlClient.SqlCommand(2分钟后超时).

这可能是什么原因?


详细信息:在Sql Server Management Studio中,这将在2秒内运行(在生产数据库上):

EXEC sp_Stat
    @DepartmentID = NULL

在.NET/C#中,以下在2分钟后超时(在生产数据库上):

string selectCommand = @"
EXEC sp_Stat
    @DepartmentID = NULL";
string connectionString = "server=***;database=***;user id=***;pwd=***";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    using (SqlCommand command = new SqlCommand(selectCommand, connection))
    {
        connection.Open();
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也试图与selectCommand = "sp_Stat",CommandType = StoredProcedureSqlParameter,但它是同样的结果.

没有EXEC它也是同样的结果.

在几乎数据空的开发数据库中,两个案例都在不到1秒的时间内完成.所以它与数据库中存在大量数据有关,但它似乎只发生在.NET ...


马克·格拉维尔(Marc Gravell)所写的关于不同SET价值观的内容在所呈现的案 …

.net sql sqlcommand

18
推荐指数
2
解决办法
1万
查看次数

为什么"ExecuteNonQuery"中的"Non"?

我知道这不是一个有用的问题的地狱,但我不禁被它所困扰.

那么,
为什么所说的方法(在*Command类中)被称为
ExecuteNonQuery而不是ExecuteQuery

这些SQL语句不是我们在DBs,查询中抛出的吗?

.net sqlcommand oledbcommand dbcommand executenonquery

18
推荐指数
1
解决办法
1271
查看次数

如何将List <string>转换为Sql In语句的SqlParameter?

我似乎对如何In使用a 执行语句感到困惑SqlParameter.到目前为止,我有以下代码:

cmd.CommandText = "Select dscr from system_settings where setting in @settings";
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@settings", settingList));

reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

settingsList是一个List<string>.当cmd.ExecuteReader()被调用时,ArgumentException由于无法将a映射List<string>到"已知的提供者类型" ,我得到了.

如何(安全地)In使用SqlCommands 执行查询?

c# sql ado.net sqlcommand

18
推荐指数
2
解决办法
3万
查看次数

期望参数'@ID',没有提供?

我发送ID作为outparameter,但它给出了错误

System.Data.SqlClient.SqlException:过程或函数'usp_ClientHistoryItem'需要参数'@ID',这是未提供的.

 using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn))
 {
      SqlParameter parameterID = new SqlParameter("@ID", oReservation.Id);
      parameterID.Direction = ParameterDirection.Output;
      cmd.Parameters.Add(parameterID); 

      cmd.Parameters.Add(new SqlParameter("@PhoneNo", oReservation.ClientPhone));
      cmd.Parameters.Add(new SqlParameter("@UserId", oReservation.UserID));
      cmd.Parameters.Add(new SqlParameter("@Description", oReservation.Description));
      cmd.Parameters.Add(new SqlParameter("@TestId", oReservation.TestId));
      cmd.Parameters.Add(new SqlParameter("@StartDate", oReservation.StartDate));

      cmd.ExecuteNonQuery();

      returnValue = Convert.ToInt32(cmd.Parameters["@ID"].Value);

      return returnValue;
}
Run Code Online (Sandbox Code Playgroud)

.net c# database sqlcommand

18
推荐指数
1
解决办法
3万
查看次数

SqlCommand()ExecuteNonQuery()截断命令文本

我正在构建一个自定义数据库部署实用程序,我需要读取包含sql脚本的文本文件并对数据库执行它们.

非常简单的东西,到目前为止一切顺利.

但是我遇到了一个障碍,文件的内容被成功完整地读取,但是一旦传入SqlCommand然后用SqlCommand.ExecuteNonQuery执行,只执行部分脚本.

我启动了Profiler并确认我的代码没有传递所有脚本.

    private void ExecuteScript(string cmd, SqlConnection sqlConn, SqlTransaction trans)
    {

        SqlCommand sqlCmd = new SqlCommand(cmd, sqlConn, trans);
        sqlCmd.CommandType = CommandType.Text;
        sqlCmd.CommandTimeout = 9000000; // for testing
        sqlCmd.ExecuteNonQuery();

    }

    // I call it like this, readDMLScript contains 543 lines of T-SQL
    string readDMLScript = ReadFile(dmlFile);
    ExecuteScript(readDMLScript, sqlConn, trans);
Run Code Online (Sandbox Code Playgroud)

c# sqlcommand sqlclient

16
推荐指数
2
解决办法
1万
查看次数

SqlCommand.Prepare()做什么以及什么时候应该使用它?

可能重复:
在C#中使用SqlCommand Prepare的优点和缺点?

这是MSDN说有关SqlCommand.Prepare():

在SQL Server实例上创建命令的准备版本.

任何人都可以提供更多的见解,了解这意味着何时应该使用它?

.net ado.net sqlcommand

16
推荐指数
3
解决办法
1万
查看次数

使用SQLCommand插入C#

将数据插入数据库的最佳方法是什么?

这就是我所拥有的,但这是错的..

cmd.CommandText = "INSERT INTO klant(klant_id,naam,voornaam) VALUES(@param1,@param2,@param3)";

cmd.Parameters.Add(new SqlParameter("@param1", klantId));
cmd.Parameters.Add(new SqlParameter("@param2", klantNaam));
cmd.Parameters.Add(new SqlParameter("@param3", klantVoornaam));
Run Code Online (Sandbox Code Playgroud)

该函数将数据添加到listBox中

http://www.pictourl.com/viewer/37e4edcf (link is dead)

但没有进入数据库..

http://www.pictourl.com/viewer/4d5721fc (link is dead)

全功能:

private void Form1_Load(object sender, EventArgs e)
{            
    conn2 = new SqlConnection();
    conn2.ConnectionString = ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString;
}

private void button2_Click(object sender, EventArgs e)
{         
    string sqlCmd = "SELECT naam,voornaam,klant_id FROM klant;";
    SqlCommand cmd = new SqlCommand(sqlCmd, conn2);

    conn2.Open();

    using(SqlDataReader reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            listBox2.Items.Add(reader.GetString(0) + " " + reader.GetString(1) + " …
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net sqlcommand

16
推荐指数
2
解决办法
20万
查看次数

通过ExecuteNonQuery检查数据库中是否存在表中的记录

在我的程序中,我需要使用该if语句检查表中是否已存在数据库中的记录.使用c#我试图通过SQL连接来做到这一点.因为我认为该ExecuteNonQuery();命令返回一个整数值,如果我的假设是真的,我想知道什么值是真的知道表中是否存在某条记录.这是我的代码示例:

using (SqlConnection sqlConnection = dbUtil.GetSqlConnection(dbUtil.GetConnectionStringByName("NonConnectionString")))
{
    using (SqlCommand sqlCommand = new SqlCommand("SELECT * from users where user_name like 'Adam' AND password like '123456'", sqlConnection))
    {
        sqlresult = sqlCommand.ExecuteNonQuery();
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到sqlresult之前已经在main中进行了初始化,int sqlresult; 因此我想知道,如果这个用户'Adam'存在于数据库中,或者不存在.如果他存在,那么我想继续进行'if'语句,例如:

if(sqlresult == 0)
{
   MessageBox.Show("Adam exists!");
}
Run Code Online (Sandbox Code Playgroud)

所以我只是不知道它应该返回的整数,我要么不确定这是正确的方法来做到这一点.

谢谢.

c# sqlcommand

16
推荐指数
3
解决办法
8万
查看次数

是否可以使用SqlParameters获取SqlCommand的已解析文本?

我要做的是创建一些带参数的任意sql命令,设置参数的值和类型,然后返回解析的sql命令 - 包含参数.我不会直接对sql数据库运行此命令,因此不需要连接.因此,如果我运行下面的示例程序,我希望看到以下文本(或类似的东西):

WITH SomeTable (SomeColumn)
AS
(
    SELECT N':)'
    UNION ALL
    SELECT N'>:o'
    UNION ALL
    SELECT N'^_^'
)
SELECT SomeColumn FROM SomeTable
Run Code Online (Sandbox Code Playgroud)

示例程序是:

using System;
using System.Data;
using System.Data.SqlClient;

namespace DryEraseConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            const string COMMAND_TEXT = @"
WITH SomeTable (SomeColumn)
AS
(
    SELECT N':)'
    UNION ALL
    SELECT N'>:o'
    UNION ALL
    SELECT @Value
)
SELECT SomeColumn FROM SomeTable
";
            SqlCommand cmd = new SqlCommand(COMMAND_TEXT);
            cmd.CommandText = COMMAND_TEXT;
            cmd.Parameters.Add(new SqlParameter
            {
                ParameterName = …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqlcommand sqlparameter

15
推荐指数
1
解决办法
8129
查看次数