「已注销」 2016-06-27 02:29 采纳率: 0%
浏览 1126

关于SQL语句 贴出代码求解决问题 彻底懵了。。。

public class Cloud implements Runnable {
SQLiteDatabase db;
private final String DATABASE_PATH = "/storage/sdcard0/Upan";
private String DATABASE_FILENAME = "song.db";
private String PATH = "*************";

@Override
public void run() {
    String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
    db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
    db.execSQL("DROP TABLE IF EXISTS minfo");
    db.execSQL("CREATE TABLE minfo (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");


    ContentValues cv2 = new ContentValues();
    cv2.put("ver", 6);
    cv2.put("name", "ooom");
    db.insert("minfo", null, cv2);
    ContentValues cv3 = new ContentValues();
    cv3.put("ver", 40);
    cv3.put("name", "ognm");
    db.insert("minfo", null, cv3);
    ContentValues cv4 = new ContentValues();
    cv4.put("ver", 22);
    cv4.put("name", "fake");
    db.insert("minfo", null, cv4);


    seventeen();

}
     public void seventeen() {
    String input = "17";
    try {
        URL url = new URL(PATH + input);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(5000);
        connection.setReadTimeout(8000);
        connection.setRequestMethod("GET");
        connection.setUseCaches(false);
        connection.setDoOutput(true);
        connection.setDoInput(true);
        OutputStream outputStream = connection.getOutputStream();
        outputStream.flush();
        connection.getResponseCode();

        InputStream in = connection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        StringBuilder response = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        Log.i("返回的数据是 ", response.toString());
        try {

            JSONObject obj = new JSONObject(response.toString());
            JSONArray arr = obj.getJSONArray("info");
            for (int i = 0; i < arr.length(); i++) {
                JSONObject subObj = arr.getJSONObject(i);
                String id = subObj.getString("id");
                String name = subObj.getString("name");
                String ver = subObj.getString("ver");
                Log.i("解析后的数据 ", "id=" + id + ",name=" + name + ",ver=" + ver);
            }

            // db.execSQL("insert into minfo select * from info");
            new Thread(new Runnable() {
                @Override
                public void run() {
                    db.execSQL("DROP TABLE minfo");
                 //   db.execSQL("INSERT INTO minfo SELECT * FROM info ");
                    db.execSQL("CREATE TABLE minfo as SELECT * FROM info ");
               //     db.execSQL("CREATE TABLE minfo SELECT * FROM info");
                    Cursor c = db.rawQuery("SELECT * FROM  minfo", null);
                    while (c.moveToNext()) {
                        String w = c.getString(c.getColumnIndex("WordNum"));
                        String p = c.getString(c.getColumnIndex("PyCode"));
                        String songname = c.getString(c.getColumnIndex("name"));
                        int id = c.getInt(c.getColumnIndex("id"));
                        int ver = c.getInt(c.getColumnIndex("ver"));
                        Log.i("本地数据库minfo表中的数 ", "id=" + id + ",name=" + songname + ",ver=" + ver + ",WordNum=" + w + ",PyCode=" + p);
                    }
                }
            }).start();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    } catch (IOException e) {
        e.printStackTrace();

    }

如果我db.execSQL("DROP TABLE minfo");db.execSQL("CREATE TABLE minfo as SELECT * FROM info ");的话都出来的数据是:
id=1,name=aaaa,ver=6,WordNum=6,PyCode=KD
本地数据库minfo表中的数: id=2,name=ooom,ver=6,WordNum=null,PyCode=null
本地数据库minfo表中的数: id=3,name=ognm,ver=40,WordNum=null,PyCode=null本地数据库minfo表中的数: id=4,name=fake,ver=22,WordNum=null,PyCode=null
本地数据库minfo表中的数: id=5,name=xx,ver=23,WordNum=null,PyCode=null
本地数据库minfo表中的数: id=6,name=xx,ver=23,WordNum=null,PyCode=null

然而info表中的数据是
id=1,name=1111xxx,ver=132
id=5,name=xx,ver=23

要是我把db.execSQL("CREATE TABLE iinfo as SELECT * FROM info ");中的as去掉 会报错SELECT语法错误。。请问是怎么回事》还有就是如果我 db.execSQL("INSERT INTO iinfo SELECT * FROM info ")会报错table iinfo has 3 columns but 25 values were supplied
求帮忙解决这两个问题呀~~~有点慌.........

  • 写回答

1条回答 默认 最新

  • yicp123 2016-06-27 03:39
    关注

    1.要使用insert into table1 select * from table2,必须注意,这两个表的表结构一致,否者就得指定插入表及选择表的字段:
    insert into table1(column1) select column1 from table2;
    2.使用create table table1 select * from table2,必须注意,所创建的表table1与table2一模一样,可以理解为table1是table2的复制。

    参考自:
    MySQL insert用法详解 http://www.data.5helpyou.com/article421.html

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集