Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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
C# c写数据库,一个对象的实例_C# - Fatal编程技术网

C# c写数据库,一个对象的实例

C# c写数据库,一个对象的实例,c#,C#,我正在编写我的第一个c应用程序,它必须连接到数据库。我想将文本框中的数据保存到数据库中,但标记行中有问题 连接到数据库的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace prviTelefonskiImenik { class DatabaseConnection {

我正在编写我的第一个c应用程序,它必须连接到数据库。我想将文本框中的数据保存到数据库中,但标记行中有问题

连接到数据库的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prviTelefonskiImenik
{
    class DatabaseConnection
    {
        private string sql_string;
        private string strCon;
        System.Data.SqlClient.SqlDataAdapter da_1;

        public string Sql
        {
            set { sql_string = value; }
        }

        public string connection_string
        {
            set { strCon = value; }
        }

        public System.Data.DataSet GetConnection
        {
            get 
            { return MyDataSet(); }
        }

        private System.Data.DataSet MyDataSet()
        {
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);

            con.Open();

            da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);

            System.Data.DataSet dat_set = new System.Data.DataSet();
            da_1.Fill(dat_set, "Table_Data_1");
            //da_1.Fill(dat_set, "kontakti");
            con.Close();

            return dat_set;
        }

        public void UpdateDatabase(System.Data.DataSet ds)
        {
            System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1);
            cb.DataAdapter.Update(ds.Tables[0]);
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace prviTelefonskiImenik
{
    public partial class dodajKontakt : Form
    {
        public dodajKontakt()
        {
            InitializeComponent();
        }

        DatabaseConnection objConnect;
        string conString;

        DataSet ds;
        DataRow dRow;

        int MaxRows;
        int inc = 0;

        private void dodajKontakt_Load(object sender, EventArgs e)
        {
            try
            {
                objConnect = new DatabaseConnection();
                conString = Properties.Settings.Default.kontaktiConnectionString;

                objConnect.connection_string = conString;
                objConnect.Sql = Properties.Settings.Default.SQL;

                ds = objConnect.GetConnection;
                MaxRows = ds.Tables[0].Rows.Count;

                NavigateRecords();
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

        private void NavigateRecords()
        {
            dRow = ds.Tables[0].Rows[inc];
            txtIme.Text = dRow.ItemArray.GetValue(1).ToString();
            txtPriimek.Text = dRow.ItemArray.GetValue(2).ToString();
            txtEmso.Text = dRow.ItemArray.GetValue(3).ToString();
            txtTelefon.Text = dRow.ItemArray.GetValue(4).ToString();
            txtEmail.Text = dRow.ItemArray.GetValue(5).ToString();
        }

        private void shrani_Click(object sender, EventArgs e)
        {

            **DataRow row = ds.Tables[0].NewRow();**
            row[1] = txtIme.Text;
            row[2] = txtPriimek.Text;
            row[3] = txtEmso.Text;
            row[4] = txtTelefon.Text;
            row[5] = txtEmail.Text;

            ds.Tables[0].Rows.Add(row);

            try
            {
                objConnect.UpdateDatabase(ds);
                MaxRows = MaxRows + 1;
                inc = MaxRows - 1;
                MessageBox.Show("Database updated");
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }
    }
}
以及将文本框中的数据保存到数据库的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prviTelefonskiImenik
{
    class DatabaseConnection
    {
        private string sql_string;
        private string strCon;
        System.Data.SqlClient.SqlDataAdapter da_1;

        public string Sql
        {
            set { sql_string = value; }
        }

        public string connection_string
        {
            set { strCon = value; }
        }

        public System.Data.DataSet GetConnection
        {
            get 
            { return MyDataSet(); }
        }

        private System.Data.DataSet MyDataSet()
        {
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);

            con.Open();

            da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);

            System.Data.DataSet dat_set = new System.Data.DataSet();
            da_1.Fill(dat_set, "Table_Data_1");
            //da_1.Fill(dat_set, "kontakti");
            con.Close();

            return dat_set;
        }

        public void UpdateDatabase(System.Data.DataSet ds)
        {
            System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1);
            cb.DataAdapter.Update(ds.Tables[0]);
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace prviTelefonskiImenik
{
    public partial class dodajKontakt : Form
    {
        public dodajKontakt()
        {
            InitializeComponent();
        }

        DatabaseConnection objConnect;
        string conString;

        DataSet ds;
        DataRow dRow;

        int MaxRows;
        int inc = 0;

        private void dodajKontakt_Load(object sender, EventArgs e)
        {
            try
            {
                objConnect = new DatabaseConnection();
                conString = Properties.Settings.Default.kontaktiConnectionString;

                objConnect.connection_string = conString;
                objConnect.Sql = Properties.Settings.Default.SQL;

                ds = objConnect.GetConnection;
                MaxRows = ds.Tables[0].Rows.Count;

                NavigateRecords();
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

        private void NavigateRecords()
        {
            dRow = ds.Tables[0].Rows[inc];
            txtIme.Text = dRow.ItemArray.GetValue(1).ToString();
            txtPriimek.Text = dRow.ItemArray.GetValue(2).ToString();
            txtEmso.Text = dRow.ItemArray.GetValue(3).ToString();
            txtTelefon.Text = dRow.ItemArray.GetValue(4).ToString();
            txtEmail.Text = dRow.ItemArray.GetValue(5).ToString();
        }

        private void shrani_Click(object sender, EventArgs e)
        {

            **DataRow row = ds.Tables[0].NewRow();**
            row[1] = txtIme.Text;
            row[2] = txtPriimek.Text;
            row[3] = txtEmso.Text;
            row[4] = txtTelefon.Text;
            row[5] = txtEmail.Text;

            ds.Tables[0].Rows.Add(row);

            try
            {
                objConnect.UpdateDatabase(ds);
                MaxRows = MaxRows + 1;
                inc = MaxRows - 1;
                MessageBox.Show("Database updated");
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }
    }
}
编译时,Visual Studio 2013在此处发现错误:DataRow row=ds.Tables[0].NewRow; 其他信息:对象引用未设置为对象的实例


你能帮我解决一个问题吗?谢谢

当此代码调用时,检查ds.Tables是否不为null

您正面临此问题,因为您的数据集没有表对象,并且您正在对其进行更改。这些是您得到对象引用错误的原因

在对其应用更改之前检查计数

if(ds!= null && ds.Tables.Count> 0)
{
DataRow row = ds.Tables[0].NewRow();
}

编译时没有发现该错误;这是一个运行时错误。该错误是由ds或ds.Tables[0]为null引起的-很可能是前者,因为表不太可能包含null元素。在调用dodajKontakt_Load之前是否调用此代码?的可能副本也不适用于此代码:1。长度在下划线2处。若我使用If语句,所有行都会带下划线;其他信息:对象引用未设置为对象的实例。请提供有关数据库的详细信息,以及此行ds中的内容objConnect.UpdateDatabasedDatabase通常在project中创建。在那个里,我想实际写入数据库,表中存储了什么。你们已经在数据库中创建了表,那个里的所有列是否都可以为空?如果不是,那么如果表中的映射列为null,您也将收到此错误