标签: executenonquery

如何将变量传递给SqlCommand语句并插入到数据库表中

我正在用C#编写一个小程序,它使用SQL在运行时根据用户的输入将值存储到数据库中.

唯一的问题是我无法弄清楚正确的Sql语法将变量传递到我的数据库.

private void button1_Click(object sender, EventArgs e)
    {
        int num = 2;

        using (SqlCeConnection c = new SqlCeConnection(
            Properties.Settings.Default.rentalDataConnectionString))
        {
            c.Open();
            string insertString = @"insert into Buildings(name, street, city, state, zip, numUnits) values('name', 'street', 'city', 'state', @num, 332323)";
            SqlCeCommand cmd = new SqlCeCommand(insertString, c);
            cmd.ExecuteNonQuery();
            c.Close();
        }

        this.DialogResult = DialogResult.OK;
    }
Run Code Online (Sandbox Code Playgroud)

在这段代码中我使用了所有静态值,除了我试图传递给数据库的num变量.

在运行时我收到此错误:

A parameter is missing. [ Parameter ordinal = 1 ]
Run Code Online (Sandbox Code Playgroud)

谢谢

c# sql sqlcommand executenonquery

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

只更新了1条记录时,ExecuteNonQuery返回值2

运行Enterprise Library 5.0的示例,当我使用ExecuteNonQuery运行更新sproc时,它返回2.更新基于ProductID,表的主键(是的,我检查过,它是唯一的).

这是简单的sproc:

ALTER PROCEDURE [dbo].[UpdateProductsTable]
     @ProductID int, 
     @ProductName varchar(50) = NULL, 
     @CategoryID int = NULL, 
     @UnitPrice money = NULL
AS
BEGIN
    UPDATE Products
    SET 
        ProductName = @ProductName, 
        CategoryID = @CategoryID, 
        UnitPrice = @UnitPrice
    WHERE ProductID = @ProductID
END
Run Code Online (Sandbox Code Playgroud)

在SSMS中执行此sp在查询结果窗口的右下角显示"1行",并在网格中返回0.单击消息选项卡显示

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

不知道为什么我在这里看到这3次,但我不相信这是问题所在.

这是调用sp的代码:

public static void Exec_Update_Query()
        //updates a column of a single row, checks that the update succeeded, and then update it again to return it to the original value …
Run Code Online (Sandbox Code Playgroud)

enterprise-library executenonquery c#-4.0

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

ExecuteNonQuery无法在C#中工作

我正在使用Visual Studio 2008 c#构建数据库,当我尝试将新记录插入到我的数据库中时,它似乎ExecuteNonQuery尚未初始化.我复制我的代码,希望任何人都能帮助我,因为我是新手.

 private void button1_Click(object sender, EventArgs e)
 {
     SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Usuario\Documents\Visual Studio 2010\Projects\Nova\Nova\Database1.mdf;Integrated Security=True;User Instance=True");
     SqlCommand cmd = new SqlCommand();
     cn.Open();
     cmd.CommandText = "insert into Database1.mdf(Codigo,Nombre,Cantidad,Tipo) values('"+comboBox1.Text+"','"+textBox3.Text+"','"+textBox1.Text+"','"+comboBox2.Text+"')";
     cmd.ExecuteNonQuery();
     cmd.Clone();
     cn.Close();
     MessageBox.Show("Acabas de agregar un producto");
 }
Run Code Online (Sandbox Code Playgroud)

c# sql-server executenonquery

2
推荐指数
2
解决办法
8657
查看次数

使用npgsql执行postgres脚本

我有一个创建表的脚本(*.sql).我正在使用Visual Studio 2010和npgsql来访问postgres数据库.

我可以从代码隐藏中执行脚本吗?

这是我尝试过的代码:

string sqlConnectionString = @"myconnection";

FileInfo file = new FileInfo(@"myfile.sql");

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

NpgsqlConnection conn = new NpgsqlConnection(sqlConnectionString);

Server server = new Server(new ServerConnection(conn));

server.ConnectionContext.ExecuteNonQuery(script);
file.OpenText().Close();
Run Code Online (Sandbox Code Playgroud)

但是Visual Studio不承认Server.

c# sql asp.net npgsql executenonquery

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

C#ExecuteNonQuery"连接必须有效并且打开".

