错误!你调用的对象是空的! [英] Error! Object reference not set to an instance of an object!

查看:332
本文介绍了错误!你调用的对象是空的!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我在项目窗体上有一个DataGridView.
第一步;我可以从.csv文件传输到DataGridView.我用openFileDialog选择.csv文件.并将数据从.csv文件传输到dataGridViw.
而且还可以.我可以做的第一步.

第二步;我想根据C#中datagridview上的数据在数据库上创建一个新表.

因此,我想将数据从DataGridView导入到Sql Server.

我写了一些东西,但有一个错误.

错误消息是:

对象引用未设置为对象的实例
空引用异常未处理

在这条线上:

Hi,

I have a DataGridView on form of my project.
First step; I can transfer from .csv files to DataGridView. I choose .csv file with openFileDialog. And data transfer from .csv files to dataGridViw.
And It is okay. I can do first step.

Second step; i want to create a new table on my Database according to data on my datagridview in C#.

So, I want to import my data from DataGridView to Sql Server.

I wrote something but i have an error.

Error message is:

object reference not set to an instance of an object
null reference exception was unhandled

on this line:

string valueData = dataGridViewScanner.Rows[i].Cells[j].Value.ToString();





有人可以检查我的代码吗?
谢谢.






Could someone check my code please?
Thank you.


<pre lang="c#">  private void btnTransferSqlFromDataGrid_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConn = new SqlConnection();
            string connStr = "Data Source=PCSELIN;Initial Catalog=OptimaHucreVerileriIzlemeProjesi;Integrated Security=True";

            sqlConn.ConnectionString = connStr;
            sqlConn.Open();

            ArrayList aList = new ArrayList();
            
           //string tableName = Microsoft.VisualBasic.Interaction.InputBox("Database''de oluşturmak istediğiniz tablo adını giriniz");
            //for (int i = 0; i < dataGridViewScanner.Rows.Count; i++ ) {
            string tableName = txtTableName.Text;
  for (int i = 0; i < dataGridViewScanner.Rows.Count; i++)
                {

                    for (int j = 0; j < dataGridViewScanner.Rows[i].Cells.Count; j++)
                    {
                        string valueData = dataGridViewScanner.Rows[i].Cells[j].Value.ToString();
                        aList.Add(valueData);
                    }
                }
                 ClsInsertDatabase ins = new ClsInsertDatabase();
                     ins.insertData(aList,tableName);                
             }
                 }
        }





public void insertData(ArrayList aList,string table) {
            SqlConnection sqlConn = new SqlConnection();
            sqlConn.ConnectionString = "Data Source=PCSELIN;Initial Catalog=OptimaHucreVerileriIzlemeProjesi;Integrated Security=True";
            sqlConn.Open();
 string degiskenBildirimi = "";

            for (int i = 0; i < aList.Count - 1;i++ ) {

                if (i == 0)
                {
                    degiskenBildirimi += "@" + (i+1);
                }
                else {
                    degiskenBildirimi += ",@" + (i+1); 
                    }
                  }
            string tableName = Path.GetFileName(table);

            string sqlCmdCreate = "Create table "+ tableName +" Values("+ degiskenBildirimi +")";
            SqlCommand sqlCmd = new SqlCommand(sqlCmdCreate, sqlConn);
<pre lang="cs">for (int j = 0; j < aList.Count - 1;j++ ) {

                string etIsareti = "@";

                SqlParameter sqlParam = new SqlParameter();
                //this[j]=
                sqlCmd.Parameters.Add(new SqlParameter(etIsareti, aList.Add(j)));


            }
            try
            {
                sqlCmd.ExecuteNonQuery();

                MessageBox.Show("Veri başarıyla transfer edilmiştir.");

            }
            catch (Exception ex)
            {
                MessageBox.Show("Source : " + sqlCmd.ToString() + "Exception : " + ex.Message);
            }
            finally {
                sqlCmd.Dispose();
            }
 }

推荐答案

尝试一下:
http://www.c-sharpcorner.com/blogs/8387/insert-data-from-gridview-to-database.aspx [
try this:
http://www.c-sharpcorner.com/blogs/8387/insert-data-from-gridview-to-database.aspx[^]


尝试
http://www.c-sharpcorner .com/uploadfile/ankurmee/import-data-from-excel-to-datagridview-in-C-Sharp/ [ http://vb.net-informations.com/datagridview/vb.net_datagridview_import.htm [ ^ ]

视频此处 [
Try
http://www.c-sharpcorner.com/uploadfile/ankurmee/import-data-from-excel-to-datagridview-in-C-Sharp/[^]
http://vb.net-informations.com/datagridview/vb.net_datagridview_import.htm[^]

A video here[^].


Hii,
执行此查询(strTable)以在数据库中创建表,
Hii,
excute this query(strTable) to create a table in database,
protected void btnSave_Click(object sender, EventArgs e)
    {
        string strTable = "CREATE TABLE tblTest (";
        for (int i = 0; i < gvTest.Columns.Count; i++)
        {
            strTable += gvTest.Columns[i].HeaderText + " VARCHAR(MAX),";
        }
        strTable = strTable.Substring(0, strTable.Length - 1) + ")";
    }



您可以使用如下所示的foreach循环逐行插入



and you can insert row by row by using foreach loop like below

foreach (GridViewRow row in gvCSV.Rows)
{
    //excute insert query
}


这篇关于错误!你调用的对象是空的!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