私はWCF RESTサービスを使用して、私のOracle 12cのDB内ホリデー表に休日のリストを挿入しようとしているとして、JSONオブジェクトのリストを取ります。サービスを実行しているときにエラーは発生していませんが、サービスを実行するとデータが挿入されません。 私は)私のCMDSTRとUpdateHoliday(との問題があると考えています。どんな助けでも大歓迎です。ありがとう。WCF RESTサービスのパラメータ
IService1.cs
public interface IService1
{
[OperationContract()]
[WebInvoke(UriTemplate = "UpdateHoliday", ResponseFormat = WebMessageFormat.Json, Method = "POST")]
void UpdateHoliday(List<Holiday> Holidays);
}
[DataContract]
public class Holiday
{
[DataMember(Order = 0)]
public string HOLIDAY { get; set; }
[DataMember(Order = 1)]
public string DESCRIPTION { get; set; }
public List<Holiday> Holidays { get; set; }
}
public class ListofHoliday
{
[DataMember]
List<Holiday> Holidays { get; set; }
}
Service1.cs
public class Service1 : IService1
{
public void UpdateHoliday(List<Holiday> Holidays)
{
List<ListofHoliday> firstStringList = new List<ListofHoliday>();
string cmdStr = String.Format("INSERT INTO HOLIDAY (HOLIDAY, Description)" +
" VALUES('HOLIDAY','Description')");
foreach (var item in firstStringList)
{
(new DbHelper()).SqlExecute(cmdStr);
}
}
}
DbHelper.cs
class DbHelper
{
private static string ConnectionString
{
get
{
return System.Configuration.ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
}
}
public DataTable GetResultSet(string sql)
{
DataTable dt = new DataTable();
using (OracleDataAdapter da = new OracleDataAdapter(sql, ConnectionString))
{
da.Fill(dt);
}
return dt;
}
public void SqlExecute(string sql)
{
using (OracleCommand cmd = new OracleCommand(sql, new OracleConnection(ConnectionString)))
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
}
私は最終的にそれを動作させるための方法を見つけたことができました。変更は以下の通りです:あなたのサービスのオペレーションでこのコードを試すについて Service1.cs
public class Service1 : IService1
{
public void UpdateHoliday(List<Holiday> Holidays)
{
if (Holidays == null)
throw new ArgumentNullException("Holidays");
foreach (var item in Holidays)
{
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO HOLIDAY (HOLIDAY, DESCRIPTION) VALUES ");
sb.AppendFormat("('{0}', '{1}')",
item.HOLIDAY, item.DESCRIPTION);
//sb.AppendFormat(";");
(new DbHelper()).SqlExecute(sb.ToString());
}
}
}
すべてのエラーインジケータは? –
私は全く何のエラーもありません。私のJsonオブジェクトのリストを送信した後、私が得るのは「応答は空でした」だけです。それがうまくいくと期待される。 :| – user5511576
私はあなたがそのコードでは、しかし、あなたのサービスの操作ループでやろうとしているのか分からない、何も今までに挿入されませんれます。空のリストを作成し、それを反復して、各反復で同じ値を挿入しています。空のリストが評価されるとすぐにforループが壊れます。それはあなたが期待したものですか? –