Amal anjula Ответов: 1

Консольное приложение C++ с базой данных SQL


есть ли какой-либо метод подключения данных консольного приложения c++ к базе данных sql? у меня есть программа обработки изображений с использованием c++ и opencv. теперь я хочу сохранить несколько фотографий в локальной базе данных sql. как это сделать.

Что я уже пробовал:

я попробовал на c#. это работает. мне нужен такой пример

using System;
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;
using System.IO;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Diagnostics;


namespace face_detetc_admin
{
    public partial class c_pass : Form
    {
        private SqlConnection DBConn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\aInven\Face_detect\database\db.mdf;Integrated Security=True");

        String data;

        public c_pass()
        {
            InitializeComponent();
        }

        private void updtbtn_Click(object sender, EventArgs e)
        {

            if (idtxtbx.Text.Length <= 0)
            {
                MessageBox.Show("User Id not found", "Error...");
            }
            else if (nwbx.Text != cnfmbx.Text)
            {
                MessageBox.Show("New password and old password not matched!", "Error...");
            }
            else if (nwbx.Text.Length <= 0 || cnfmbx.Text.Length <= 0)
            {
                MessageBox.Show("Some field are missing!", "Error...");
            }
            else
            {

                if ((MessageBox.Show("are you sure ?", "Confirmation...", MessageBoxButtons.YesNo) == DialogResult.Yes))
                {


                    try
                    {
                        var command = DBConn.CreateCommand();

                        DBConn.Open();
                        string strSQL = string.Format("Select * From Log where uname = '{0}'", idtxtbx.Text);
                        SqlCommand myCommand = new SqlCommand(strSQL, DBConn);

                        {
                            myCommand.Parameters.AddWithValue("uname", idtxtbx.Text);
                            using (SqlDataReader reader = myCommand.ExecuteReader())
                            {
                                while (reader.Read())
                                {

                                    data = reader["pword"].ToString();
                                }


                            }
                        }

                        if (oldbx.Text == data)
                        {

                            // MessageBox.Show("ddddd");5
                            // using (SqlCommand cmd = new SqlCommand("UPDATE Log  SET  pword = " + nwbx.Text + " where uname  = uname", DBConn))
                            using (SqlCommand cmd = new SqlCommand("UPDATE Log  SET pword = @pword  where uname  = @uname", DBConn))
                            {
                                cmd.Parameters.AddWithValue("@pword", nwbx.Text);


                                cmd.Parameters.AddWithValue("@uname", idtxtbx.Text);
                                cmd.ExecuteNonQuery();
                                MessageBox.Show("Password changed!!!", "Updated");
                                this.Hide();


                            }
                        }
                        else
                        {
                            MessageBox.Show("Not found. Try again!!!", "Error.....");
                        }

                        DBConn.Close();


                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show("failed" + ex.Message);

                    }
                }
            }
        }

        private void button1_Click(object sender, System.EventArgs e)
        {

            idtxtbx.Clear();
            oldbx.Clear();
            nwbx.Clear();
            cnfmbx.Clear();
        }

        private void button3_Click(object sender, System.EventArgs e)
        {
            if (utxtbx.Text.Length > 0 && ptxtbx.Text.Length > 0 && ptxtbx.Text == ctxtbx.Text)
            {
                if ((MessageBox.Show("are you sure add this informations?", "Confirmation...", MessageBoxButtons.YesNo) == DialogResult.Yes))
                {
                    try
                    {
                        SqlCommand MyCommand = new SqlCommand("INSERT INTO Log" + " VALUES('" + utxtbx.Text + "','" + ptxtbx.Text + "')", DBConn);

                        DBConn.Open();
                        MyCommand.ExecuteNonQuery();
                        DBConn.Close();
                        MessageBox.Show("Updated!!!");
                        utxtbx.Clear();
                        ptxtbx.Clear();
                        this.Dispose();



                    }
                    catch (SqlException ex)
                    {
                        MessageBox.Show("failed" + ex.Message);
                        DBConn.Close();
                    }

                }
            }
            else
            {
                MessageBox.Show("Error Input data", "Error...");

            }


        }

        private void button2_Click(object sender, System.EventArgs e)
        {
            utxtbx.Clear();
            ptxtbx.Clear();
            ctxtbx.Clear();
        }

        private void c_pass_Load(object sender, System.EventArgs e)
        {

        }
    }
}

[no name]

Да, в C++ вы используете ODBC. Какое отношение этот код C# имеет к вашему вопросу? И почему google не нашел эту информацию для вас?

1 Ответов

Рейтинг:
0

Wendelius

Разница в том, что вам нужно использовать, например, ODBC из C++. Взгляните на это:
- Доступ к данным в Visual C++[^]
- Microsoft Aligning with ODBC | SQL Server Blog[^]
- Выделите дескрипторы и подключитесь к SQL Server (ODBC)[^]