我正在尝试将值添加到数据库中,但每次我尝试添加一些东西时,我都会收到错误ExecuteNonQuery()消息" 连接必须有效且打开. "而且我不知道该怎么办!!!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace ClientesClinica
{
    public partial class frmCadastro : Form
    {

    MySqlConnection conect = new MySqlConnection("server = localhost; user id = root; database = clientes; password = '';");

    public frmCadastro()
    {
        InitializeComponent();
    }

    private void frmCadastro_Load(object sender, EventArgs e)
    {

    }

    private void btnCancela_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void btnSalvar_Click(object sender, EventArgs e) …
Run Code Online (Sandbox Code Playgroud)

c# database executenonquery

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

SqlCommand查询的最大长度是多少?

我目前正在使用SQL Server 2014中的C#脚本更新和读取值.当使用SQlCommand执行InitQuery时,它会在运行脚本时弹出错误:

IndexOutOfRangeException:数组索引超出范围.
Mono.Data.Tds.Protocol.TdsComm.AppendInternal(Int16 s)
Mono.Data.Tds.Protocol.TdsComm.Append(System.String s)
Mono.Data.Tds.Protocol.Tds70.WriteRpcParameterInfo(Mono.Data.Tds. TdsMetaParameterCollection参数)
Mono.Data.Tds.Protocol.Tds70.ExecRPC(TdsRpcProcId rpcId,System.String sql,Mono.Data.Tds.TdsMetaParameterCollection参数,Int32超时,布尔值wantResults)
Mono.Data.Tds.Protocol.Tds70.Execute( System.String commandText,Mono.Data.Tds.TdsMetaParameterCollection参数,Int32 timeout,Boolean wantResults)
System.Data.SqlClient.SqlCommand.Execute(Boolean wantResults)
System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
(wrapper remoting-invoke- with-check)
System.Data.SqlClient.SqlCommand:ExecuteNonQuery()
Database.DataBaseConnection.Update()(在Assets/DataBaseConnection.cs:674)

我计算了SqlCommand它有多少个字符,它是8,125个字符(没有空格),10,874个字符(带空格).

有198个参数,但我想这不是由于那个,因为在某处我读到单个查询的最大参数量是2000,我是对的吗?

我减少了参数的数量(直到20个参数),因此,命令长度和它的作用就像一个魅力(875个字符没有空格和1,221个字符带空格).

总而言之,我的问题是:SqlCommandSQL Server 2014中查询的最大长度是多少?在SQL Server 2008中?

我的代码示例:

//New command to update values in input table in sql server
using (SqlCommand command = new SqlCommand("UPDATE DigitalInputs" +
    " SET Value = CASE Name" +
    " WHEN @LI_Input_Variable1_Name THEN @LI_Input_Variable1_Value" +
    " WHEN @LI_Input_Variable2_Name THEN @LI_Input_Variable2_Value" +
    " WHEN @LI_Input_Variable3_Name …
Run Code Online (Sandbox Code Playgroud)

sql sql-server monodevelop unity-game-engine executenonquery

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

删除表时ExecuteNonQuery会返回什么?

假设我们执行一个DROP TABLE X通过一个ExecuteNonQuery并且一切运行正常(毫无例外),它将返回什么?

c# mysql sql executenonquery

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

Insert的ExecuteNonQuery()

你能告诉我这段代码有什么问题吗?

我是否需要使用DataAdapter插入表格?

我知道没问题connectionString,因为我在Server Explorer上测试了它.

    Dim mydao As New Connection
    Dim connectionString As String = mydao.GetConnectionString()
    Dim connection As New SqlConnection(connectionString)
    Dim cmd As New SqlCommand

Public Function add(ByVal area As String, ByVal user As String) As Integer

        cmd.CommandText = "INSERT into Area (Area, user) VALUES ('" + area + "','" + user + "')"
        Try
            connection.Open()
            Dim cant As Integer = cmd.ExecuteNonQuery()'it throws exception here
            connection.Close()
            Return cant
        Catch ex As Exception
            Console.WriteLine(ex.Message)
            Return 0
        End …
Run Code Online (Sandbox Code Playgroud)

vb.net insert sql-server-2008 visual-studio executenonquery

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

oracle ExecuteNonQuery在ASP.Net上冻结

我试图在ASP C#与CLR 4.5中使用Oracle连接运行非查询.这是我的代码:

    string connectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString1"].ConnectionString;
    OracleConnection conn = new OracleConnection(connectionString);
    conn.Open();
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;
    cmd.CommandText = "update SALES_ADVENTUREWORKS2012.SALESORDERDETAIL set UNITPRICEDISCOUNT=0 where ROWGUID='4A399178-C0A0-447E-9973-6AB903B4AECD'";
    cmd.CommandType = CommandType.Text;
    cmd.CommandTimeout = QUERY_TIMEOUT;
    int row_affected = cmd.ExecuteNonQuery();
    HttpContext.Current.Response.Write("Rows affected:" + row_affected + "<br/>");
    conn.Close();
Run Code Online (Sandbox Code Playgroud)

当我在oracle开发工具中运行查询时,它工作正常.当我使用上面的asp代码时,它会在执行查询时冻结.即使我使用5秒超时,它也会永远冻结.我尝试过使用托管和非托管的oracle库; 两者都表现相同.请注意,使用填充或标量查询工作完全正常,因此我的连接字符串没有任何问题.此外,oracle开发可以执行此更新查询的事实证明这不是权限问题.

有任何想法吗?

asp.net oracle executenonquery

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

c#MySqlCommand.ExecuteNonQuery()返回-1

我正在尝试在C#中执行SQL请求,以了解用户是否已在我的数据库中注册.为此,我使用以下源代码:

    public bool pseudoDispo(string pseudo)
    {
        // Ouverture de la connexion SQL
        this.OpenConnection();

        // Création d'une commande SQL en fonction de l'objet connection
        MySqlCommand cmd = this.connection.CreateCommand();
        cmd.CommandText = "SELECT COUNT(*) FROM `user` WHERE `pseudo` = '" + pseudo + "'";

        int test = cmd.ExecuteNonQuery();
        MessageBox.Show(test.ToString());

        // Exécution de la commande SQL
        if (cmd.ExecuteNonQuery() == 1)
        {
            this.connection.Close();
            MessageBox.Show("Registered");
            return true;
        }
        else
        {
            this.connection.Close();
            MessageBox.Show("Not Registered");
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但问题是MySqlCommand.ExecuteNonQuery()总是返回-1而我不知道为什么.我的请求似乎有效,因为它在phpmyadmin上返回了我的好结果(如果已注册,则返回1,如果没有则返回0).

有人帮我解释一下,我做错了吗?

谢谢!

编辑:我一直试图通过使用ExecuteScalar()以另一种方式完成我的功能,但现在我遇到了一些麻烦,因为它总是让我回归0.我显然不明白,但我甚至不知道是什么......我可以获得有关ExecuteScalar()和那种函数的更多信息吗?我试图将它转换为字符串,似乎cmd请求Int64.所以我更新了我的代码,但它仍然无效.我对自己缺乏知识感到非常沮丧,但无论如何,这是代码:

    public …
Run Code Online (Sandbox Code Playgroud)

c# mysql insert executenonquery

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