Pokusavam nesto da vjezbam sa ado i bazama podataka. Ne mogu da natjeram racunar da mi radi update, insert i delete komande. Molim za pomoc gdje grijesim. Koristim Northwind.mdb bazu kao primjer.
Sledece sam do sada uradio:
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.OleDb;
namespace Ucenje_north
{
public partial class Form1 : Form
{
private string cn_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Baze\\Northwind.mdb";
private OleDbConnection cn;
private OleDbCommand select_cmd;
private OleDbCommand update_cmd;
private OleDbCommand delete_cmd;
private OleDbCommand insert_cmd;
private OleDbDataAdapter da;
private DataSet ds;
private DataTable dt;
public Form1()
{
InitializeComponent();
cn = new OleDbConnection(cn_string);
string select_string = "SELECT * FROM Customers";
string update_string = "UPDATE Customers SET CompanyName=?, ContactName=?, ContactTitle=?, Address=?, City=?, Region=?, PostalCode=?, Country=?, Phone=?, Fax=? WHERE CustomerID=?";
string delete_string = "DELETE Customer WHERE CustomerID=?";
string insert_string = "INSERT INTO Customers (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax) VALUES(?,?,?,?,?,?,?,?,?,?,?)";
select_cmd = new OleDbCommand(select_string, cn);
update_cmd = new OleDbCommand(update_string, cn);
delete_cmd = new OleDbCommand(delete_string, cn);
insert_cmd = new OleDbCommand(insert_string, cn);
}
private void ucitajParametre(OleDbCommand cmd)
{
cmd.Parameters.Add("@CustomerID", OleDbType.VarChar);
cmd.Parameters.Add("@CompanyName", OleDbType.VarChar);
cmd.Parameters.Add("@ContactName", OleDbType.VarChar);
cmd.Parameters.Add("@ContactTitle", OleDbType.VarChar);
cmd.Parameters.Add("@Address", OleDbType.VarChar);
cmd.Parameters.Add("@City", OleDbType.VarChar);
cmd.Parameters.Add("@Region", OleDbType.VarChar);
cmd.Parameters.Add("@PostalCode", OleDbType.VarChar);
cmd.Parameters.Add("@Country", OleDbType.VarChar);
cmd.Parameters.Add("@Phone", OleDbType.VarChar);
cmd.Parameters.Add("@Fax", OleDbType.VarChar);
}
private void podesiParametre(OleDbCommand cmd)
{
cmd.Parameters["@CustomerID"].Value = customerIDTextBox.Text;
cmd.Parameters["@CompanyName"].Value = companyNameTextBox.Text;
cmd.Parameters["@ContactName"].Value = contactNameTextBox.Text;
cmd.Parameters["@ContactTitle"].Value = contactTitleTextBox.Text;
cmd.Parameters["@Address"].Value = addressTextBox.Text;
cmd.Parameters["@City"].Value = cityTextBox.Text;
cmd.Parameters["@Region"].Value = regionTextBox.Text;
cmd.Parameters["@PostalCode"].Value = postalCodeTextBox.Text;
cmd.Parameters["@Country"].Value = countryTextBox.Text;
cmd.Parameters["@Phone"].Value = phoneTextBox.Text;
cmd.Parameters["@Fax"].Value = faxTextBox.Text;
}
private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.customersBindingSource.EndEdit();
this.customersTableAdapter.Update(this.dsCustomers.Customers);
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dsCustomers.Customers' table. You can move, or remove it, as needed.
this.customersTableAdapter.Fill(this.dsCustomers.Customers);
}
private void button3_Click(object sender, EventArgs e) //za novi unos
{
customerIDTextBox.Text = "";
companyNameTextBox.Text = "";
contactNameTextBox.Text = "";
contactTitleTextBox.Text = "";
addressTextBox.Text = "";
cityTextBox.Text = "";
regionTextBox.Text = "";
postalCodeTextBox.Text = "";
countryTextBox.Text = "";
phoneTextBox.Text = "";
faxTextBox.Text = "";
}
private void button2_Click(object sender, EventArgs e)
{
customersBindingSource.MoveNext();
}
private void button1_Click(object sender, EventArgs e)
{
customersBindingSource.MovePrevious();
}
private void button6_Click(object sender, EventArgs e) //za update, naravno.
{
cn.Open();
ucitajParametre(update_cmd);
podesiParametre(update_cmd);
try
{
int r = update_cmd.ExecuteNonQuery();
MessageBox.Show(r.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
}
private void button5_Click(object sender, EventArgs e) //za delete
{
cn.Open();
ucitajParametre(delete_cmd);
podesiParametre(delete_cmd);
try
{
int r = delete_cmd.ExecuteNonQuery();
MessageBox.Show(r.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
}
}
}
Poruke koje dobijam su "No value given for one or more parameters."
ili "Syntax error" za delete komandu, nesto nije uredu sa dijelom od Where pa dalje.
Pozdrav svima.
[Dodati code tagovi.]
[Ovu poruku je menjao Shadowed dana 20.10.2008. u 12:40 GMT+1]