【问题标题】:Android Studio jTDS java.lang.NullPointerException java.sql.Statement java.sql.Connection.createStatement() on a null object reference空对象引用上的 Android Studio jTDS java.lang.NullPointerException java.sql.Statement java.sql.Connection.createStatement()
【发布时间】:2021-12-24 03:21:43
【问题描述】:

我正在尝试创建一个连接到 Microsoft SQL Server 的应用程序,并将一些数据添加到一个表(供应商)中,但它一直拒绝我与服务器的连接。我只为这个数据库创建了一个用户和一个密码。我正在使用 MacBook,而服务器在另一台 Windows PC 上,但我认为这不是它无法正常工作的原因。对于ip,我使用了我在cmd中编写ipconfig时找到的IPv4。

这是代码:

public class connectClass {
    private Connection connection;

    public Connection connectClass(){
        String ip = "won't put it here for obvious reasons";
        String user = "android";
        String password = "android";
        String port = "1433";
        String database = "dbExemplu";
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        try{
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            String sirUrl = "jdbc:jtds:sqlserver://" + ip + ":" + port + ";" + "databasename=" + database
                    + ";user=" + user + ";password=" + password + ";";
            connection = DriverManager.getConnection(sirUrl);
        } catch (ClassNotFoundException e) {
            Log.e("Error", e.getException() + " " + e.getMessage());
        } catch (SQLException e) {
            Log.e("Error", e.getMessage());
        }
        return connection;
    }
}

public class MainActivity extends AppCompatActivity {
    private Button btn1;
    private EditText txtCode, txtName, txtPhone;
    private Vendor vendor;
    private Collections cols = new Collections();
    private Connection connection;

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtCode = findViewById(R.id.codeVendor);
        txtName = findViewById(R.id.nameVendor);
        txtPhone = findViewById(R.id.phoneVendor);

        btn1 = findViewById(R.id.saveVendor);

        connectClass connect = new connectClass();
        connection = connect.connectClass();

btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                vendor = new Vendor();
                vendor(txtCode.getText().toString());
                vendor.setName(txtName.getText().toString());
                vendor.setPhone(txtPhone.getText().toString());
                cols.vendors.add(vendor);
                addVendor(vendor.getCode().toString(), vendor.getName().toString(), vendor.getPhone().toString);
}
});

        void addVendor(String code, String name, String phone) {
        Statement st;
        String s;
        try {
            st = connection.createStatement();
            s = "insert into Furnizori values ('" + code + "'" + ",'" + name + "','" + phone + "')";
            st.executeUpdate(s);

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
        }
    }
}

【问题讨论】:

    标签: java android sql-server


    【解决方案1】:

    我想通了。我的 SQL Server 身份验证设置为仅 Windows 身份验证,我必须将其设置为 SQL Server 身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 2021-05-04
      • 2015-03-10
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多