cái DateTime.Now đó nó lấy giá Trị là "dd/MM/yyyy" đúng ko???
Vậy bạn phải format nó lại thành kiểu "MM/dd/yyyy" thì mới lưu vào bên SQL đc.
Còn cái convert.int32 đó thì mình ko thấy dữ liệu bạn cho vào thế nào nên ko giúp bạn đc....
Chào cả nhà, nhờ bạn Hùng huuhung đã giúp mình sửa xong phần cập nhật dữ liệu từ textbox vào datagrid rồi, nhưng mình làm chức năng lưu dữ liệu từ datagrid vào database thì bị dính lỗi này, mong mọi người chỉ giáo.
Code:private void btnLuu_Click(object sender, EventArgs e) { try { this._conection = new SqlConnection(this._conectionString); this._conection.Open(); string Add = "INSERT INTO TblBaoCaoTuan (nguoidungId, ngayBCTu, noidungBCTu, hoanthanhBCTu) VALUES ('" + txtNguoiDung.Text + "', '" + DateTime.Now + "', '" + txtNoiDungBCTu.Text + "', '" + Convert.ToInt32(txtHoanThanh.Text) + "')"; // bị lỗi DateTime.Now và Convert.ToInt32(txtHoanThanh.Text) không thể là kiểu string để hợp lệ câu lệnh này được //nhưng do trong table mình khai kiểu của 2 cột này là datetime và kiểu int rồi //giờ làm sao để thực hiện được lệnh cmd.CommandText = Add; hợp lệ đây?? SqlCommand cmd = new SqlCommand(); cmd.Connection = this._conection; cmd.CommandText = Add; cmd.ExecuteNonQuery(); this._conection.Dispose(); this._conection.Close(); } catch (Exception databaseException) { MessageBox.Show(databaseException.Message); } }
cái DateTime.Now đó nó lấy giá Trị là "dd/MM/yyyy" đúng ko???
Vậy bạn phải format nó lại thành kiểu "MM/dd/yyyy" thì mới lưu vào bên SQL đc.
Còn cái convert.int32 đó thì mình ko thấy dữ liệu bạn cho vào thế nào nên ko giúp bạn đc....
C# một phần tất yếu của cuộc sống
Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
<@ Bản đồ dẫn đường - Click here @>
DateTime.Now.Tostring("") Format đi
Mà cái DateTime trong DB của bạn là String hả??
Còn đã convert qua Int32 rồi mà bỏ vô dấu "'" là sao??
Hic, mình đã thử đủ mọi cách mấy bạn bày cũng chịu thua.
Tức quá mình làm cái project mới để ví dụ về cái đưa dữ liệu từ database ra datagrid và datagrid nhận giá trị từ textbox và cuối cùng là lưu ngược dữ liệu mới nhập này vào lại database, nhưng kêt quả vẫn y trên, tức datagrid vẫn load được dữ liệu từ database và datagrid nhận được dữ liệu từ textbox nhập vào khi nhấn nút Add, nhưng trong database vẫn ko lưu được giá trị mới nhập này , hic
Đây là code project ví dụ mới của mình:
Code:private void btnAdd_Click(object sender, EventArgs e) { if (txtMaSP.Text != "" || txtTenSP.Text != "" || txtGiaSP.Text != "" || txtLoaiSP.Text != "") { int indexRow = dtgQLSanPham.RowCount + 2; DataRow row = _dataTable.NewRow(); row["Id"] = indexRow; row["Mã SP"] = txtMaSP.Text; row["Tên SP"] = txtTenSP.Text; row["Loại SP"] = txtLoaiSP.Text; row["Giá SP"] = Convert.ToInt32(txtGiaSP.Text); this._dataTable.Rows.Add(row); dtgQLSanPham.DataSource = this._dataTable; //Lưu dữ liệu vào Database this._conection = new SqlConnection(this.connectionString); this._conection.Open(); string Add = "INSERT INTO dbo.TblSanPham (MaSP, TenSP, GiaSP, LoaiSP, SoLuongNhap) VALUES ('" + txtMaSP.Text + "', '" + txtTenSP.Text + "', ' + Int32.Parse(txtGiaSP.Text) + ', '" + txtLoaiSP.Text + "', ' + Int32.Parse(txtSLNhap.Text) + ')"; //string Add = "INSERT INTO TblSanPham (MaSP, TenSP, GiaSP, LoaiSP, SoLuongNhap) VALUES (N'gk2', N'toán lớp 12', 3500, N'sách giáo khoa', 15)"; //Đã thử với String trên, ứng với các giá trị này thì làm thủ công trong New Query thì thêm vào database thành công nhưng đưa ra đây thì cũng ko thấy động tĩnh gì hết trong database SqlCommand cmd = new SqlCommand(Add, this._conection); cmd.ExecuteNonQuery(); //>> báo lỗi Conversion failed when converting the varchar value ' Int32.Parse(txtGiaSP.Text) ' to data type int. this._conection.Dispose(); this._conection.Close(); MessageBox.Show("Thêm sản phẩm thành công.", "Thong bao"); } else { MessageBox.Show("Chưa có nội dung để thêm vào.", "Thong bao"); txtMaSP.Focus(); } }
C# một phần tất yếu của cuộc sống
Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
<@ Bản đồ dẫn đường - Click here @>
Theo mình, khi bạn sử dụng SqlCommand thì không nên gán các tham số bằng cách cộng chuỗi như thế mà nên sử dụng SqlParamter
Đừng làm ghép chuỗi sql như vạy bạn à -> vừa bị sql injection vừa không đúng format của kiểu biến.
Bạn nghiên cứu chuyển sang prepared statement đi nhé.
Visual C# Code:
// Create the command and set its properties. command.Connection = connection; command.CommandText = "INSERT INTO tblFoo VALUE(@Param1)"; command.CommandType = CommandType.StoredProcedure; // Add the input parameter and set its properties. parameter.ParameterName = "@Param1"; // -> tên của param nhé parameter.SqlDbType = SqlDbType.NVarChar; // -> chỉ dinhd kiểu của param ở đây parameter.Direction = ParameterDirection.Input; // Add the parameter to the Parameters collection. command.Parameters.Add(parameter); // Open the connection and execute the reader. connection.Open(); SqlDataReader reader = command.ExecuteReader();
Bao chàng trai không tiếc tuổi xuân đang viết nhiều chương trình
Em đẹp xinh cũng quyết lập công chưa muốn lấy chồng
http://ipmac.vn/ <- Học lập trình ... sư
http://laptrinh.tv/ <- Kênh chia sẻ video học IT
http://www.youtube.com/user/anhnt3 <- Video thực hành lập trình... sư từ A-Z
Sửa
thànhCode:' + Int32.Parse(txtGiaSP.Text) + ' và ' + Int32.Parse(txtSLNhap.Text) + '
xem được ko bạnCode:" + Int32.Parse(txtGiaSP.Text) + " và " + Int32.Parse(txtSLNhap.Text) + "
Chia sẻ là học hỏi