在插入对象的SQLite数据库空例外

编程入门 行业动态 更新时间:2024-10-26 08:23:00
本文介绍了在插入对象的SQLite数据库空例外的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

林创建一个包含2的EditText领域一个非常基本的片段和一个提交按钮。在提交的值应该被插入一个一行到我的SQLite数据库。结果即时得到一个NullPointerException异常,我只是不明白..

在我的片段IM的onCreateView方法让我的字段值,并建立一个点击监听,是这样的:

查看rootView = inflater.inflate(R.layout.fragment_add_customer,集装箱,FALSE);    客户名称=(EditText上)rootView.findViewById(R.id.editCompanyName);    customerAddress =(EditText上)rootView.findViewById(R.id.editCompanyAddress);    Add按钮=(按钮)rootView.findViewById(R.id.submitCustomerBtn);    addButton.setOnClickListener(新View.OnClickListener(){        @覆盖        公共无效的onClick(查看视图){            字符串sCustomerName = customerName.getText()的toString()。            字符串sCustomerAddress = customerAddress.getText()的toString()。            如果(sCustomerName.trim()长度()方式> 0&放大器;&放大器; sCustomerAddress.trim()长度()方式> 0){                客户客户=新客户();                customer.setName(sCustomerName);                customer.setAddress(sCustomerAddress);                customer.setLocation(未设置);                customer.setImage(无);                顾客= dataSource.createCustomer(客户);                如果(customer.getId()!= 0){                    Toast.makeText(getActivity(),customer.getName()+ID为:+ customer.getId()+被创造!,Toast.LENGTH_LONG).show();                    Log.i(LOGTAG,客户ID为创建+ customer.getId());                }            }其他{                Toast.makeText(getActivity(),请填写所有字段。Toast.LENGTH_LONG).show();            }        }    });    返回rootView;

在我的DataSource类,其中i CONTROLE我的数据库查询和报表IM调用createCustomer方法,它看起来像这样:

公共客户createCustomer(客户的客户){    ContentValues​​值=新ContentValues​​();    values​​.put(BusinessDBOpenHelper.CUSTOMER_NAME,customer.getName());    values​​.put(BusinessDBOpenHelper.CUSTOMER_ADDRESS,customer.getAddress());    values​​.put(BusinessDBOpenHelper.CUSTOMER_LOCATION,customer.getLocation());    values​​.put(BusinessDBOpenHelper.CUSTOMER_IMAGE,customer.getImage());    长insertid = database.insert(BusinessDBOpenHelper.TABLE_CUSTOMER,空,价值);    customer.setId(insertid);    回报客户;}

我的客户模型也只是containg长的ID,字符串名称,地址字符串,字符串位置,字符串图像的getter和setter ..结果空的例外是:

显示java.lang.NullPointerException:尝试调用虚拟方法org.example.app.model.Customer org.example.app.db.BusinessDataSource.createCustomer(org.example.app在一个空对象引用.model.Customer)        在org.example.app.AddCustomerFragment $ 1.onClick(Fragment.java:55)

解决方案

dataSource.createCustomer(客户);

为空,你必须初始化

数据源

地方

Im creating a very basic fragment containing 2 EditText fields and a submit button. On submit the values should be inserted as a row to my SQLite DB. Im getting a NullPointerException i just dont get..

Inside my onCreateView method of the fragment im getting my field values and setting up a click listener like this:

View rootView = inflater.inflate(R.layout.fragment_add_customer, container, false); customerName = (EditText) rootView.findViewById(R.id.editCompanyName); customerAddress = (EditText) rootView.findViewById(R.id.editCompanyAddress); addButton = (Button) rootView.findViewById(R.id.submitCustomerBtn); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String sCustomerName = customerName.getText().toString(); String sCustomerAddress = customerAddress.getText().toString(); if(sCustomerName.trim().length() > 0 && sCustomerAddress.trim().length() > 0) { Customer customer = new Customer(); customer.setName(sCustomerName); customer.setAddress(sCustomerAddress); customer.setLocation("Not set"); customer.setImage("None"); customer = dataSource.createCustomer(customer); if(customer.getId() != 0) { Toast.makeText(getActivity(), customer.getName() + " with id: " + customer.getId() + " was created!", Toast.LENGTH_LONG).show(); Log.i(LOGTAG, "Customer created with id " + customer.getId()); } }else{ Toast.makeText(getActivity(), "Please fill all fields.", Toast.LENGTH_LONG).show(); } } }); return rootView;

Inside my dataSource class where i controle my DB query and statement im calling the createCustomer method, which looks like this:

public Customer createCustomer(Customer customer) { ContentValues values = new ContentValues(); values.put(BusinessDBOpenHelper.CUSTOMER_NAME, customer.getName()); values.put(BusinessDBOpenHelper.CUSTOMER_ADDRESS, customer.getAddress()); values.put(BusinessDBOpenHelper.CUSTOMER_LOCATION, customer.getLocation()); values.put(BusinessDBOpenHelper.CUSTOMER_IMAGE, customer.getImage()); long insertid = database.insert(BusinessDBOpenHelper.TABLE_CUSTOMER, null, values); customer.setId(insertid); return customer; }

My Customer model is also just containg long id, String name, String address, String location, String image with getters and setters.. The null exception is:

java.lang.NullPointerException: Attempt to invoke virtual method 'org.example.app.model.Customer org.example.app.db.BusinessDataSource.createCustomer(org.example.app.model.Customer)' on a null object reference at org.example.app.AddCustomerFragment$1.onClick(Fragment.java:55)

解决方案

Your

dataSource.createCustomer(customer);

is null, you have to initialize

dataSource

somewhere

更多推荐

在插入对象的SQLite数据库空例外

本文发布于:2023-10-25 22:25:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1528287.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对象   数据库   SQLite

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!