「已注销」 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

    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