Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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#_Database - Fatal编程技术网

第二次单击后,C#不会保存到数据库

第二次单击后,C#不会保存到数据库,c#,database,C#,Database,所以我的程序正常工作。单击“保存”按钮时,所有内容都保存到数据库中。但是,当我第二次单击“保存”按钮时,该按钮无法工作。索引超出了数组的边界。是private void btnTest_click on line string Ullage=splitstring[2]中的错误 private void btnSave_Click(object sender, EventArgs e) { OleDbConnection conn = new OleDbConnect

所以我的程序正常工作。单击“保存”按钮时,所有内容都保存到数据库中。但是,当我第二次单击“保存”按钮时,该按钮无法工作。索引超出了数组的边界。是private void btnTest_click on line string Ullage=splitstring[2]中的错误

  private void btnSave_Click(object sender, EventArgs e)
    {
        OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\2014-06-26 TEK687 Config Tool\TEK687 Config Tool\bin\Debug\Results.mdb");

        string SqlString = "insert into Table1  (PassOrFail,DateTested,TekNum,BatchNum,WeekNum,Serial,FirmwareVer,HardwareVer,TestPC,SettingsTest,Deleted,Ullage,SRC,Vbatt,Tamb,Ullage2,SRC2,Vbatt2,Tamb2) Values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

        using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
        {
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.AddWithValue("PassOrFail", txtPassFail.Text);
            cmd.Parameters.AddWithValue("DateTested", txtDateTested.Text);
            cmd.Parameters.AddWithValue("TekNum", txtTekPartNo.Text);
            cmd.Parameters.AddWithValue("BatchNum", txtBatchNumber.Text);
            cmd.Parameters.AddWithValue("WeekNum", txtWeekYearNo.Text);
            cmd.Parameters.AddWithValue("Serial", txtSerialNumber.Text);
            cmd.Parameters.AddWithValue("FirmwareVer", txtFirmwareVer.Text);
            cmd.Parameters.AddWithValue("HardwareVer", txtHardwareVer.Text);
            cmd.Parameters.AddWithValue("TestPC", txtTestPC.Text);
            cmd.Parameters.AddWithValue("SettingsTest", cboSettingsProfiles.SelectedIndex);
            cmd.Parameters.AddWithValue("Deleted", txtDeleted.Text);
            cmd.Parameters.AddWithValue("Ullage", txtUllage1.Text);
            cmd.Parameters.AddWithValue("SRC", txtSRC1.Text);
            cmd.Parameters.AddWithValue("Vbatt", txtVbatt1.Text);
            cmd.Parameters.AddWithValue("Tamb", txtTamb1.Text);
            cmd.Parameters.AddWithValue("Ullage2", txtUllage2.Text);
            cmd.Parameters.AddWithValue("SRC2", txtSRC2.Text);
            cmd.Parameters.AddWithValue("Vbatt2", txtVbatt2.Text);
            cmd.Parameters.AddWithValue("Tamb2", txtTamb2.Text);


            conn.Open();
            cmd.ExecuteNonQuery();
            MessageBox.Show("Data stored successfully");
        }

        ClearTextBoxes(this);
    }

