Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Mình bị lỗi "Must declare the scalar variable "@MaNV"

    Mình đang tìm hiểu về SqlParameter nhưng khi insert dữ liệu thì bị lỗi
    "Must declare the scalar variable "@MaNV"
    Các bạn kiểm tra hộ mình xem đoạn code dưới có gì sai ko vậy. Thanks !

    Mã:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace sqlprm
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string constr = "Data Source=POWERADMIN-PC;Initial Catalog=QLNS;Integrated Security=True";
                //Khai báo và khởi tạo đối tượng Sqlconnection
                SqlConnection con = new SqlConnection(constr);
                //Mở kết nối
                con.Open();
                string sql = "insert into TblSoBH (MaNV, MaLuong, MaSoBH) Values (@MaNV, @MaLuong, @MaSoBH)";
                //Khai báo và khởi tạo đối tượng Sqlcommand
                SqlCommand cmd = new SqlCommand(sql, con);
                //Khai báo và khởi tạo đối tượng Sqlpara
                SqlParameter sqlpa = new SqlParameter();
                
                //Khai báo thuộc tính Sqlpara ứng với tên tham số
                sqlpa.ParameterName = "@MaNV";
                //Khai báo thuộc tính SqlValues ứng với giá trị truyền vào
                sqlpa.SqlValue = "049";
                //Khai báo thuộc tính SqlDbType ứng với kiểu dữ liệu
                sqlpa.SqlDbType = SqlDbType.Char;
                //Khai báo thuộc tính kích thước ứng với chiều dài
                sqlpa.Size = 10;
                //Thêm dữ liệu vào Sqlcommand
                cmd.Parameters.Add(sqlpa);
                cmd.Parameters.Clear();
    
                //Khai báo thuộc tính Sqlpara ứng với tên tham số
                sqlpa.ParameterName = "@MaLuong";
                //Khai báo thuộc tính SqlValues ứng với giá trị truyền vào
                sqlpa.SqlValue = "LNV007";
                //Khai báo thuộc tính SqlDbType ứng với kiểu dữ liệu
                sqlpa.SqlDbType = SqlDbType.Char;
                //Khai báo thuộc tính kích thước ứng với chiều dài
                sqlpa.Size = 10;
                //Thêm dữ liệu vào Sqlcommand
                cmd.Parameters.Add(sqlpa);
                cmd.Parameters.Clear();
    
                //Khai báo thuộc tính Sqlpara ứng với tên tham số
                sqlpa.ParameterName = "@MaSoBH";
                //Khai báo thuộc tính SqlValues ứng với giá trị truyền vào
                sqlpa.SqlValue = "BH007";
                //Khai báo thuộc tính SqlDbType ứng với kiểu dữ liệu
                sqlpa.SqlDbType = SqlDbType.Char;
                //Khai báo thuộc tính kích thước ứng với chiều dài
                sqlpa.Size = 10;
                //Thêm dữ liệu vào Sqlcommand
                cmd.Parameters.Add(sqlpa);
                cmd.Parameters.Clear();
    
                //Khai báo thuộc tính Connection
                cmd.Connection = con;
               
                //Khai báo phương thức thực thi SQL
                cmd.ExecuteNonQuery();
              
                con.Close();
                con.Dispose();
                MessageBox.Show("Thành công");
            }
        }
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    [IMG]images/smilies/1.gif[/IMG] èo! sao ko chơi thủ tục cho lành bạn? đã viết kiểu câu truy vấn như thế thì cho luôn giá trị vào chẳng nhàn hơn à. Ví dụ: sql="insert into tbl_test(ID,..) values('"+id+"','"+...)

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Ok đã sửa dc rồi chỉ vì cái dòng parameter.clear ><

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    command.Parameters.Add("@id", SqlDbType.VarChar).Value = id;
    thế này nè bạn.
    Còn về mrfour.it. Cách của bạn sẽ dính lỗi bảo mật của SQL: SQL Injection

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    mình cũng bị vấn dề tương tự nhưng minh dùng lệnh select.
    làm giống bạn ở trên thì bị lỗi:
    Mã:
    Input string was not in a correct format.
    code của mình:
    Mã:
      protected void Page_Load(object sender, EventArgs e)
        {
    
    
            string sql = "SELECT * FROM [SANPHAM] WHERE ([MaLSP] = @MaLSP) ORDER BY NEWID()";
            cmd = new SqlCommand(sql, cnn);
            SqlParameter sqp = new SqlParameter();
            sqp.ParameterName = "@MaLSP";
            sqp.Value = "MaLSP";
            sqp.SqlDbType = SqlDbType.Int;
            cmd.Parameters.Add(sqp);
            da = new SqlDataAdapter(cmd);
            dt = new DataTable();
    
            cnn.Open();
            da.Fill(dt);
            cnn.Close();
            CollectionPager1.PageSize = 12; //Số sản phẩm hiển thị trên một trang
            CollectionPager1.DataSource = dt.DefaultView;
            CollectionPager1.BindToControl = dtlsp;
            dtlsp.DataSource = CollectionPager1.DataSourcePaged;
    
        }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •