Member 12761341 Ответов: 3

Проблема вставки данных в базу данных


Я вставляю данные в базу данных, сталкиваясь с определенной проблемой. Мои коды выглядят так;
показывает ошибки на линии 36. УМК.Метод executenonquery();

<pre>Server Error in '/' Application.

Must declare the scalar variable "@txtBox1".

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@txtBox1".

Source Error: 


Line 34: 
Line 35:         con.Open();
Line 36:         cmd.ExecuteNonQuery();
Line 37:         con.Close();
Line 38: 

Source File: c:\Users\Atta\Documents\Visual Studio 2012\WebSites\WebSite3\Page2.aspx.cs    Line: 36 

Stack Trace: 


Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Security;
using System.Configuration;

public partial class Page2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString());
        
        
        string query = "insert into Register(FName,LName,age,TelNo,Address,gender) values (@txtBox1.text, @txtBox2.text, @txtBox3.text, @txtBox4.text, @txtBox5.text, @txtBox6.text)";

        SqlCommand cmd = new SqlCommand(query, con);
        cmd.Parameters.AddWithValue("@FName", txtBox1 .Text );
        cmd.Parameters.AddWithValue("@LName", TxtBox2.Text );
        cmd.Parameters.AddWithValue("@age", TxtBox3 .Text );
        cmd.Parameters.AddWithValue("@TelNo", TxtBox4 .Text );
        cmd.Parameters.AddWithValue("@Address", TxtBox5 .Text );
        cmd.Parameters.AddWithValue("@gender", TxtBox6 .Text );
        //add the rest

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

    }
}

htm11

То же самое и с этими
УМК.Параметры.AddWithValue ("@age", TxtBox3. Text );
УМК.Параметры.AddWithValue ("@TelNo", TxtBox4 .Текст );
УМК.Параметры.AddWithValue ("@Address", TxtBox5 .Текст );
УМК.Параметры.AddWithValue ("@gender", TxtBox6 .Текст );

удалите пробел перед текстом .

3 Ответов

Рейтинг:
2

ZurdoDev

Ошибка заключается в том, что имена параметров не совпадают. Когда вы объявляете ваш SQL вы используете @txtBox1.Текст в качестве параметра заполнителя, а затем, когда вы добавляете параметры вы используете @имени. Измените инструкцию INSERT, чтобы использовать те же имена параметров, которые вы добавляете вместе с параметрами.AddWithValue ().


Рейтинг:
2

htm11

У вас есть ошибка в вашем коде для одной, одной этой строки....

cmd.Parameters.AddWithValue("@FName", txtBox1 .Text );


Вы не можете иметь пробел после изменения термина txtBox1 на txtBox1. Text


Richard Deeming

Неверно: C# не заботится о том, есть ли пробелы между переменной, ., и собственность.

А даже если и так, проблема не в этом.

htm11

Вы ошибаетесь, пробел-это синтаксическая ошибка, и C# действительно заботится, попробуйте написать какой-нибудь тестовый код, значение txtBox1 не будет присутствовать в командной строке при выполнении execute.

Richard Deeming

Вам потребовалось больше года, чтобы вернуться с еще более неверной информацией?

Просто попробуй.

Вот, я даже помогу тебе начать: Демонстрация[^]

Рейтинг:
1

Atlapure Ambrish

В вашем коде вам нужно ниже изменить.
строка запроса = "включить в реестр(имени,lname в,возрасте,TelNo,адрес,пол) значения (@txtBox1.текст, @txtBox2.текст, @txtBox3.текст, @txtBox4.текст, @txtBox5.текст, @txtBox6.текст)";

следует изменить, чтобы использовать параметры, как показано ниже

строка запроса = "включить в реестр(имени,lname в,возрасте,TelNo,адрес,пол) значения (@имени, @lname в, @возраст, @TelNo, адрес@, @пол)";

Я бы также рекомендовал отделить код в другом файле (предпочтительно на другом логическом уровне, например на уровне доступа к данным), чтобы добиться слабой связи.