J'essaye d'insérer une valeur dans une table en utilisant la commande d'insertion comme indiqué dans le code ci-dessous mais j'obtiens cette erreur "pas toutes les variables liées". J'ai beaucoup essayé mais il est obscurci.Le problème se produit à cmd.executenonquery.Toute aide serait appréciée.
Code c #
[WebMethod]
public static void SaveUser(User user)
{
String connectionString = ConfigurationManager.ConnectionStrings["conndbprodnew"].ConnectionString;
using (OracleConnection con = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand("INSERT INTO par_cinfo(Product_Id,CUSTOMER_NAME,CITY,CDATE) VALUES (:Product_Id,:CUSTOMER_NAME,:CITY,:CDATE)", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("CUSTOMER_NAME", user.CUSTOMER_NAME);
cmd.Parameters.AddWithValue("CITY", user.CITY);
cmd.Parameters.AddWithValue("CDATE", user.CDATE);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
public class User
{
public decimal Product_Id { get; set; }
public string CUSTOMER_NAME { get; set; }
public string CITY { get; set; }
public DateTime CDATE { get; set; }
}
Jquery sur clic sur le bouton
<script type="text/javascript">
$(document).ready(function () {
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var date = new Date();
var val = date.getDate() + "-" + monthNames[date.getMonth()] + "-" + date.getFullYear();
$("#Label2").text(val);
});
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script>
<script type="text/javascript">
$(function () {
$("[id*=Button3]").bind("click", function () {
var user = {};
user.Product_Id = 1;
user.CUSTOMER_NAME = $("[id*=TextBox2]").val();
user.City = $("[id*=TextBox3]").val();
user.cdate = $("[id*=Label2]").text();
$.ajax({
type: "POST",
url: "Default.aspx/SaveUser",
data: '{user: ' + JSON.stringify(user) + '}',
//data: JSON.stringify({user:user}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("User has been added successfully.");
window.location.reload();
}
});
return false;
});
});
</script>
</script>
Le tableau que j'ai créé dans oracle est le suivant simplement pour entrer les données dans le tableau
Create table par_cinfo
(
Product_Id NUMBER(10) NOT NULL PRIMARY KEY,
CUSTOMER_NAME VARCHAR2(10 BYTE) NOT NULL,
CITY VARCHAR2(10 BYTE) NOT NULL,
CDATE DATE
)
3 réponses
Tout d'abord, lorsque vous déclarez une variable dans votre commande SQL, utilisez @
et non :
:
using (OracleCommand cmd = new OracleCommand("INSERT INTO par_cinfo(Product_Id,CUSTOMER_NAME,CITY,CDATE) VALUES (@Product_Id,@CUSTOMER_NAME,@CITY,@CDATE)", con))
Deuxièmement, dans votre commande SQL INSERT
, vous déclarez un paramètre appelé Product_Id
mais vous ne l'avez jamais ajouté à votre cmd.Parameters
. Vous devez donc ajouter:
cmd.Parameters.AddWithValue("Product_Id", user.Product_Id);
Fournissez le paramètre pour Product_Id
. S'il s'agit d'une colonne d'identité, supprimez le nom de champ de votre commande elle-même.
using (OracleCommand cmd = new OracleCommand("INSERT INTO par_cinfo(CUSTOMER_NAME,CITY,CDATE) VALUES (@CUSTOMER_NAME,@CITY,@CDATE)", con)
Où est le paramètre de Product_Id ??
Ajoutez ceci dans votre code
cmd.Parameters.AddWithValue("Product_Id", user.Product_Id);
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.