Это не удобно использовать, потому что в с # нельзя определить переменную, начинающуюся с числа. Добавьте префикс к клавишам.
Или попробуйте:
string json = "
{ daily:[
{ key: '1337990400000', val:443447 },
{ key: '1338076800000', val:444693 },
{ key: '1338163200000', val:452282 },
{ key: '1338249600000', val:462189 },
{ key: '1338336000000', val:466626 }]
}";
public class itemClass
{
public string key; // or int
public int val;
}
public class items
{
public itemClass[] daily;
}
items daily = (new JavascriptSerializer()).Deserialize<items>(json);
Затем вы можете:
var itemValue = items.Where(x=>x.key=='1338163200000').Select(x=>x.val).FirstOrDefault();
Один из вариантов - добавить уникальное ограничение на три столбца в вашей таблице, которые определяют уникальность. Затем попытка вставить повторяющуюся запись должна привести к исключению Java. Но это может привести к сбою всей партии. Если вы хотите другой вариант, вы можете изменить свой запрос следующим образом:
INSERT INTO mytable
SELECT ?, ?, ?
WHERE NOT EXISTS (SELECT 1 FROM mytable
WHERE id = ? AND col2 = ? AND col3 = ?);
К этому запросу вы привязываете значения дважды следующим образом:
preparedStatement.setInt(1, id);
preparedStatement.setString(2, col2);
preparedStatement.setString(3, col3);
preparedStatement.setInt(4, id);
preparedStatement.setString(5, col2);
preparedStatement.setString(6, col3);
Я также нашел другое возможное решение с помощью слияния:
String sqlInsertStub = "MERGE INTO mytable a USING (SELECT ? ID) b " +
"ON (a.ID = b.ID)" +
"WHEN NOT MATCHED " +
"THEN INSERT (ID, COL1, COL2) VALUES(b.ID, ?, ?)";