下面是向数据库添加值的代码错误位于string Ullage=splitstring[2]

 private void btnTest_Click(object sender, EventArgs e)
    {
        Cancel = false;
        if (DiscoverDevice(false) == false)
        {
            MessageBox.Show("Error, device is not responding");
            return;
        }

        string servo = "";
        MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse("TL,S," + txtToolID.Text + ",30,\r\n", "\r\n", 4, ref servo, 500);

        string test = "";
        MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse("TL,T," + txtToolID.Text + "\r\n", "\r\n", 4, ref test, 500);

        string[] splitstring = test.Split(',');
        **string Ullage = splitstring[2];**
        string SRC = splitstring[3];
        string RSSI = splitstring[4];
        string AlarmStatus = splitstring[5];
        string RateofChange = splitstring[6];
        string Tamb = splitstring[7];
        string Vbatt = splitstring[8];

        Ullage = Ullage.Replace("u:", "");
        Tamb = Tamb.Replace("t:", "");
        Vbatt = Vbatt.Replace("v:", "");
        int Ull = Convert.ToInt32(Ullage);
        int src = Convert.ToInt32(SRC);
        int BV = Convert.ToInt32(Vbatt);
        int temp = Convert.ToInt32(Tamb);

        StringBuilder sb = new StringBuilder();
        sb.Append(Ull);
        txtUllage1.Text += sb.ToString();
        StringBuilder sc = new StringBuilder();
        sc.Append(src);
        txtSRC1.Text += sc.ToString();
        StringBuilder sd = new StringBuilder();
        sd.Append(BV);
        txtVbatt1.Text += sd.ToString();
        StringBuilder se = new StringBuilder();
        se.Append(temp);
        txtTamb1.Text += se.ToString();
        StringBuilder sm = new StringBuilder();


        if ((Ull < 11) || (Ull > 13) || (src < 9) || (BV < 29))
        {
            txtPassFail.Text += "12cm FAIL";
              txtResultsReading.Font = new Font(txtResultsReading.Font, FontStyle.Bold);
            StringBuilder th = new StringBuilder();
               th.Append("12cm FAIL");
              txtResultsReading.Text += th.ToString();
        }

        string servoTwo = "";
        MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse("TL,S," + txtToolID.Text + ",31,\r\n", "\r\n", 4, ref servoTwo, 500);
        string tests = "";
        MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse("TL,T," + txtToolID.Text + "\r\n", "\r\n", 4, ref tests, 500);



        string[] splitstrings = tests.Split(',');
        string Ullage2 = splitstrings[2];
        string SRC2 = splitstrings[3];
        string RSSI2 = splitstrings[4];
        string AlarmStatus2 = splitstrings[5];
        string RateofChange2 = splitstrings[6];
        string Tamb2 = splitstrings[7];
        string Vbatt2 = splitstrings[8];

        Ullage2 = Ullage2.Replace("u:", "");
        Tamb2 = Tamb2.Replace("t:", "");
        Vbatt2 = Vbatt2.Replace("v:", "");
        int Ull2 = Convert.ToInt32(Ullage2);
        int src2 = Convert.ToInt32(SRC2);
        int BV2 = Convert.ToInt32(Vbatt2);
        int temp2 = Convert.ToInt32(Tamb2);

        StringBuilder sf = new StringBuilder();
        sf.Append(Ull2);
        txtUllage2.Text += sf.ToString();
        StringBuilder sg = new StringBuilder();
        sg.Append(src2);
        txtSRC2.Text += sg.ToString();
        StringBuilder sh = new StringBuilder();
        sh.Append(BV2);
        txtVbatt2.Text += sh.ToString();
        StringBuilder si = new StringBuilder();
        si.Append(temp2);
        txtTamb2.Text += si.ToString();


        txtDateTested.Text = DateTime.Now.ToString();
        txtTestPC.Text = System.Environment.UserName;
        //boSettingsProfiles.Text= Settings.SettingsFile;
        txtDeleted.Text = "CURRENT";

        if ((Ull < 11) || (Ull > 13) || (src < 9) || (BV < 29))
        {

            txtPassFail.Text += "  3M FAIL";
            txtResultsReading.Font = new Font(txtResultsReading.Font, FontStyle.Bold);
            StringBuilder tg = new StringBuilder();
            tg.Append(Environment.NewLine);
            tg.Append("3M FAIL");
            txtResultsReading.Text += tg.ToString();
        }
        else if ((Ull >= 11) && (Ull <= 13) && (src == 9) && (BV >= 29) &&
            (Ull2 >= 11) && (Ull2 <= 13) && (src2 == 9) && (BV2 >= 29))
        {
            txtPassFail.Text += "PASS";
            txtResultsReading.Font = new Font(txtResultsReading.Font, FontStyle.Bold);
            txtResultsReading.Text += "PASS";
        }
        ReleaseDevice();//release the config tool after config is completed
    }
}
private void btnTest\u单击(对象发送方,事件参数e)
{
取消=假;
如果(发现设备(错误)=错误)
{
MessageBox.Show(“错误,设备没有响应”);
返回;
}
字符串伺服=”;
MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse(“TL,S,+txtToolID.Text+”,30,\r\n“,“\r\n”,4,ref伺服,500);
字符串测试=”;
MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse(“TL,T,+txtToolID.Text+”\r\n“,“\r\n”,4,ref test,500);
string[]splitstring=test.Split(',');

**字符串损耗=拆分字符串[2]** string SRC=splitstring[3]; 字符串RSSI=拆分字符串[4]; 字符串AlarmStatus=splitstring[5]; string RateofChange=拆分字符串[6]; 字符串Tamb=splitstring[7]; 字符串Vbatt=拆分字符串[8]; 空距=空距。替换(“u:,”); Tamb=Tamb.Replace(“t:,”); Vbatt=Vbatt.Replace(“v:,”); int Ull=转换为32(空距); int src=Convert.ToInt32(src); int BV=转换为32(Vbatt); int temp=转换为NT32(Tamb); StringBuilder sb=新的StringBuilder(); 某人附加(Ull); txtUllage1.Text+=sb.ToString(); StringBuilder sc=新的StringBuilder(); sc.Append(src); txtSRC1.Text+=sc.ToString(); StringBuilder sd=新的StringBuilder(); sd.Append(BV); txtVbatt1.Text+=sd.ToString(); StringBuilder se=新的StringBuilder(); 附加(临时); txtTamb1.Text+=se.ToString(); StringBuilder sm=新的StringBuilder(); 如果((Ull<11)| |(Ull>13)| |(src<9)| |(BV<29)) { txtPassFail.Text+=“12cm失败”; txtResultsReading.Font=新字体(txtResultsReading.Font,FontStyle.Bold); StringBuilder th=新的StringBuilder(); 附加(“12厘米失败”); txtResultsReading.Text+=th.ToString(); } 字符串2=“”; MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse(“TL,S,+txtToolID.Text+”,31,\r\n“,“\r\n”,4,ref servoTwo,500); 字符串测试=”; MyModemSerialInterfaceLayer.WriteTextAndWaitForResponse(“TL,T,+txtToolID.Text+”\r\n“,“\r\n”,4,ref tests,500); string[]splitstrings=tests.Split(','); 字符串Ullage2=拆分字符串[2]; string SRC2=splitstrings[3]; 字符串RSSI2=拆分字符串[4]; 字符串AlarmStatus2=拆分字符串[5]; string RateofChange2=拆分字符串[6]; 字符串Tamb2=拆分字符串[7]; 字符串Vbatt2=拆分字符串[8]; Ullage2=Ullage2.替换(“u:,”); Tamb2=Tamb2。替换(“t:,”); Vbatt2=Vbatt2。替换(“v:,”); int Ull2=转换为32(Ullage2); int src2=Convert.ToInt32(src2); int BV2=转换为32(Vbatt2); int temp2=转换为32(Tamb2); StringBuilder sf=新的StringBuilder(); 补充(Ull2); txtUllage2.Text+=sf.ToString(); StringBuilder sg=新的StringBuilder(); sg.Append(src2); txtSRC2.Text+=sg.ToString(); StringBuilder sh=新的StringBuilder(); sh.Append(BV2); txtVbatt2.Text+=sh.ToString(); StringBuilder si=新的StringBuilder(); si.Append(temp2); txtTamb2.Text+=si.ToString(); txtDateTested.Text=DateTime.Now.ToString(); txtTestPC.Text=System.Environment.UserName; //boSettingsProfiles.Text=Settings.Settings文件; txtdelected.Text=“当前”; 如果((Ull<11)| |(Ull>13)| |(src<9)| |(BV<29)) { txtPassFail.Text+=“3M失败”; txtResultsReading.Font=新字体(txtResultsReading.Font,FontStyle.Bold); StringBuilder tg=新的StringBuilder(); tg.Append(Environment.NewLine); tg.追加(“3M失败”); txtResultsReading.Text+=tg.ToString(); } 如果((Ull>=11)和&(Ull=29),则为else&& (Ull2>=11)和&(Ull2=29)) { txtPassFail.Text+=“通过”; txtResultsReading.Font=新字体(txtResultsReading.Font,FontStyle.Bold); txtResultsReading.Text+=“通过”; } ReleaseDevice();//配置完成后释放配置工具 } }
检查WriteText和WaitForResponse调用中的变量。它可能没有3个逗号。

您的
splitstrings
对象中没有三个对象,因此您无法访问索引2处的对象。因此,在访问之前,您应该实现一个检查,以确保它在该索引处包含一个对象,然后根据需要处理它不包含的情况


顺便说一句,下次当你问一个为什么有些东西不起作用的问题时,你最好告诉我们你遇到的异常情况,而不是让我们去问。您需要包含引发异常的代码。请参阅。

是否有错误?或者它是否第二次到达您的代码?索引超出了数组的界限就是错误。但是,当我第一次单击按钮时,它可以正常工作。错误发生在哪一行?请提供完整的错误消息,并指出错误所在的行,以便进一步帮助您。连接创建也应在
块中使用
进行。string Ullage=splitstring[2];清除错误