Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列计数不为';插入mysql时,第1行的值计数不匹配_Java_Mysql - Fatal编程技术网

Java 列计数不为';插入mysql时,第1行的值计数不匹配

Java 列计数不为';插入mysql时,第1行的值计数不匹配,java,mysql,Java,Mysql,我试图在表名、电子邮件和密码中插入三个值(我知道我没有对此进行哈希运算,我只是先测试它是否有效)。它告诉我列数不匹配,但名称和列数确实匹配,我不知道会出现什么问题 这是主要活动 package ie.example.artur.adminapp; import android.os.AsyncTask; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import andr

我试图在表名、电子邮件和密码中插入三个值(我知道我没有对此进行哈希运算,我只是先测试它是否有效)。它告诉我列数不匹配,但名称和列数确实匹配,我不知道会出现什么问题

这是主要活动

package ie.example.artur.adminapp;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class MainActivity extends AppCompatActivity {


    EditText editTextName,editTextEmail,editTextPassword;
    TextView textView;
    private static final String DB_URL = "jdbc:mysql://192.168.1.6/socialmedia_website";
    private static final String USER = "zzz";
    private static final String PASS = "zzz";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        textView = (TextView) findViewById(R.id.textView);
        editTextName = (EditText) findViewById(R.id.editTextName);
        editTextEmail = (EditText) findViewById(R.id.editTextEmail);
        editTextPassword = (EditText) findViewById(R.id.editTextPassword);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    public void btnConn(View view) {
        Send objSend = new Send();
        objSend.execute("");


    }

    private class Send extends AsyncTask<String, String, String>

    {
        String msg = "";
        String name = editTextName.getText().toString();
        String email = editTextEmail.getText().toString();
        String password = editTextPassword.getText().toString();

        @Override
        protected void onPreExecute() {
            textView.setText("Please Wait Inserting Data");
        }

        @Override
        protected String doInBackground(String... strings) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
                if (conn == null) {
                    msg = "Connection goes wrong";
                } else {
                String query = "Insert INTO test1 (name,email,password) VALUES('"+name+","+email+","+password+"')";
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(query);
                msg = "Inserting Successful!!";

            }

                conn.close();

        }

        catch(
        Exception e
        )

        {
            msg = "Connection goes Wrong";
            e.printStackTrace();

        }

        return msg;


    }



@Override
    protected void onPostExecute(String msg) {textView.setText(msg);}



    }




}
包ie.example.artur.adminapp;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.view.view;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.Statement;
公共类MainActivity扩展了AppCompatActivity{
EditText editTextName、editTextEmail、editTextPassword;
文本视图文本视图;
私有静态最终字符串DB_URL=“jdbc:mysql://192.168.1.6/socialmedia_website";
私有静态最终字符串USER=“zzz”;
私有静态最终字符串传递=“zzz”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u寄存器);
textView=(textView)findViewById(R.id.textView);
editTextName=(EditText)findViewById(R.id.editTextName);
editTextEmail=(EditText)findViewById(R.id.editTextEmail);
editTextPassword=(EditText)findViewById(R.id.editTextPassword);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Snackbar.make(查看“替换为您自己的操作”,Snackbar.LENGTH\u LONG)
.setAction(“Action”,null).show();
}
});
}
公共无效BTNCON(视图){
Send objSend=new Send();
objSend.execute(“”);
}
私有类发送扩展异步任务
{
字符串msg=“”;
字符串名称=editTextName.getText().toString();
字符串email=editTextEmail.getText().toString();
字符串密码=editTextPassword.getText().toString();
@凌驾
受保护的void onPreExecute(){
setText(“请等待插入数据”);
}
@凌驾
受保护的字符串背景(字符串…字符串){
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
Connection conn=DriverManager.getConnection(DB_URL,USER,PASS);
如果(conn==null){
msg=“连接出错”;
}否则{
String query=“插入test1(名称、电子邮件、密码)值(“+name+”、“+email+”、“+password+”)”;
语句stmt=conn.createStatement();
stmt.executeUpdate(查询);
msg=“插入成功!!”;
}
康涅狄格州关闭();
}
抓住(
例外情况e
)
{
msg=“连接出错”;
e、 printStackTrace();
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串msg){textView.setText(msg);}
}
}
phpmyadmin中数据库中的表:

错误: 行:

String query = "Insert INTO test1 (name,email,password) VALUES('" + name+email+password+"')";
实际上应该是:

String query = "Insert INTO test1 (name,email,password) VALUES('" + name+"','"+email+"','"+password+"')";
您只插入了一个值,这是name+email+password的值的串联,而实际上您要插入三个单独的值

当您写入“Insert INTO test1(name,email,password)”时,这意味着您将在“test1”中插入3个值,每个值对应于“(name,email,password)”指定的列。但是,因为您将名称+电子邮件+密码连接在一起,所以只插入了一个值(连接的结果),而不是三个单独的值。打印出“查询”字符串,您将很快掌握差异。

行:

String query = "Insert INTO test1 (name,email,password) VALUES('" + name+email+password+"')";
实际上应该是:

String query = "Insert INTO test1 (name,email,password) VALUES('" + name+"','"+email+"','"+password+"')";
您只插入了一个值,这是name+email+password的值的串联,而实际上您要插入三个单独的值


当您写入“Insert INTO test1(name,email,password)”时,这意味着您将在“test1”中插入3个值,每个值对应于“(name,email,password)”指定的列。但是,因为您将名称+电子邮件+密码连接在一起,所以只插入了一个值(连接的结果),而不是三个单独的值。打印出“query”字符串,您将很快理解其中的差异。

您的查询会导致逗号(“,”)错误,空格请尝试上面的代码

 String query = "Insert INTO test1 (name,email,password) VALUES('"+name+","+email+","+password+"')";
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(query);
                msg = "Inserting Successful!!";
 String query= "Insert into table (name,email,password) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, name);
   st.setString(2, email); 
   st.setString(3, password);
现在,使用准备好的语句尝试使用上述代码

 String query = "Insert INTO test1 (name,email,password) VALUES('"+name+","+email+","+password+"')";
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(query);
                msg = "Inserting Successful!!";
 String query= "Insert into table (name,email,password) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, name);
   st.setString(2, email); 
   st.setString(3, password);

您的查询会导致逗号(“,”)和空格错误,请尝试上面的代码

 String query = "Insert INTO test1 (name,email,password) VALUES('"+name+","+email+","+password+"')";
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(query);
                msg = "Inserting Successful!!";
 String query= "Insert into table (name,email,password) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, name);
   st.setString(2, email); 
   st.setString(3, password);
现在,使用准备好的语句尝试使用上述代码

 String query = "Insert INTO test1 (name,email,password) VALUES('"+name+","+email+","+password+"')";
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(query);
                msg = "Inserting Successful!!";
 String query= "Insert into table (name,email,password) Values(?,?,?)";
   Statement st = conn.preparedStatement(query);
   st.setString(1, name);
   st.setString(2, email); 
   st.setString(3, password);

您是否可以尝试在此处添加分隔的值,并将其插入test1(名称、电子邮件、密码)值(““+name+email+password+”)“。在这里,它将作为一个单独的值。您不应该用逗号分隔查询中的值吗?@Raghavendra是的,我可以添加一个值,但我要添加三个值。您正在对三列传递一个值。尝试用逗号分隔值。@请检查单引号。复制并粘贴废弃答案并尝试在此处添加分隔的值插入test1(名称、电子邮件、密码)值(“+name+email+password+”)”。在此处它将作为单个值。您不应该用逗号分隔查询中的值吗?@Raghavendra是的,我可以添加一个值,但我要添加三个值您是p