我是LinkedHashMap的新手。
现在我有一些像LinkedHashMap的数据 -
article_ID=386247568292, author_externalId=235697849816687, author_fbid=235697849816687, ...
现在这是我的db entry代码
public void InsertEntry(LinkedHashMap<String, Object> entMap) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
conn = pool.getConnection();
String sql="INSERT into socialmedia(article_ID,author_externalId, author_fbid)"
+ "VALUES(?,?,?)";
pstmt = conn.prepareStatement(sql);
现在我怎么能将My LinkedHashMap值输入到字符串中,以便我可以将所有这些值输入到数据库中。
我不想使用任何Bean。
答案 0 :(得分:1)
// either you loop thru the entries
Set<String> keys = entMap.keySet();
int param = 1;
for(String k:keys) {
pstmt.setString( (param++), (String)entMap.get(k) );
}
or
// if you prefer use the key names, e.g.
String aid = (String) entMap.get("article_ID");
请记住,您将以顺序获取LinkedHashMap中的值。。
您必须确保始终按此顺序。
解决方案可能是您检查密钥(按名称)并确定它是否是您期望的订单/类型,以使您的解决方案更加稳固。并确保将通过setString,setInt等处理这些值。
来自 PreparedStatement 规范:
用于设置IN参数值的setter方法(
setShort
,setString
等)必须指定与输入参数的已定义SQL类型兼容的类型。 例如,如果IN参数的SQL类型为INTEGER,则应使用方法setInt
。
现在,在所有数据库服务器/ jdbc驱动程序中,这可能不是那么严格,但值得一提的是插入是否失败。
答案 1 :(得分:0)
应该有用......
public void InsertEntry(LinkedHashMap<String, Object> entMap) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
conn = pool.getConnection();
String sql="INSERT into socialmedia(user_name,article_count,epoch,description,authorId,article_url,publish_date,harvest_date,following,followers,updates,sentiment)"
+ "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
Set keys = entmap.keySet();
int rowId=1;
for(String key : keys)
{
String val = entMap.get(key);
pstmt.setString(rowId,val);
rowId++;
}
pstmt.executeUpdate();
}
如果您有任何疑问,请与我们联系。
答案 2 :(得分:0)
谢谢大家的回复。我这样做了 -
String sql = "INSERT INTO students(article_ID, description_charset, author_appScopedId, author_externalId) values(?,?,?,?);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, (String) entMap.get("article_ID"));
pstmt.setString(2, (String) entMap.get("description_charset"));
pstmt.setString(3, (String) entMap.get("author_appScopedId"));
pstmt.setString(4, (String) entMap.get("author_externalId"));
pstmt.executeUpdate();